Instance variables are casted rather than redefined

Redefining instance variables runs the risk where the parent could rename their version of the variable and the children would not be able to detect the change.  This also does not allow us to privitize the instance variable where appropriate.  Maybe an alternative can be to redefine / overwrite the getter.  Up for debate