diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
index ece4323..886115b 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
@@ -1619,17 +1619,12 @@
     }
 
     private void hostUpdated(Host host, List<DhcpServerInfo> srverInfoList) {
-        DhcpServerInfo serverInfo;
-        Ip4Address targetIp;
-        if (!srverInfoList.isEmpty()) {
-            serverInfo = srverInfoList.get(0);
-            targetIp = serverInfo.getDhcpGatewayIp4().orElse(null);
+        srverInfoList.stream().forEach(serverInfo -> {
+            Ip4Address targetIp = serverInfo.getDhcpGatewayIp4().orElse(null);
             Ip4Address serverIp = serverInfo.getDhcpServerIp4().orElse(null);
-
             if (targetIp == null) {
                 targetIp = serverIp;
             }
-
             if (targetIp != null) {
                 if (host.ipAddresses().contains(targetIp)) {
                     serverInfo.setDhcpConnectMac(host.mac());
@@ -1637,7 +1632,7 @@
                     requestDhcpPacket(serverIp);
                 }
             }
-        }
+        });
     }
 
 
@@ -1653,13 +1648,9 @@
     }
 
     private void hostRemoved(Host host, List<DhcpServerInfo> serverInfoList) {
-        DhcpServerInfo serverInfo;
-        Ip4Address targetIp;
-        if (!serverInfoList.isEmpty()) {
-            serverInfo = serverInfoList.get(0);
+        serverInfoList.stream().forEach(serverInfo -> {
+            Ip4Address targetIp = serverInfo.getDhcpGatewayIp4().orElse(null);
             Ip4Address serverIp = serverInfo.getDhcpServerIp4().orElse(null);
-            targetIp = serverInfo.getDhcpGatewayIp4().orElse(null);
-
             if (targetIp == null) {
                 targetIp = serverIp;
             }
@@ -1671,7 +1662,7 @@
                     cancelDhcpPacket(serverIp);
                 }
             }
-        }
+        });
     }
 
     private void requestDhcpPacket(Ip4Address serverIp) {
