Add TOS model and clean up

TODO: TOS model still needs a pre_save signal to create diff