+ line 142, 150 and 159: Really good comments here, which explains every block of code.