diff --git a/TestON/core/Thread.py b/TestON/core/Thread.py
index e20abc3..452437a 100644
--- a/TestON/core/Thread.py
+++ b/TestON/core/Thread.py
@@ -1,9 +1,11 @@
 #!/usr/bin/env python
 import threading
 
-class Thread(threading.Thread):
-    def __init__(self, target = None, threadID=None, name="", args=(), kwargs={}):
-        super(Thread, self).__init__()
+
+class Thread( threading.Thread ):
+    def __init__( self, target=None, threadID=None, name="", args=(),
+                  kwargs={} ):
+        super( Thread, self ).__init__()
         self.threadID = threadID
         self.name = name
         self.target = target
@@ -14,11 +16,16 @@
     def run( self ):
         try:
             if self.target is not None:
+                self.result = self.target( *self.args, **self.kwargs )
+            '''
+            if self.target is not None:
                 if len(self.args) != 0:
                     self.result = self.target( *self.args )
                 else:
                     self.result = self.target()
+                    # FIXME: handle kwargs?
+            '''
         except Exception as e:
-            print "Thread-" + str(self.threadID) + \
-                  ":something went wrong with " + self.name + " method"
+            print "Thread-" + str( self.threadID ) + " '" + self.name + "'"\
+                  ":something went wrong with " + self.target + " method"
             print e
