Cleaned and updated code. Inheritence plays a greater role and now only required variables have accessors. Variables by default are private and accessors are defaulted to protected