diff --git a/src/main/java/org/onosproject/segmentrouting/HostHandler.java b/src/main/java/org/onosproject/segmentrouting/HostHandler.java
index d5c93fd..c82b675 100644
--- a/src/main/java/org/onosproject/segmentrouting/HostHandler.java
+++ b/src/main/java/org/onosproject/segmentrouting/HostHandler.java
@@ -71,15 +71,15 @@
             if (!deviceId.equals(devId)) {
                 return;
             }
-            processHostAddedEventInternal(host);
+            processHostAdded(host);
         });
     }
 
     protected void processHostAddedEvent(HostEvent event) {
-        processHostAddedEventInternal(event.subject());
+        processHostAdded(event.subject());
     }
 
-    private void processHostAddedEventInternal(Host host) {
+    protected void processHostAdded(Host host) {
         MacAddress mac = host.mac();
         VlanId vlanId = host.vlan();
         HostLocation location = host.location();
@@ -116,15 +116,19 @@
     }
 
     protected void processHostRemoveEvent(HostEvent event) {
-        MacAddress mac = event.subject().mac();
-        VlanId vlanId = event.subject().vlan();
-        HostLocation location = event.subject().location();
+        processHostRemoved(event.subject());
+    }
+
+    protected void processHostRemoved(Host host) {
+        MacAddress mac = host.mac();
+        VlanId vlanId = host.vlan();
+        HostLocation location = host.location();
         DeviceId deviceId = location.deviceId();
         PortNumber port = location.port();
-        Set<IpAddress> ips = event.subject().ipAddresses();
+        Set<IpAddress> ips = host.ipAddresses();
         log.debug("Host {}/{} is removed from {}:{}", mac, vlanId, deviceId, port);
 
-        if (accepted(event.subject())) {
+        if (accepted(host)) {
             // Revoke bridging table entry
             ForwardingObjective.Builder fob =
                     hostFwdObjBuilder(deviceId, mac, vlanId, port);
@@ -133,9 +137,9 @@
                 return;
             }
             ObjectiveContext context = new DefaultObjectiveContext(
-                    (objective) -> log.debug("Host rule for {} revoked", event.subject()),
+                    (objective) -> log.debug("Host rule for {} revoked", host),
                     (objective, error) ->
-                            log.warn("Failed to revoke host rule for {}: {}", event.subject(), error));
+                            log.warn("Failed to revoke host rule for {}: {}", host, error));
             flowObjectiveService.forward(deviceId, fob.remove(context));
 
             // Revoke IP table entry
