diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
index a0c1dfc..4e75301 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/meter/impl/MeterManager.java
@@ -52,7 +52,7 @@
 /**
  * Provides implementation of the meter service APIs.
  */
-@Component(immediate = true)
+@Component(immediate = true, enabled = true)
 @Service
 public class MeterManager extends AbstractListenerProviderRegistry<MeterEvent, MeterListener,
         MeterProvider, MeterProviderService>
@@ -66,7 +66,7 @@
     protected StorageService storageService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    MeterStore store;
+    protected MeterStore store;
 
     private AtomicCounter meterIdCounter;
 
@@ -78,6 +78,8 @@
                 .withName(meterIdentifier)
                 .build();
 
+        store.setDelegate(delegate);
+
         onComplete = (op, result, error) ->
             {
                 op.context().ifPresent(c -> {
@@ -98,6 +100,7 @@
 
     @Deactivate
     public void deactivate() {
+        store.unsetDelegate(delegate);
         log.info("Stopped");
     }
 
@@ -136,6 +139,11 @@
     }
 
     @Override
+    public Collection<Meter> getAllMeters() {
+        return store.getAllMeters();
+    }
+
+    @Override
     public MeterId allocateMeterId() {
         // FIXME: This will break one day.
         return MeterId.meterId((int) meterIdCounter.getAndIncrement());
