added tests: 100%