diff --git a/libs/middlewares/dimensions.js b/libs/middlewares/dimensions.js
index 27d580361f9c39b5e20635f350600740132ed04b..c17e4a6d2e00c1e5dc47455f4959cf9f33a0ad09 100644
--- a/libs/middlewares/dimensions.js
+++ b/libs/middlewares/dimensions.js
@@ -1,39 +1,48 @@
 /**
- * Dimensions middleware
- *
- * EXAMPLE:
- * Use it with no parameters to get all the dimensions specified
- * app.get('/', dimensions(), function(req, res, next){})
- *
- * Use it with an array of accepted values
- * app.get('/', dimensions(['year', 'location']), function(req, res, next){})
- *
- * Use it globally
- * app.use(dimensions())
- */
+* Dimensions middleware
+*
+* EXAMPLE:
+* Use it with no parameters to get all the dimensions specified
+* app.get('/', dimensions(), function(req, res, next){})
+*
+* Use it with an array of accepted values
+* app.get('/', dimensions(['year', 'location']), function(req, res, next){})
+*
+* Use it globally
+* app.use(dimensions())
+*/
 
 function intersect(a, b) {
     var t
     if (b.length > a.length) t = b, b = a, a = t
     return a.filter(function (e) {
-      if (b.indexOf(e) !== -1) return true
+        if (b.indexOf(e) !== -1) return true
     })
 }
 
 function dimensions(dims) {
-  return function(req, res, next) {
-    if(req.query.dims) {
-      params = req.query.dims.split(",")
-      // If the dims array exists and is not empty
-      if(typeof dims !== 'undefined' && dims.length > 0) {
-        req.dims = intersect(dims, params)
-      } else {
-        req.dims = params
-      }
+    return function(req, res, next) {
+        req.dims = {}
+        if(req.query.dims) {
+            var params = req.query.dims.split(",")
+            var dimObj = {}
+            for(var i=0; i<params.length; ++i) {
+                var kv = params[i].split(":")
+                dimObj[kv[0]] = (typeof kv[1] === 'undefined') ? null : kv[1]
+            }
+            // If the dims array exists and is not empty
+            if(typeof dims !== 'undefined' && dims.length > 0) {
+                var intersection = intersect(dims, Object.keys(dimObj))
+                for(var i=0; i<intersection.length; ++i) {
+                    req.dims[intersection[i]] = dimObj[intersection[i]]
+                }
+            } else {
+                req.dims = dimObj
+            }
+        }
+        console.log(req.dims)
+        next()
     }
-    console.log(req.dims)
-    next()
-  }
 }
 
 module.exports = dimensions