diff --git a/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
index 1479b9d..1746169 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationNameCompleter.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.cli.app;
 
-import com.google.common.collect.Sets;
 import org.apache.karaf.shell.console.completer.ArgumentCompleter;
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.app.ApplicationService;
@@ -23,11 +22,8 @@
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.core.Application;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 import java.util.SortedSet;
 
 import static org.onosproject.app.ApplicationState.ACTIVE;
@@ -48,13 +44,14 @@
         String cmd = list.getArguments()[1];
 
         // Grab apps already on the command (to prevent tab-completed duplicates)
-        final Set previousApps;
-        if (list.getArguments().length > 2) {
-            previousApps = Sets.newHashSet(
-                    Arrays.copyOfRange(list.getArguments(), 2, list.getArguments().length));
-        } else {
-            previousApps = Collections.emptySet();
-        }
+        // FIXME: This does not work.
+//        final Set previousApps;
+//        if (list.getArguments().length > 2) {
+//            previousApps = Sets.newHashSet(
+//                    Arrays.copyOfRange(list.getArguments(), 2, list.getArguments().length));
+//        } else {
+//            previousApps = Collections.emptySet();
+//        }
 
         // Fetch our service and feed it's offerings to the string completer
         ApplicationService service = get(ApplicationService.class);
@@ -63,9 +60,9 @@
         while (it.hasNext()) {
             Application app = it.next();
             ApplicationState state = service.getState(app.id());
-            if (previousApps.contains(app.id().name())) {
-                continue;
-            }
+//            if (previousApps.contains(app.id().name())) {
+//                continue;
+//            }
             if (cmd.equals("uninstall") ||
                     (cmd.equals("activate") && state == INSTALLED) ||
                     (cmd.equals("deactivate") && state == ACTIVE)) {
