added full tests, documentation