finalized v5 (added javadoc)