Initial event-sourced model
work in progress - trying to figure out the storage logic