1. add comments
2. round 1 implementation