Add basic structure and initial tests