use guava Optional and Objects.toStringHelper to improve code