which has everything is an object just like you are trying to do - only the Smalltalk version is actually efficient and elegant.I have taken my run at the numerics problem in the past and found that its not possible to handle type demotion in any kind of clean way.