Refactor further after continued subclassing
Merge pull request #13 from areese/fix_subclassing

Refactor further after continued subclassing