             prefix = '>'
             data = "#{prefix} #{event.data}"
         received.push "#{event.id} #{data}"
-      checkEnd = ->
-        c.network.removeListener 'start', checkStart
+      receiveDisconnect = (event) ->
+        received.push "#{event.id} DISC"
+      checkEnd = ->
+        received.push 'END'
+        c.network.graph.removeInitial 'foo', 'Leg2', 'in'
+        c.network.removeListener 'start', checkStart
+        c.network.removeListener 'connect', receiveConnect
         c.network.removeListener 'ip', receiveEvent
-        c.network.removeListener 'end', checkEnd
-        chai.expect(wasStarted).to.equal true
-        chai.expect(received).to.eql expected
-        done()
-      c.network.on 'start', checkStart
+        c.network.removeListener 'disconnect', receiveDisconnect
+        c.network.removeListener 'end', checkEnd
+        chai.expect(received).to.eql expected
+        done()
+      c.network.on 'start', checkStart
+      c.network.on 'connect', receiveConnect
       c.network.on 'ip', receiveEvent
-      c.network.once 'end', checkEnd
-
-      c.start (err) ->
-        return done err if err
-        in2.connect()
-        in2.send 'foo'
-        in2.disconnect()
+      c.network.on 'disconnect', receiveDisconnect
+      c.network.once 'end', checkEnd
+
+      c.network.graph.addInitial 'foo', 'Leg2', 'in'
+      c.start (err) ->
+        return done err if err
         in1.connect()
         in1.beginGroup 1
         in1.beginGroup 'a'


    it 'should forward new-style brackets as expected', (done) ->
      expected = [
        'Leg2() OUT -> IN2 PcMerge() DATA fooLeg2'
        'Leg1() OUT -> IN1 PcMerge() < 1'
        'Leg1() OUT -> IN1 PcMerge() < a'
        'Leg1() OUT -> IN1 PcMerge() DATA bazLeg1'
        'PcMerge() OUT -> IN Wp() < 1'
        'PcMerge() OUT -> IN Wp() < a'
        'PcMerge() OUT -> IN Wp() DATA 1bazLeg1:2fooLeg2:PcMerge'

        'PcMerge() OUT -> IN Wp() > a'
        'Leg1() OUT -> IN1 PcMerge() > 1'
        'PcMerge() OUT -> IN Wp() > 1'
        'PcMerge() OUT -> IN Wp() DISC'
        'Leg1() OUT -> IN1 PcMerge() DISC'
        'Wp() OUT -> IN Leg3() CONN'
        'Wp() OUT -> IN Leg3() < 1'
        'Wp() OUT -> IN Leg3() < a'
        'Wp() OUT -> IN Leg3() DATA 1bazLeg1:2fooLeg2:PcMergeWp'
        'Wp() OUT -> IN Leg3() > a'
        'Wp() OUT -> IN Leg3() > 1'
        'Wp() OUT -> IN Leg3() DISC'
        'END'
      ]
      received = []

      wasStarted = false
      checkStart = ->
        received.push 'START'
      receiveConnect = (event) ->
        received.push "#{event.id} CONN"
      receiveEvent = (event) ->
        prefix = ''
        switch event.type
