#1 I just added commentaries to explain methods
 #6 Still in process