add classes and initial tests