diff --git a/lib/runner/extensions/waterfall.command.js b/lib/runner/extensions/waterfall.command.js
index <HASH>..<HASH> 100644
--- a/lib/runner/extensions/waterfall.command.js
+++ b/lib/runner/extensions/waterfall.command.js
@@ -51,15 +51,11 @@ module.exports = {
     init: function (done) {
         var state = this.state;
 
-        // in case the environment or global is sent as an array, assume it is the values object from our environment
-        // format
-        _.isArray(state.environment) &&
-            (state.environment = _(state.environment).indexBy('key').mapValues('value').value());
-        _.isArray(state.globals) && (state.globals = _(state.globals).indexBy('key').mapValues('value').value());
-
-        // sanitise state object
-        state.environment = new VariableScope(state.environment);
-        state.globals = new VariableScope(state.globals);
+        // ensure that the environment and globals are in VariableScope instance format
+        state.environment = VariableScope.isVariableScope(state.environment) ? state.environment :
+            new VariableScope(state.environment);
+        state.globals = VariableScope.isVariableScope(state.globals) ? state.globals :
+            new VariableScope(state.globals);
 
         // ensure that the items and iteration data set is in place
         !_.isArray(state.items) && (state.items = []);
Removed environment and globals legacy format detection and delegated it to VariableScope