diff --git a/apps/acl/src/main/java/org/onosproject/acl/AclRule.java b/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
index ff01aa4..02b7025 100644
--- a/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
+++ b/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
@@ -44,6 +44,7 @@
     private final Action action;
 
     protected static IdGenerator idGenerator;
+    private static final Object ID_GENERATOR_LOCK = new Object();
 
     /**
      * Enum type for ACL rule's action.
@@ -75,8 +76,10 @@
      */
     private AclRule(Ip4Prefix srcIp, Ip4Prefix dstIp, byte ipProto,
                     short dstTpPort, Action action) {
-        checkState(idGenerator != null, "Id generator is not bound.");
-        this.id = RuleId.valueOf(idGenerator.getNewId());
+        synchronized (ID_GENERATOR_LOCK) {
+            checkState(idGenerator != null, "Id generator is not bound.");
+            this.id = RuleId.valueOf(idGenerator.getNewId());
+        }
         this.srcIp = srcIp;
         this.dstIp = dstIp;
         this.ipProto = ipProto;
@@ -225,8 +228,10 @@
      * @param newIdGenerator id generator
      */
     public static void bindIdGenerator(IdGenerator newIdGenerator) {
-        checkState(idGenerator == null, "Id generator is already bound.");
-        idGenerator = checkNotNull(newIdGenerator);
+        synchronized (ID_GENERATOR_LOCK) {
+            checkState(idGenerator == null, "Id generator is already bound.");
+            idGenerator = checkNotNull(newIdGenerator);
+        }
     }
 
     public RuleId id() {
diff --git a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
index e5ed60e..b515259 100644
--- a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
+++ b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
@@ -26,8 +26,6 @@
          description = "Manages the SimpleFabric application")
 public class SimpleFabricCommand extends AbstractShellCommand {
 
-    protected static SimpleFabricService simpleFabric;
-
     @Argument(index = 0, name = "command",
               description = "Command: show|intents|reactive-intents|refresh|flush",
               required = true, multiValued = false)
@@ -35,9 +33,9 @@
 
     @Override
     protected void execute() {
-        if (simpleFabric == null) {
-            simpleFabric = get(SimpleFabricService.class);
-        }
+
+        SimpleFabricService simpleFabric = get(SimpleFabricService.class);
+
         if (command == null) {
             print("command not found", command);
             return;
diff --git a/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java b/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
index 468d7d6..d3ffb33 100644
--- a/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
+++ b/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
@@ -30,7 +30,7 @@
  */
 public class VplsNameCompleter extends AbstractChoicesCompleter {
 
-    protected static Vpls vpls;
+    protected Vpls vpls;
 
     @Override
     public List<String> choices() {
