split ModelBase into its own file
refactor server models to use ModelBase; fix tests