diff --git a/examples/udpbwtest.py b/examples/udpbwtest.py
index 4d67cb470fd88260ce0b6e3ed4bff4eaa550508e..5a97778b052f3a0b5c8b94fccbd1069ab49bf939 100755
--- a/examples/udpbwtest.py
+++ b/examples/udpbwtest.py
@@ -8,8 +8,42 @@
 We should also make a tcp version. :D
 """
 
-import select, sys, time, re
-from mininet import init, TreeNet, Cli, flush, quietRun
+import os
+import re
+import select
+import sys
+import time
+
+flush = sys.stdout.flush
+
+from mininet.log import lg   
+from mininet.net import init, Mininet
+from mininet.node import Host, KernelSwitch
+from mininet.topo import Topo, Node
+from mininet.util import quietRun
+
+class TreeTopo( Topo ):
+    "Topology for a tree network with a given depth and fanout."
+
+    def __init__( self, depth=1, fanout=2 ):
+        super( TreeTopo, self ).__init__()
+        # Build topology
+        self.treeNet( 1, depth, fanout )
+        # Consider all switches and hosts 'on'
+        self.enable_all()
+
+    def treeNet( self, id, depth, fanout ):
+        """Add a subtree with a given id.
+           returns: last id added"""
+        me = id
+        isSwitch = (depth > 0 )
+        self._add_node( me, Node( is_switch=isSwitch ) )
+        if isSwitch:
+            for i in range( 0, fanout ):
+                child = id + 1
+                self._add_edge( me, child )
+                id = self.treeNet( child, depth-1, fanout )
+        return id
 
 # Some useful stuff: buffered readline and host monitoring
 
@@ -61,8 +95,9 @@ def printTotal( time=None, result=None ):
    print '%d\t%d\t%.2f/%.2f\t\t%.2f/%.2f' % ( time, count, intotal, outtotal,
       inavg, outavg )
    
-def udpbwtest( controllers, switches, hosts, seconds ):
+def udpbwtest( net, seconds ):
    "Start up and monitor udpbwtest on each of our hosts."
+   hosts, switches = net.hosts, net.switches
    hostCount = len( hosts )
    print "*** Starting udpbwtest on hosts"
    for host in hosts: 
@@ -94,8 +129,11 @@ def udpbwtest( controllers, switches, hosts, seconds ):
    print 
      
 if __name__ == '__main__':
-   init()
-   network = TreeNet( depth=2, fanout=8, kernel=True )
-   def test( c, s, h ): return udpbwtest( c, s, h, seconds=10 )
-   network.run( test )
-   
\ No newline at end of file
+    lg.setLogLevel( 'info' )
+    if not os.path.exists( './udpbwtest' ):
+        raise Exception( 'Could not find udpbwtest in current directory.' )
+    init()
+    network = Mininet( TreeTopo( depth=2, fanout=2 ), switch=KernelSwitch )
+    network.start()
+    udpbwtest( network, seconds=10 )
+    network.stop()