added case classes and some method stubs