added uml and javadoc