Implement APIs and process for managing site data

See #3, #4 
What is the purpose of the self.save() here?