updated with finished additional methods and javadoc.