diff --git a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
index 2d12633..3c15e08 100644
--- a/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
+++ b/core/security/impl/src/main/java/org/onosproject/security/impl/PolicyBuilder.java
@@ -3,7 +3,6 @@
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
-import org.apache.commons.collections.FastHashMap;
 import org.onosproject.core.Permission;
 import org.onosproject.security.AppPermission;
 import org.osgi.service.permissionadmin.PermissionInfo;
@@ -47,8 +46,9 @@
 
 
 import java.util.Collections;
-import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 public final class PolicyBuilder {
@@ -56,7 +56,7 @@
     private PolicyBuilder(){
     }
 
-    public static PermissionInfo[] getApplicationPermissions(HashMap<Permission, Set<String>> serviceDirectory,
+    public static PermissionInfo[] getApplicationPermissions(Map<Permission, Set<String>> serviceDirectory,
                                                              Set<Permission> permissions) {
         Set<PermissionInfo> permSet = Sets.newHashSet();
         Collections.addAll(permSet, getDefaultPerms());
@@ -69,7 +69,7 @@
         return permSet.toArray(permissionInfos);
     }
 
-    public static PermissionInfo[] getAdminApplicationPermissions(HashMap<Permission, Set<String>> serviceDirectory) {
+    public static PermissionInfo[] getAdminApplicationPermissions(Map<Permission, Set<String>> serviceDirectory) {
         Set<PermissionInfo> permSet = Sets.newHashSet();
         Collections.addAll(permSet, getDefaultPerms());
         Collections.addAll(permSet, getAdminDefaultPerms());
@@ -166,9 +166,9 @@
     }
 
 
-    public static HashMap<Permission, Set<String>> getServiceDirectory() {
+    public static Map<Permission, Set<String>> getServiceDirectory() {
 
-        HashMap<Permission, Set<String>> serviceDirectory = new FastHashMap();
+        Map<Permission, Set<String>> serviceDirectory = new ConcurrentHashMap<>();
 
         serviceDirectory.put(Permission.APP_READ, ImmutableSet.of(
                 ApplicationService.class.getName(), CoreService.class.getName()));
@@ -313,4 +313,4 @@
 //                new PermissionInfo(ServicePermission.class.getName(),
 //                        StorageService.class.getName(), ServicePermission.GET),
 //        };
-//    }
\ No newline at end of file
+//    }
diff --git a/core/security/impl/src/main/java/org/onosproject/security/impl/SecurityModeManager.java b/core/security/impl/src/main/java/org/onosproject/security/impl/SecurityModeManager.java
index 792ea79..021ff00 100644
--- a/core/security/impl/src/main/java/org/onosproject/security/impl/SecurityModeManager.java
+++ b/core/security/impl/src/main/java/org/onosproject/security/impl/SecurityModeManager.java
@@ -1,6 +1,5 @@
 package org.onosproject.security.impl;
 
-import org.apache.commons.collections.FastHashMap;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
@@ -33,9 +32,10 @@
 import java.security.AccessControlException;
 import java.security.AllPermission;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import org.osgi.service.permissionadmin.PermissionAdmin;
@@ -75,9 +75,9 @@
 
     private PermissionAdmin permissionAdmin = null;
 
-    private HashMap<String, ApplicationId> appTracker = null;
+    private Map<String, ApplicationId> appTracker = null;
 
-    private HashMap<Permission, Set<String>> serviceDirectory = null;
+    private Map<Permission, Set<String>> serviceDirectory = null;
 
 
     @Activate
@@ -93,7 +93,7 @@
         bundleContext.addBundleListener(securityBundleListener);
         appAdminService.addListener(securityApplicationListener);
         logReaderService.addLogListener(securityLogListener);
-        appTracker = new FastHashMap();
+        appTracker = new ConcurrentHashMap<>();
 
         permissionAdmin = getPermissionAdmin(bundleContext);
         if (permissionAdmin == null) {
