broke some functionality out into categories, fixed broken save functionality again, added 4 unit tests
pushing local changes to project.pbxproj