everything is now commented and documented