diff --git a/apps/mobility/src/main/java/org/onosproject/mobility/HostMobility.java b/apps/mobility/src/main/java/org/onosproject/mobility/HostMobility.java
index 652233b..6f05750 100644
--- a/apps/mobility/src/main/java/org/onosproject/mobility/HostMobility.java
+++ b/apps/mobility/src/main/java/org/onosproject/mobility/HostMobility.java
@@ -14,10 +14,13 @@
  * limitations under the License.
  */
 package org.onosproject.mobility;
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
+import static org.onlab.util.Tools.groupedThreads;
 import static org.slf4j.LoggerFactory.getLogger;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -64,22 +67,26 @@
     protected CoreService coreService;
 
     private ApplicationId appId;
+    private ExecutorService eventHandler;
 
     @Activate
     public void activate() {
         appId = coreService.registerApplication("org.onosproject.mobility");
+        eventHandler = newSingleThreadScheduledExecutor(groupedThreads("onos/app-mobility", "event-handler"));
         hostService.addListener(new InternalHostListener());
         log.info("Started with Application ID {}", appId.id());
     }
 
     @Deactivate
     public void deactivate() {
+        // TODO we never actually add any flow rules
         flowRuleService.removeFlowRulesById(appId);
+        eventHandler.shutdown();
         log.info("Stopped");
     }
 
     public class InternalHostListener
-    implements HostListener {
+        implements HostListener {
 
         @Override
         public void event(HostEvent event) {
@@ -91,14 +98,12 @@
                     break;
                 case HOST_MOVED:
                     log.info("Host {} has moved; cleaning up.", event.subject());
-                    cleanup(event.subject());
+                    eventHandler.execute(() -> cleanup(event.subject()));
                     break;
 
                 default:
                     break;
-
             }
-
         }
 
         /**
@@ -129,12 +134,9 @@
                     }
                 }
             }
-
             return flowRules;
         }
-
     }
-
 }
 
 
