diff --git a/TestON/core/utilities.py b/TestON/core/utilities.py
index 8cd81e5..02ade72 100644
--- a/TestON/core/utilities.py
+++ b/TestON/core/utilities.py
@@ -121,9 +121,8 @@
         try :
             opcode = operators[str(arguments["OPERATOR"])][valuetype] if arguments["OPERATOR"] == 'equals' else operators[str(arguments["OPERATOR"])]
 
-        except KeyError as e:
+        except KeyError:
             print "Key Error in assertion"
-            print e
             return main.FALSE
 
         if opcode == '=~':
@@ -180,9 +179,8 @@
         if not isinstance(msg,str):
             try:
                 eval(str(msg))
-            except SyntaxError as e:
-                print "function definition is not right"
-                print e
+            except SyntaxError:
+                print "functin definition is not write"
 
         main.last_result = result
         return result
@@ -193,6 +191,7 @@
         '''
         newArgs = {}
         for key,value in kwargs.iteritems():
+            #currentKey =  str.upper(key)
             if isinstance(args,list) and str.upper(key) in args:
                 for each in args:
                     if each==str.upper(key):
@@ -200,6 +199,8 @@
                     elif each != str.upper(key) and (newArgs.has_key(str(each)) == False ):
                         newArgs[str(each)] = None
 
+
+
         return newArgs
 
     def send_mail(self):
@@ -210,7 +211,7 @@
                 sub = "Result summary of \""+main.TEST+"\" run on component \""+main.test_target+"\" Version \""+vars(main)[main.test_target].get_version()+"\": "+str(main.TOTAL_TC_SUCCESS)+"% Passed"
             else :
                 sub = "Result summary of \""+main.TEST+"\": "+str(main.TOTAL_TC_SUCCESS)+"% Passed"
-        except ( KeyError, AttributeError ):
+        except KeyError,AttributeError:
             sub = "Result summary of \""+main.TEST+"\": "+str(main.TOTAL_TC_SUCCESS)+"% Passed"
 
         msg['Subject'] = sub
@@ -249,7 +250,7 @@
             try :
                 parsedInfo = ConfigObj(self.fileName)
                 return parsedInfo
-            except StandardError:
+            except Exception:
                 print "There is no such file to parse "+fileName
         else:
             return 0
