cleanup of Optional<T> Compare code - so uses Traits (for compare)