Added more documentation and class diagrams