Refactored models back into a single file because circular dependencies were killing this design.