added more documentation on what and how