final version (with Javadoc)