huge model edits. more polymorphism use and database can now create objects. table is broken though