First draft of design of classes and models

cc: @jonfen