added some tests and use case classes