add javadoc
add whenNonNull