           power: power
         )
 
-      convertImplicitSubexp: (subexp_raw)->
-        if typeof subexp_raw == "number"
-          @expression_builder.build(expression: [@process(subexp_raw)])
-        else if subexp_raw == null
+      convertImplicitSubexp = (subexp)->
+        processed = @process(subexp)
+        if typeof subexp == "number"
+          @expression_builder.build(expression: [processed])
+        else if subexp == null || subexp == false
           @expression_builder.build(expression: [])
+        else if subexp instanceof Array
+          processed
         else
-          @process(subexp_raw)
+          @expression_builder.build(expression: [processed])
 
-
+      convertImplicitSubexp: logger().instrument(name: "convertImplicitSubexp", fn: convertImplicitSubexp)
 
     class_mixer BuildExpressionFromJavascriptObject
 
     BuildExpressionFromJavascriptObject.buildExpression = ->
       builder = BuildExpressionFromJavascriptObject.build()
       arguments_as_array = Array.prototype.slice.call(arguments, 0)
-      builder.process(arguments_as_array)
+      converted_part = builder.process(arguments_as_array)
+      logger().info("returned converted from process in buildExpression", converted_part.toString(), arguments_as_array)
+      converted_part
 
     return BuildExpressionFromJavascriptObject
+

      convertSubExpression: (parts) ->
        exp = @expression_builder.build()
        for x in parts
          exp = exp.append(@process(x))
        exp

      convertObject: (object)->

                  @numberFromString(obj)
                else throw "STRING NOT IMPLEMENTED"
            when "object" then @convertObject(object_to_convert)
      process: logger().instrument(name: "Process", fn: proc_method)


      matchesNumberRegexp: (str)->
        str.search(/\d+/) != -1
