more tests, more documentation