diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
index 24fd49f..90a8a9b 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/impl/MeterModBuilder.java
@@ -22,6 +22,7 @@
 import org.projectfloodlight.openflow.protocol.OFMeterFlags;
 import org.projectfloodlight.openflow.protocol.OFMeterMod;
 import org.projectfloodlight.openflow.protocol.OFMeterModCommand;
+import org.projectfloodlight.openflow.protocol.OFVersion;
 import org.projectfloodlight.openflow.protocol.meterband.OFMeterBand;
 import org.projectfloodlight.openflow.protocol.meterband.OFMeterBandDrop;
 import org.projectfloodlight.openflow.protocol.meterband.OFMeterBandDscpRemark;
@@ -118,8 +119,13 @@
             default:
                 log.warn("Unknown unit type {}", unit);
         }
-        //FIXME: THIS WILL CHANGE IN OF1.4 to setBands.
-        builder.setMeters(buildBands());
+
+        if (factory.getVersion().getWireVersion() >= OFVersion.OF_14.getWireVersion()) {
+            builder.setBands(buildBands());
+        } else {
+            builder.setMeters(buildBands());
+        }
+
         builder.setFlags(flags)
                 .setMeterId(id)
                 .setXid(xid);
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
index abfa4aa..35f9dde 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
@@ -21,7 +21,9 @@
 import org.onosproject.net.meter.DefaultMeterFeatures;
 import org.onosproject.net.meter.Meter;
 import org.onosproject.net.meter.MeterFeatures;
+import org.onosproject.net.meter.MeterFeaturesFlag;
 import org.projectfloodlight.openflow.protocol.OFMeterFeatures;
+import org.projectfloodlight.openflow.protocol.OFVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -32,9 +34,15 @@
 import static org.onosproject.net.meter.Band.Type.REMARK;
 import static org.onosproject.net.meter.Meter.Unit.KB_PER_SEC;
 import static org.onosproject.net.meter.Meter.Unit.PKTS_PER_SEC;
+import static org.onosproject.net.meter.MeterFeaturesFlag.ACTION_SET;
+import static org.onosproject.net.meter.MeterFeaturesFlag.ANY_POSITION;
+import static org.onosproject.net.meter.MeterFeaturesFlag.MULTI_LIST;
 import static org.projectfloodlight.openflow.protocol.ver13.OFMeterBandTypeSerializerVer13.DROP_VAL;
 import static org.projectfloodlight.openflow.protocol.ver13.OFMeterBandTypeSerializerVer13.DSCP_REMARK_VAL;
 import static org.projectfloodlight.openflow.protocol.ver13.OFMeterFlagsSerializerVer13.*;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.ACTION_SET_VAL;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.ANY_POSITION_VAL;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.MULTI_LIST_VAL;
 
 /**
  * OpenFlow builder of MeterFeatures.
@@ -98,6 +106,24 @@
          * Stats are supported ?
          */
         builder.hasStats((STATS_VAL & ofMeterFeatures.getCapabilities()) != 0);
+
+        /*
+         * Along with the OF1.5, we extract meter features flags
+         */
+        if (ofMeterFeatures.getVersion().wireVersion >= OFVersion.OF_15.wireVersion) {
+            Set<MeterFeaturesFlag> meterFeaturesFlags = Sets.newHashSet();
+            if ((ACTION_SET_VAL & ofMeterFeatures.getFeatures()) != 0) {
+                meterFeaturesFlags.add(ACTION_SET);
+            }
+            if ((ANY_POSITION_VAL & ofMeterFeatures.getFeatures()) != 0) {
+                meterFeaturesFlags.add(ANY_POSITION);
+            }
+            if ((MULTI_LIST_VAL & ofMeterFeatures.getFeatures()) != 0) {
+                meterFeaturesFlags.add(MULTI_LIST);
+            }
+            builder.withFeatures(meterFeaturesFlags);
+        }
+
         return builder.build();
     }
 
