diff --git a/apps/olt/app/src/main/java/org/onosproject/olt/impl/Olt.java b/apps/olt/app/src/main/java/org/onosproject/olt/impl/Olt.java
index 16e8a9e..bfc05c8 100644
--- a/apps/olt/app/src/main/java/org/onosproject/olt/impl/Olt.java
+++ b/apps/olt/app/src/main/java/org/onosproject/olt/impl/Olt.java
@@ -256,7 +256,7 @@
         CompletableFuture<ObjectiveError> upFuture = new CompletableFuture();
 
         TrafficSelector upstream = DefaultTrafficSelector.builder()
-                .matchVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN)
+                .matchVlanId(defaultVlan.orElse(DEFAULT_VLAN))
                 .matchInPort(subscriberPort)
                 .build();
 
@@ -276,7 +276,7 @@
 
         TrafficTreatment downstreamTreatment = DefaultTrafficTreatment.builder()
                 .popVlan()
-                .setVlanId((defaultVlan.isPresent()) ? defaultVlan.get() : DEFAULT_VLAN)
+                .setVlanId(defaultVlan.orElse(DEFAULT_VLAN))
                 .setOutput(subscriberPort)
                 .build();
 
diff --git a/apps/pim/src/main/java/org/onosproject/pim/impl/PIMInterfaceManager.java b/apps/pim/src/main/java/org/onosproject/pim/impl/PIMInterfaceManager.java
index 248a233..9f56f10 100644
--- a/apps/pim/src/main/java/org/onosproject/pim/impl/PIMInterfaceManager.java
+++ b/apps/pim/src/main/java/org/onosproject/pim/impl/PIMInterfaceManager.java
@@ -193,21 +193,11 @@
                 .withPacketService(packetService)
                 .withInterface(intf);
 
-        if (config.getHelloInterval().isPresent()) {
-            builder.withHelloInterval(config.getHelloInterval().get());
-        }
-        if (config.getHoldTime().isPresent()) {
-            builder.withHoldTime(config.getHoldTime().get());
-        }
-        if (config.getPriority().isPresent()) {
-            builder.withPriority(config.getPriority().get());
-        }
-        if (config.getPropagationDelay().isPresent()) {
-            builder.withPropagationDelay(config.getPropagationDelay().get());
-        }
-        if (config.getOverrideInterval().isPresent()) {
-            builder.withOverrideInterval(config.getOverrideInterval().get());
-        }
+        config.getHelloInterval().ifPresent(builder::withHelloInterval);
+        config.getHoldTime().ifPresent(builder::withHoldTime);
+        config.getPriority().ifPresent(builder::withPriority);
+        config.getPropagationDelay().ifPresent(builder::withPropagationDelay);
+        config.getOverrideInterval().ifPresent(builder::withOverrideInterval);
 
         return builder.build();
     }
diff --git a/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java b/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
index 209b0fb..dc1cc81 100644
--- a/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
+++ b/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
@@ -85,7 +85,7 @@
      */
     public BgpSpeakerConfig getSpeakerWithName(String name) {
         for (BgpConfig.BgpSpeakerConfig speaker : bgpSpeakers()) {
-            if (speaker.name().isPresent() && speaker.name().get().equals(name)) {
+            if (speaker.name().filter(name::equals).isPresent()) {
                 return speaker;
             }
         }
