most likely feature complete for first version. now add tests
added some documentation
minor