implemented missing functionality, added tests, removed unnecessary dependencies