diff --git a/TestON/tests/SAMP/SAMPstartTemplate_3node/Dependency/newFuncTopo.py b/TestON/tests/SAMP/SAMPstartTemplate_3node/Dependency/newFuncTopo.py
old mode 100755
new mode 100644
index 0d72770..ad99198
--- a/TestON/tests/SAMP/SAMPstartTemplate_3node/Dependency/newFuncTopo.py
+++ b/TestON/tests/SAMP/SAMPstartTemplate_3node/Dependency/newFuncTopo.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 
 """
-Copyright 2016 Open Networking Foundation (ONF)
+Copyright 2016 Open Networking Foundation ( ONF )
 
 Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
 the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
@@ -10,7 +10,7 @@
     TestON is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 2 of the License, or
-    (at your option) any later version.
+    ( at your option ) any later version.
 
     TestON is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,7 +20,6 @@
     You should have received a copy of the GNU General Public License
     along with TestON.  If not, see <http://www.gnu.org/licenses/>.
 """
-
 """
 Custom topology for Mininet
 """
@@ -35,19 +34,23 @@
 from mininet.util import dumpNodeConnections
 from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
 
+
 class VLANHost( Host ):
+
     def config( self, vlan=100, **params ):
         r = super( Host, self ).config( **params )
         intf = self.defaultIntf()
         self.cmd( 'ifconfig %s inet 0' % intf )
         self.cmd( 'vconfig add %s %d' % ( intf, vlan ) )
-        self.cmd( 'ifconfig %s.%d inet %s' % ( intf, vlan, params['ip'] ) )
+        self.cmd( 'ifconfig %s.%d inet %s' % ( intf, vlan, params[ 'ip' ] ) )
         newName = '%s.%d' % ( intf, vlan )
         intf.name = newName
         self.nameToIntf[ newName ] = intf
         return r
 
+
 class IPv6Host( Host ):
+
     def config( self, v6Addr='1000:1/64', **params ):
         r = super( Host, self ).config( **params )
         intf = self.defaultIntf()
@@ -55,13 +58,16 @@
         self.cmd( 'ip -6 addr add %s dev %s' % ( v6Addr, intf ) )
         return r
 
+
 class dualStackHost( Host ):
+
     def config( self, v6Addr='2000:1/64', **params ):
         r = super( Host, self ).config( **params )
         intf = self.defaultIntf()
         self.cmd( 'ip -6 addr add %s dev %s' % ( v6Addr, intf ) )
         return r
 
+
 class MyTopo( Topo ):
 
     def __init__( self ):
@@ -69,43 +75,43 @@
         Topo.__init__( self )
 
         # Switch S5 Hosts
-        host1=self.addHost( 'h1', ip='10.1.0.2/24' )
-        host2=self.addHost( 'h2', cls=IPv6Host, v6Addr='1000::2/64' )
-        host3=self.addHost( 'h3', ip='10.1.0.3/24', cls=dualStackHost, v6Addr='2000::2/64' )
-        #VLAN hosts
-        host4=self.addHost( 'h4', ip='100.1.0.2/24', cls=VLANHost, vlan=100 )
-        host5=self.addHost( 'h5', ip='200.1.0.2/24', cls=VLANHost, vlan=200 )
-        #VPN-1 and VPN-2 Hosts
-        host6=self.addHost( 'h6', ip='11.1.0.2/24' )
-        host7=self.addHost( 'h7', ip='12.1.0.2/24' )
-        #Multicast Sender
-        host8=self.addHost( 'h8', ip='10.1.0.4/24' )
+        host1 = self.addHost( 'h1', ip='10.1.0.2/24' )
+        host2 = self.addHost( 'h2', cls=IPv6Host, v6Addr='1000::2/64' )
+        host3 = self.addHost( 'h3', ip='10.1.0.3/24', cls=dualStackHost, v6Addr='2000::2/64' )
+        # VLAN hosts
+        host4 = self.addHost( 'h4', ip='100.1.0.2/24', cls=VLANHost, vlan=100 )
+        host5 = self.addHost( 'h5', ip='200.1.0.2/24', cls=VLANHost, vlan=200 )
+        # VPN-1 and VPN-2 Hosts
+        host6 = self.addHost( 'h6', ip='11.1.0.2/24' )
+        host7 = self.addHost( 'h7', ip='12.1.0.2/24' )
+        # Multicast Sender
+        host8 = self.addHost( 'h8', ip='10.1.0.4/24' )
 
         # Switch S6 Hosts
-        host9=self.addHost( 'h9', ip='10.1.0.5/24' )
-        host10=self.addHost( 'h10', cls=IPv6Host, v6Addr='1000::3/64' )
-        host11=self.addHost( 'h11', ip='10.1.0.6/24', cls=dualStackHost, v6Addr='2000::3/64' )
-        #VLAN hosts
-        host12=self.addHost( 'h12', ip='100.1.0.3/24', cls=VLANHost, vlan=100 )
-        host13=self.addHost( 'h13', ip='200.1.0.3/24', cls=VLANHost, vlan=200 )
-        #VPN-1 and VPN-2 Hosts
-        host14=self.addHost( 'h14', ip='11.1.0.3/24' )
-        host15=self.addHost( 'h15', ip='12.1.0.3/24' )
-        #Multicast Receiver
-        host16=self.addHost( 'h16', ip='10.1.0.7/24' )
+        host9 = self.addHost( 'h9', ip='10.1.0.5/24' )
+        host10 = self.addHost( 'h10', cls=IPv6Host, v6Addr='1000::3/64' )
+        host11 = self.addHost( 'h11', ip='10.1.0.6/24', cls=dualStackHost, v6Addr='2000::3/64' )
+        # VLAN hosts
+        host12 = self.addHost( 'h12', ip='100.1.0.3/24', cls=VLANHost, vlan=100 )
+        host13 = self.addHost( 'h13', ip='200.1.0.3/24', cls=VLANHost, vlan=200 )
+        # VPN-1 and VPN-2 Hosts
+        host14 = self.addHost( 'h14', ip='11.1.0.3/24' )
+        host15 = self.addHost( 'h15', ip='12.1.0.3/24' )
+        # Multicast Receiver
+        host16 = self.addHost( 'h16', ip='10.1.0.7/24' )
 
         # Switch S7 Hosts
-        host17=self.addHost( 'h17', ip='10.1.0.8/24' )
-        host18=self.addHost( 'h18', cls=IPv6Host, v6Addr='1000::4/64' )
-        host19=self.addHost( 'h19', ip='10.1.0.9/24', cls=dualStackHost, v6Addr='2000::4/64' )
-        #VLAN hosts
-        host20=self.addHost( 'h20', ip='100.1.0.4/24', cls=VLANHost, vlan=100 )
-        host21=self.addHost( 'h21', ip='200.1.0.4/24', cls=VLANHost, vlan=200 )
-        #VPN-1 and VPN-2 Hosts
-        host22=self.addHost( 'h22', ip='11.1.0.4/24' )
-        host23=self.addHost( 'h23', ip='12.1.0.4/24' )
-        #Multicast Receiver
-        host24=self.addHost( 'h24', ip='10.1.0.10/24' )
+        host17 = self.addHost( 'h17', ip='10.1.0.8/24' )
+        host18 = self.addHost( 'h18', cls=IPv6Host, v6Addr='1000::4/64' )
+        host19 = self.addHost( 'h19', ip='10.1.0.9/24', cls=dualStackHost, v6Addr='2000::4/64' )
+        # VLAN hosts
+        host20 = self.addHost( 'h20', ip='100.1.0.4/24', cls=VLANHost, vlan=100 )
+        host21 = self.addHost( 'h21', ip='200.1.0.4/24', cls=VLANHost, vlan=200 )
+        # VPN-1 and VPN-2 Hosts
+        host22 = self.addHost( 'h22', ip='11.1.0.4/24' )
+        host23 = self.addHost( 'h23', ip='12.1.0.4/24' )
+        # Multicast Receiver
+        host24 = self.addHost( 'h24', ip='10.1.0.10/24' )
 
         s1 = self.addSwitch( 's1' )
         s2 = self.addSwitch( 's2' )
@@ -115,59 +121,60 @@
         s6 = self.addSwitch( 's6' )
         s7 = self.addSwitch( 's7' )
 
-        self.addLink(s5,host1)
-        self.addLink(s5,host2)
-        self.addLink(s5,host3)
-        self.addLink(s5,host4)
-        self.addLink(s5,host5)
-        self.addLink(s5,host6)
-        self.addLink(s5,host7)
-        self.addLink(s5,host8)
+        self.addLink( s5, host1 )
+        self.addLink( s5, host2 )
+        self.addLink( s5, host3 )
+        self.addLink( s5, host4 )
+        self.addLink( s5, host5 )
+        self.addLink( s5, host6 )
+        self.addLink( s5, host7 )
+        self.addLink( s5, host8 )
 
-        self.addLink(s6,host9)
-        self.addLink(s6,host10)
-        self.addLink(s6,host11)
-        self.addLink(s6,host12)
-        self.addLink(s6,host13)
-        self.addLink(s6,host14)
-        self.addLink(s6,host15)
-        self.addLink(s6,host16)
+        self.addLink( s6, host9 )
+        self.addLink( s6, host10 )
+        self.addLink( s6, host11 )
+        self.addLink( s6, host12 )
+        self.addLink( s6, host13 )
+        self.addLink( s6, host14 )
+        self.addLink( s6, host15 )
+        self.addLink( s6, host16 )
 
-        self.addLink(s7,host17)
-        self.addLink(s7,host18)
-        self.addLink(s7,host19)
-        self.addLink(s7,host20)
-        self.addLink(s7,host21)
-        self.addLink(s7,host22)
-        self.addLink(s7,host23)
-        self.addLink(s7,host24)
+        self.addLink( s7, host17 )
+        self.addLink( s7, host18 )
+        self.addLink( s7, host19 )
+        self.addLink( s7, host20 )
+        self.addLink( s7, host21 )
+        self.addLink( s7, host22 )
+        self.addLink( s7, host23 )
+        self.addLink( s7, host24 )
 
-        self.addLink(s1,s2)
-        self.addLink(s1,s3)
-        self.addLink(s1,s4)
-        self.addLink(s1,s5)
+        self.addLink( s1, s2 )
+        self.addLink( s1, s3 )
+        self.addLink( s1, s4 )
+        self.addLink( s1, s5 )
 
-        self.addLink(s2,s3)
-        self.addLink(s2,s5)
-        self.addLink(s2,s6)
+        self.addLink( s2, s3 )
+        self.addLink( s2, s5 )
+        self.addLink( s2, s6 )
 
-        self.addLink(s3,s4)
-        self.addLink(s3,s6)
+        self.addLink( s3, s4 )
+        self.addLink( s3, s6 )
 
-        self.addLink(s4,s7)
+        self.addLink( s4, s7 )
         topos = { 'mytopo': ( lambda: MyTopo() ) }
 
 # HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
 
+
 def setupNetwork():
     "Create network"
     topo = MyTopo()
-    network = Mininet(topo=topo, autoSetMacs=True, controller=None)
+    network = Mininet( topo=topo, autoSetMacs=True, controller=None )
     network.start()
     CLI( network )
     network.stop()
 
 if __name__ == '__main__':
-    setLogLevel('info')
-    #setLogLevel('debug')
+    setLogLevel( 'info' )
+    # setLogLevel( 'debug' )
     setupNetwork()
