add some documentation, clean up a little bit