Initial attempt with full comments

Initial attempt at solution with full comments to aide my understanding.