added tests and use cases