Fully functional implementation. Objects are stored as JSON.