First try, only using inheriting prototypes
Changed some things to more match methods of other branches.