more documentation and style