refactored a bunch of the model stuff and hopefully made the testing better