Final commit according to the project's specifications

Last commit before sending the code to the teacher. This code (I believe) covers all the project's specification

Added code commentaries