New DSL

remaining:
 - delete case classes
 - reversibility
 - better class structure (as discussed)
Delete case class (old) DSL