base implementation on java 8 - so as, for example not to end up with 3 Optional classes (java.util, net.hamnaberg.funclite, com.google.common.base)