Added documentation and further expanded the code base