1) Added documenation 2) Fixed Typos and refactoring.