added tests, documentation