Redid a bunch of stuff, refactored the classes