diff --git a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
index b447732..068582c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.store.group.impl;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 
@@ -78,6 +77,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
@@ -628,7 +628,7 @@
                     group.deviceId());
             synchronized (existing) {
                 for (GroupBucket bucket:group.buckets().buckets()) {
-                    java.util.Optional<GroupBucket> matchingBucket =
+                    Optional<GroupBucket> matchingBucket =
                             existing.buckets().buckets()
                             .stream()
                             .filter((existingBucket)->(existingBucket.equals(bucket)))
diff --git a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleGroupStore.java b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleGroupStore.java
index 7c4f8c31..f25a707 100644
--- a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleGroupStore.java
+++ b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleGroupStore.java
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -418,7 +419,7 @@
         if (existing != null) {
             synchronized (existing) {
                 for (GroupBucket bucket:group.buckets().buckets()) {
-                    java.util.Optional<GroupBucket> matchingBucket =
+                    Optional<GroupBucket> matchingBucket =
                             existing.buckets().buckets()
                             .stream()
                             .filter((existingBucket)->(existingBucket.equals(bucket)))
diff --git a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleGroupStoreTest.java b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleGroupStoreTest.java
index 904b531..9223996 100644
--- a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleGroupStoreTest.java
+++ b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleGroupStoreTest.java
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 
 import org.junit.After;
 import org.junit.Before;
@@ -112,7 +113,7 @@
                              createdBuckets.buckets().
                              containsAll(event.subject().buckets().buckets()));
                 for (GroupBucket bucket:event.subject().buckets().buckets()) {
-                    java.util.Optional<GroupBucket> matched = createdBuckets.buckets()
+                    Optional<GroupBucket> matched = createdBuckets.buckets()
                             .stream()
                             .filter((expected) -> expected.equals(bucket))
                             .findFirst();
