refactored to builder pattern
convenience method
notnull
diagnostics
javadoc, cleanup