Merge pull request #12 from areese/fix_subclassing

Refactor a little after rebasing the subclassed server onto this version
Refactor further after continued subclassing