Completely commented and ready for hand in...WOOHOO