All comments and documentation added