more documentation
more comments in the code