Added major concepts to review
Simplified the code a bit so it's easier to read