       else if _.isString(value)
         @[attrname].field = value
       else if _.isObject(value)
+        value = @_fix_singleton_array_value(value)
         @[attrname] = _.extend(@[attrname], value)
       else
         logger.warn("number property '#{attrname}' given invalid value: #{value}")

      else if _.isArray(value)
        @[attrname].value = value
      else if _.isObject(value)
        @[attrname] = _.extend(@[attrname], value)
      else
        logger.warn("array property '#{attrname}' given invalid value: #{value}")

        else
          @[attrname].field = value
      else if _.isObject(value)
        value = @_fix_singleton_array_value(value)
        @[attrname] = _.extend(@[attrname], value)
      else
        logger.warn("enum property '#{attrname}' given invalid value: #{value}")
