       here = @locate()
       here[group] = []
       @groups.push group
-      @outPorts.out.beginGroup group
+      @outPorts.out.beginGroup group if @outPorts.out.isAttached()
 
     @inPorts.in.on "data", (data) =>
       here = @locate()
       here.push data
-      @outPorts.out.send data
+      @outPorts.out.send data if @outPorts.out.isAttached()
 
     @inPorts.in.on "endgroup", (group) =>
       @groups.pop()
-      @outPorts.out.endGroup()
+      @outPorts.out.endGroup() if @outPorts.out.isAttached()
 
     @inPorts.in.on "disconnect", =>
-      @outPorts.out.disconnect()
+      @outPorts.out.disconnect() if @outPorts.out.isAttached()
 
       log.push @cache
       count--

  constructor: ->
    @inPorts =
      in: new noflo.Port
    @outPorts =
      out: new noflo.Port

    @inPorts.in.on "connect", =>
      count++


display = (log) ->
  for packet, i in log
    packet = util.inspect packet,
      options.showHidden, options.depth, options.colors
    packet = packet.replace /\n/g, "\n#{padding}"
    print.pf format, "DATA", packet
    delete log[i]

