more documentation and testing