           # If object is a hash- or array-like object we look for the
           # presence of the key and if its available we return it
           if isArrayAccess or isObjectAccess
-            unfuture @lookupAndEvaluate(object, part), (err, result) ->
-              object = liquify(result)
+            unfuture @lookupAndEvaluate(object, part), (err, result) =>
+              object = @liquify(result)
               next()
 
           else

          lastScope[key] = @lookupAndEvaluate(env, key)
          true

  liquify = (object) ->
    return object unless object?

    if object.toLiquid instanceof Function
      object.toLiquid()
    else
      # TODO: implement toLiquid for native types
      object
    delivered = false
    result = null

    Liquid.Helpers.unfuture variable, (err, variable) =>
      result = @liquify(variable)
      f.deliver(err, result)
      delivered = true

