Added documentation to all classes and public functions