diff --git a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
index 21696e4..2e632ed 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/MeterStore.java
@@ -27,11 +27,21 @@
 public interface MeterStore extends Store<MeterEvent, MeterStoreDelegate> {
 
     /**
-     * Adds a meter to the store.
+     * Adds a meter to the store or updates a meter in the store.
      *
      * @param meter a meter
      * @return a future indicating the result of the store operation
      */
+    CompletableFuture<MeterStoreResult> addOrUpdateMeter(Meter meter);
+
+    /**
+     * Adds a meter to the store.
+     *
+     * @param meter a meter
+     * @return a future indicating the result of the store operation
+     * @deprecated in onos-2.5 replaced by {@link #addOrUpdateMeter(Meter)}
+     */
+    @Deprecated
     CompletableFuture<MeterStoreResult> storeMeter(Meter meter);
 
     /**
@@ -51,6 +61,14 @@
     MeterStoreResult storeMeterFeatures(MeterFeatures meterfeatures);
 
     /**
+     * Adds a collection of meter features to the store.
+     *
+     * @param meterfeatures the collection of meter features
+     * @return the result of the store operation
+     */
+    MeterStoreResult storeMeterFeatures(Collection<MeterFeatures> meterfeatures);
+
+    /**
      * Deletes the meter features from the store.
      *
      * @param deviceId the device id
@@ -59,11 +77,21 @@
     MeterStoreResult deleteMeterFeatures(DeviceId deviceId);
 
     /**
+     * Deletes a collection of meter features from the store.
+     *
+     * @param meterfeatures a collection of meter features
+     * @return a future indicating the result of the store operation
+     */
+    MeterStoreResult deleteMeterFeatures(Collection<MeterFeatures> meterfeatures);
+
+    /**
      * Updates a meter whose meter id is the same as the passed meter.
      *
      * @param meter a new meter
      * @return a future indicating the result of the store operation
+     * @deprecated in onos-2.5 replaced by {@link #addOrUpdateMeter(Meter)}
      */
+    @Deprecated
     CompletableFuture<MeterStoreResult> updateMeter(Meter meter);
 
     /**
