added documentation to all the method