updated with completed javadocs