1. Use sqlite3 to store: world data (map, users & objects) and state. 2. Have a minimal persistence memory to sqlite3 time. 3. Have a highly coupled memory data model to sqlite3 (persist at struct member/variable at database field type) 3. Because (2 & 3) we expect the programmer to have some SQL knowledge. 4. Minimal set of objects to be persisted: Room, Thing, Exits, Tags (a kind of trait that can be attached to anything), Player, Non Player. 5. Define a set of functions per object (4) to persist/update/retrieve from/to the database. 6. Create a versioning system of database schema so it can be upgraded without user action.