diff --git a/tools/dringctrl/controler.py b/tools/dringctrl/controler.py
index 0841f1244fc947262f74a0aff4134438701c40ed..8671af7ef04f9a4f65d609b3c488210eaa957bb3 100644
--- a/tools/dringctrl/controler.py
+++ b/tools/dringctrl/controler.py
@@ -117,13 +117,14 @@ class DRingCtrl(Thread):
             self.instance.Register(os.getpid(), self.name)
             self.registered = True
 
-        except:
+        except dbus.DBusException as e:
             raise DRingCtrlDeamonError("Client registration failed")
 
         try:
             proxy_callmgr.connect_to_signal('incomingCall', self.onIncomingCall)
             proxy_callmgr.connect_to_signal('callStateChanged', self.onCallStateChanged)
             proxy_callmgr.connect_to_signal('conferenceCreated', self.onConferenceCreated)
+            proxy_confmgr.connect_to_signal('accountsChanged', self.onAccountsChanged)
 
         except dbus.DBusException as e:
             raise DRingCtrlDBusError("Unable to connect to dring DBus signals")
@@ -226,7 +227,6 @@ class DRingCtrl(Thread):
         """ On call state changed event, set the values for new calls,
         or delete the call from the list of active calls
         """
-
         print(("On call state changed " + callid + " " + state))
 
         if callid not in self.activeCalls:
@@ -236,7 +236,6 @@ class DRingCtrl(Thread):
                                              'To': callDetails['PEER_NUMBER'],
                                           'State': state }
 
-
         self.currentCallId = callid
 
         if state == "HUNGUP":
@@ -252,7 +251,7 @@ class DRingCtrl(Thread):
         elif state == "FAILURE":
             self.onCallFailure(callid, state)
         else:
-            print("unknown state")
+            print("unknown state:" + str(state))
 
     def onConferenceCreated_cb(self):
         pass
@@ -336,7 +335,7 @@ class DRingCtrl(Thread):
     def addAccount(self, details=None):
         """Add a new account account
 
-        Add a new account to the SFLphone-daemon. Default parameters are \
+        Add a new account to the Ring-daemon. Default parameters are \
         used for missing account configuration field.
 
         Required parameters are type, alias, hostname, username and password
@@ -349,7 +348,7 @@ class DRingCtrl(Thread):
                                   username and password in \
                                   order to create a new account")
 
-        return self.configurationmanager.addAccount(details)
+        return str(self.configurationmanager.addAccount(details))
 
     def removeAccount(self, accountID=None):
         """Remove an account from internal list"""
@@ -432,6 +431,9 @@ class DRingCtrl(Thread):
         account = self._valid_account(account)
         self.configurationmanager.sendRegister(account, register)
 
+    def onAccountsChanged(self):
+        print("Accounts changed")
+
     #
     # Codec manager
     #
diff --git a/tools/dringctrl/dringctrl.py b/tools/dringctrl/dringctrl.py
index 0e771b92327e5278bc78e36df52f8126d756f504..9dca2f9141dcaddca0edd8d52b92a0585e4e76b0 100755
--- a/tools/dringctrl/dringctrl.py
+++ b/tools/dringctrl/dringctrl.py
@@ -38,43 +38,44 @@ def printAccountDetails(account):
 
 if __name__ == "__main__":
     parser = argparse.ArgumentParser()
-    parser.add_argument('--gaa', help='Get all accounts (of optionaly given type)',
-                        nargs='?', metavar='<type>', type=str, default=argparse.SUPPRESS)
-    parser.add_argument('--gara', help='Get all registered accounts', action='store_true')
-    parser.add_argument('--gaea', help='Get all enabled accounts', action='store_true')
-    parser.add_argument('--gaad', help='Get all account details', action='store_true')
-
-    parser.add_argument('--gac', help='Get all codecs', action='store_true')
 
-    parser.add_argument('--gad', help='Get account details',
+    parser.add_argument('--get-all-accounts', help='Get all accounts (of optionaly given type)',
+                        nargs='?', metavar='<type>', type=str, default=argparse.SUPPRESS)
+    parser.add_argument('--get-registered-accounts', help='Get all registered accounts',
+                        action='store_true')
+    parser.add_argument('--get-enabled-accounts', help='Get all enabled accounts',
+                        action='store_true')
+    parser.add_argument('--get-all-accounts-details', help='Get all accounts details',
+                        action='store_true')
+
+    parser.add_argument('--add-ring-account', help='Add new Ring account',
+                        metavar='<account>', type=str)
+    parser.add_argument('--remove-ring-account', help='Remove Ring account',
+                        metavar='<account>', type=str)
+    parser.add_argument('--get-account-details', help='Get account details',
                         metavar='<account>', type=str)
-
     group = parser.add_mutually_exclusive_group()
     group.add_argument('--enable', help='Enable the account',
                        metavar='<account>', type=str)
     group.add_argument('--disable', help='Disable the account',
                        metavar='<account>', type=str)
-
     group = parser.add_mutually_exclusive_group()
     group.add_argument('--register', help='Register the account',
                        metavar='<account>', type=str)
     group.add_argument('--unregister', help='Unregister the account',
                        metavar='<account>', type=str)
-
-    parser.add_argument('--sac', help='Set active account',
+    parser.add_argument('--set-active-account', help='Set active account',
                         metavar='<account>', type=str)
 
-    parser.add_argument('--gacl', help='Get active codecs for the account',
+    parser.add_argument('--get-all-codecs', help='Get all codecs', action='store_true')
+    parser.add_argument('--get-active-codecs', help='Get active codecs for the account',
                         nargs='?', metavar='<account>', type=str, default=argparse.SUPPRESS)
-    parser.add_argument('--sacl', help='Set active codecs for active account',
-                        metavar='<codec list>', type=str)
-
-    parser.add_argument('--gacd', help='Get active codecs details for the account',
+    parser.add_argument('--get-active-codecs-details', help='Get active codecs details for the account',
                         metavar='<account>',type=str)
+    parser.add_argument('--set-active-codecs', help='Set active codecs for active account',
+                        metavar='<codec list>', type=str)
 
-    #parser.add_argument('--gcc', help='Get current callid', action='store_true')
-    parser.add_argument('--gcl', help='Get call list', action='store_true')
-
+    parser.add_argument('--get-call-list', help='Get call list', action='store_true')
     group = parser.add_mutually_exclusive_group()
     group.add_argument('--call', help='Call to number', metavar='<destination>')
     #group.add_argument('--transfer', help='Transfer active call', metavar='<destination>')
@@ -101,42 +102,49 @@ if __name__ == "__main__":
         ctrl.run()
         sys.exit(0)
 
-    if args.gac:
+    if args.add-ring-account:
+        accDetails = {'Account.type':'RING', 'Account.alias':args.add-ring-account if args.add-ring-account!='' else 'RingAccount'}
+        accountID = ctrl.addAccount(accDetails)
+
+    if args.remove-ring-account and args.remove-ring-account != '':
+        ctrl.removeAccount(args.remove-ring-account)
+
+    if args.get-all-codecs:
         print(ctrl.getAllCodecs())
 
-    if hasattr(args, 'gaa'):
-        for account in ctrl.getAllAccounts(args.gaa):
+    if hasattr(args, 'get-all-accounts'):
+        for account in ctrl.getAllAccounts(args.get-all-accounts):
             print(account)
 
-    if args.gara:
+    if args.get-registered-accounts:
         for account in ctrl.getAllRegisteredAccounts():
             print(account)
 
-    if args.gaea:
+    if args.get-enabled-accounts:
         for account in ctrl.getAllEnabledAccounts():
             print(account)
 
-    if args.gaad:
+    if args.get-all-accounts-details:
         for account in ctrl.getAllAccounts():
             printAccountDetails(account)
 
-    if args.gacd:
-        for codecId in ctrl.getActiveCodecs(args.gacd):
+    if args.get-active-codecs-details:
+        for codecId in ctrl.getActiveCodecs(args.get-active-codecs-details):
             print("# codec",codecId,"-------------")
-            print(ctrl.getCodecDetails(args.gacd, codecId))
+            print(ctrl.getCodecDetails(args.get-active-codecs-details, codecId))
             print("#-- ")
 
-    if args.sac:
-        ctrl.setAccount(args.sac)
+    if args.set-active-account:
+        ctrl.setAccount(args.set-active-account)
 
-    if args.gad:
-        printAccountDetails(args.gad)
+    if args.get-account-details:
+        printAccountDetails(args.get-account-details)
 
-    if hasattr(args, 'gacl'):
-        print(ctrl.getActiveCodecs(args.gacl))
+    if hasattr(args, 'get-active-codecs'):
+        print(ctrl.getActiveCodecs(args.get-active-codec))
 
-    if args.sacl:
-        ctrl.setActiveCodecList(codec_list=args.sacl)
+    if args.set-active-codecs:
+        ctrl.setActiveCodecList(codec_list=args.set-active-codecs)
 
     if args.enable:
         ctrl.setAccountEnable(args.enable, True)
@@ -150,7 +158,7 @@ if __name__ == "__main__":
     if args.unregister:
         ctrl.setAccountRegistered(args.unregister, False)
 
-    if args.gcl:
+    if args.get-call-list:
         for call in ctrl.getAllCalls():
             print(call)
 
@@ -188,49 +196,3 @@ if __name__ == "__main__":
             ctrl.videomanager.startCamera()
             time.sleep(2)
             ctrl.videomanager.stopCamera()
-
-"""
-
-		# Get call details
-		elif opt == "--gcd":
-			if arg == "current": arg = sflphone.getCurrentCallID()
-
-			details = sflphone.getCallDetails(arg)
-			if details:
-				print "Call: " + arg
-				print "Account: " + details['ACCOUNTID']
-				print "Peer: " + details['PEER_NAME'] + "<" + details['PEER_NUMBER'] + ">"
-
-		# Transfer the current call
-		elif opt == "--transfer":
-			call = sflphone.callmanager.getCurrentCallID()
-			sflphone.Transfert(call, arg)
-
-		#
-		# account options
-		#
-
-		# Register an account
-		elif opt == "--register":
-			if not sflphone.checkAccountExists(arg):
-				print "Account " + arg + ": no such account."
-
-			elif arg  in sflphone.getAllRegisteredAccounts():
-				print "Account " + arg + ": already registered."
-
-			else:
-				sflphone.setAccountRegistered(arg, True)
-				print arg + ": Sent register request."
-
-		# Unregister an account
-		elif opt == "--unregister":
-			if not sflphone.checkAccountExists(arg):
-				print "Account " + arg + ": no such account."
-
-			elif arg not in sflphone.getAllRegisteredAccounts():
-				print "Account " + arg + ": is not registered."
-
-			else:
-				sflphone.setAccountRegistered(arg, False)
-				print arg + ": Sent unregister request."
-"""