diff --git a/TestON/drivers/common/cli/quaggaclidriver.py b/TestON/drivers/common/cli/quaggaclidriver.py
index 77e1fab..8314941 100644
--- a/TestON/drivers/common/cli/quaggaclidriver.py
+++ b/TestON/drivers/common/cli/quaggaclidriver.py
@@ -22,15 +22,11 @@
         self.name = self.options['name']
         # self.handle = super(QuaggaCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
         self.handle = super(QuaggaCliDriver, self).connect(user_name=self.user_name, ip_address="1.1.1.1", port=self.port, pwd=self.pwd)
-        main.log.info("quagga handle" + str(self.handle) )
-        main.log.info("where is this timeout from?")
         main.log.info("connect parameters:" + str(self.user_name) + ";" + str(self.ip_address) + ";" + str(self.port) + ";" + str(self.pwd))
 
         if self.handle:
             #self.handle.expect("",timeout=10)
             #self.handle.expect("\$",timeout=10)
-            #main.log.info(self.handle.before)
-            #main.log.info(self.handle.after)
             self.handle.sendline("telnet localhost 2605")
             #self.handle.expect("Password:", timeout=5)
             self.handle.expect("Password:")
@@ -171,7 +167,7 @@
         intents_json_obj = json.loads(get_intents_result)
 
         for intent in intents_json_obj:
-            if intent['appId'] != "org.onlab.onos.sdnip" :
+            if intent['appId'] != "org.onosproject.sdnip" :
                 continue
             if intent['type'] == "MultiPointToSinglePointIntent" and intent['state'] == 'INSTALLED':
                 egress = str(intent['egress']['device']) + ":" + str(intent['egress']['port'])
@@ -196,7 +192,7 @@
         intents_json_obj = json.loads(get_intents_result)
 
         for intent in intents_json_obj:
-            if intent['appId'] != "org.onlab.onos.sdnip":
+            if intent['appId'] != "org.onosproject.sdnip":
                 continue
             if intent['type'] == "PointToPointIntent" and "protocol=6" in str(intent['selector']):
                 ingress = str(intent['ingress']['device']) + ":" + str(intent['ingress']['port'])
diff --git a/TestON/tests/ClassTest/ClassTest.params b/TestON/tests/ClassTest/ClassTest.params
new file mode 100644
index 0000000..456881b
--- /dev/null
+++ b/TestON/tests/ClassTest/ClassTest.params
@@ -0,0 +1,4 @@
+<PARAMS>
+    <testcases>1,2</testcases>
+
+</PARAMS>
diff --git a/TestON/tests/ClassTest/ClassTest.py b/TestON/tests/ClassTest/ClassTest.py
new file mode 100644
index 0000000..6d7a153
--- /dev/null
+++ b/TestON/tests/ClassTest/ClassTest.py
@@ -0,0 +1,26 @@
+
+import time
+import os
+import re
+
+class ClassTest:
+    def __init__(self):
+        self.default = ''
+
+    def CASE1(self, main):
+        import time
+        import imp
+
+        init = imp.load_source('ClassInit',
+            '/home/admin/ONLabTest/TestON/tests/ClassTest/Dependency/ClassInit.py')
+
+        ip1_from_class = init.getIp1()  
+        init.printMain(main)
+
+        main.log.info(ip1_from_class)
+
+    def CASE2(self, main):
+
+
+        main.log.info("Case 2")
+
diff --git a/TestON/tests/ClassTest/ClassTest.topo b/TestON/tests/ClassTest/ClassTest.topo
new file mode 100644
index 0000000..4ecb7ed
--- /dev/null
+++ b/TestON/tests/ClassTest/ClassTest.topo
@@ -0,0 +1,26 @@
+<TOPOLOGY>
+    <COMPONENT>
+        <ONOSbench>
+            <host>10.128.174.10</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>OnosDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS> </COMPONENTS>
+        </ONOSbench>
+        
+        <Mininet1>
+            <host>10.128.10.90</host>
+            <user>admin</user>
+            <password>onos_test</password>
+            <type>MininetCliDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS>
+                <arg1> --custom topo-perf-2sw.py </arg1>
+                <arg2> --arp --mac --topo mytopo </arg2>
+                <arg3> </arg3>
+                <controller> remote </controller>
+            </COMPONENTS>
+        </Mininet1>
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/ClassTest/Dependency/ClassInit.py b/TestON/tests/ClassTest/Dependency/ClassInit.py
new file mode 100644
index 0000000..74ff627
--- /dev/null
+++ b/TestON/tests/ClassTest/Dependency/ClassInit.py
@@ -0,0 +1,11 @@
+
+
+def __init__(self):
+    self._ip1 = '1'
+    self._ip2 = '2'
+
+def getIp1():
+    print 'some ip' 
+
+def printMain(main):
+    print main.log.info("Main from classinit") 
diff --git a/TestON/tests/ClassTest/Dependency/__init__.py b/TestON/tests/ClassTest/Dependency/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/ClassTest/Dependency/__init__.py
diff --git a/TestON/tests/ClassTest/Dependencyc b/TestON/tests/ClassTest/Dependencyc
new file mode 100644
index 0000000..bafe4c9
--- /dev/null
+++ b/TestON/tests/ClassTest/Dependencyc
Binary files differ
diff --git a/TestON/tests/ClassTest/__init__.py b/TestON/tests/ClassTest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/ClassTest/__init__.py
