                 @addSocket
                   bounds: bounds
                   depth: depth
-                  classes: rules
+                  classes: padRules(wrapRules ? rules)
                   parseContext: rules[0] #(if wrap? then wrap.type else rules[0])
 
               @addBlock
                 bounds: bounds
                 depth: depth + 1
                 color: @getColor node, rules
-                classes: rules.concat(if context? then @getDropType(context) else @getShape(node, rules))
+                classes: padRules(wrapRules ? rules).concat(if context? then @getDropType(context) else @getShape(node, rules))
                 parseContext: rules[0] #(if wrap? then wrap.type else rules[0])
 
           when 'indent'



    # If we already match types, we're fine
    for c in context.classes
      if c in node.classes
        return

    # Otherwise, wrap according to the provided rule
    for c in context.classes when c of config.PAREN_RULES
      for m in node.classes when m of config.PAREN_RULES[c]
        return config.PAREN_RULES[c][m] leading, trailing, node, context

  return TreewalkParser

          @addSocket
            bounds: node.bounds
            depth: depth
            classes: padRules(wrapRules ? rules)
            parseContext: rules[0] #(if wrap? then wrap.type else rules[0])

  TreewalkParser.drop = (block, context, pred) ->
    if context.type is 'socket'
      if '__comment__' in parseClasses(context)
        return helper.DISCOURAGE
      for c in parseClasses(context)
        if c in parseClasses(block)
          return helper.ENCOURAGE

        # Check to see if we could paren-wrap this
        if config.PAREN_RULES? and c of config.PAREN_RULES
          for m in parseClasses(block)
            if m of config.PAREN_RULES[c]
              return helper.ENCOURAGE
      return helper.DISCOURAGE

    else if context.type is 'indent'
      console.log context.parseContext, parseClasses(block)
      if '__comment__' in parseClasses(block)
        return helper.ENCOURAGE

      if context.parseContext in parseClasses(block)
        return helper.ENCOURAGE

      return helper.DISCOURAGE

    else if context.type is 'document'
      if '__comment__' in parseClasses(block)
        return helper.ENCOURAGE

      if 'externalDeclaration' in parseClasses(block) or
         'translationUnit' in parseClasses(block)
        return helper.ENCOURAGE

      return helper.DISCOURAGE
