added more documentation and read