added tests and requirements