diff --git a/lib/ansible/runner/lookup_plugins/nested.py b/lib/ansible/runner/lookup_plugins/nested.py
index bd66a5f27cf..0fb296f7f4a 100644
--- a/lib/ansible/runner/lookup_plugins/nested.py
+++ b/lib/ansible/runner/lookup_plugins/nested.py
@@ -15,6 +15,7 @@
 # You should have received a copy of the GNU General Public License
 # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
 
+from ansible.utils import safe_eval
 
 def flatten(terms):
     ret = []
@@ -40,6 +41,10 @@ class LookupModule(object):
         pass
 
     def run(self, terms, **kwargs):
+        if '{' or '[' in terms:
+            # Jinja2-ified list needs to be converted back to a real type
+            # TODO: something a bit less heavy than eval
+            terms = safe_eval(terms)
         if not isinstance(terms, list):
             raise errors.AnsibleError("a list is required for with_nested")
         my_list = terms[:]
diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py
index 7951c916e72..5ed717601dd 100644
--- a/lib/ansible/utils/__init__.py
+++ b/lib/ansible/utils/__init__.py
@@ -154,11 +154,6 @@ def check_conditional(conditional):
     if not isinstance(conditional, basestring):
         return conditional
 
-    def is_set(var):
-        return not var.startswith("$") and not '{{' in var
-
-    def is_unset(var):
-        return var.startswith("$") or '{{' in var
 
     try:
         conditional = conditional.replace("\n", "\\n")
@@ -693,14 +688,17 @@ def safe_eval(str):
    the env is constrained)
    '''
    # FIXME: is there a more native way to do this?
+    
+   def is_set(var):
+       return not var.startswith("$") and not '{{' in var
+   def is_unset(var):
+       return var.startswith("$") or '{{' in var
 
-   # do not allow method calls
+   # do not allow method calls to modules
    if re.search(r'\w\.\w+\(', str):
-       print "C1"
        return str
    # do not allow imports
    if re.search(r'import \w+', str):
-       print "C2"
        return str
    return eval(str)