added full comments