PA3 initial commit: everything work as it suppose to be
PA3: update comments
PA3: code clean up