use guava\'s Optional \& Interface classes to allow for java 7