added private constructors and javadoc