finish implementation.  polish comments. author readme. write tests. perform tests.