diff --git a/utils/misc/src/main/java/org/onlab/util/SharedExecutors.java b/utils/misc/src/main/java/org/onlab/util/SharedExecutors.java
index 7061260..b2e921f 100644
--- a/utils/misc/src/main/java/org/onlab/util/SharedExecutors.java
+++ b/utils/misc/src/main/java/org/onlab/util/SharedExecutors.java
@@ -39,18 +39,10 @@
 
     public static final int DEFAULT_POOL_SIZE = 30;
 
-    private static SharedExecutorService singleThreadExecutor =
-            new SharedExecutorService(
-                    newSingleThreadExecutor(groupedThreads("onos/shared",
-                                                           "onos-single-executor")));
+    private static SharedExecutorService singleThreadExecutor;
+    private static SharedExecutorService poolThreadExecutor;
 
-    private static SharedExecutorService poolThreadExecutor =
-            new SharedExecutorService(
-                    newFixedThreadPool(DEFAULT_POOL_SIZE,
-                                       groupedThreads("onos/shared",
-                                                      "onos-pool-executor-%d")));
-
-    private static SharedTimer sharedTimer = new SharedTimer();
+    private static SharedTimer sharedTimer;
 
     // Ban public construction
     private SharedExecutors() {
@@ -62,6 +54,7 @@
      * @return shared single thread executor
      */
     public static ExecutorService getSingleThreadExecutor() {
+        setup();
         return singleThreadExecutor;
     }
 
@@ -71,6 +64,7 @@
      * @return shared executor pool
      */
     public static ExecutorService getPoolThreadExecutor() {
+        setup();
         return poolThreadExecutor;
     }
 
@@ -80,6 +74,7 @@
      * @return shared timer
      */
     public static Timer getTimer() {
+        setup();
         return sharedTimer;
     }
 
@@ -114,6 +109,26 @@
         sharedTimer.shutdown();
         singleThreadExecutor.backingExecutor().shutdown();
         poolThreadExecutor.backingExecutor().shutdown();
+        sharedTimer = null;
+        singleThreadExecutor = null;
+        poolThreadExecutor = null;
+    }
+
+    private static synchronized void setup() {
+        if (sharedTimer == null) {
+            sharedTimer = new SharedTimer();
+
+            singleThreadExecutor =
+                new SharedExecutorService(
+                    newSingleThreadExecutor(groupedThreads("onos/shared",
+                        "onos-single-executor")));
+
+            poolThreadExecutor =
+                new SharedExecutorService(
+                    newFixedThreadPool(DEFAULT_POOL_SIZE,
+                        groupedThreads("onos/shared",
+                            "onos-pool-executor-%d")));
+        }
     }
 
     // Timer extension which does not allow outside cancel method.
