Added some comments on the methods and protocol