diff --git a/cccli/cli.py b/cccli/cli.py
index 6899160bb559be8324cf0f3ae71526fdd931fe4e..33601e9efc8f5b61041b2a41944f10a529b66daf 100644
--- a/cccli/cli.py
+++ b/cccli/cli.py
@@ -59,15 +59,14 @@ class Cli(object):
         '''Connect to a cloud control server'''
         self.printer.debug("Connecting...")
         try:
-            rpcc = SimpleRpcClient.from_addr(self.settings["server"],
+            self.rpc = SimpleRpcClient.from_addr(self.settings["server"],
                                              self.settings["port"],
                                              enable_ssl=True,
                                              default_handler=CliHandler(),
                                              on_disconnect="quit",
                                              timeout=self.settings["timeout"]
                                         )
-            rpcc.start(daemonize=True)
-            self.rpc = ConnectionProxy(rpcc)
+            self.rpc.start(daemonize=True)
         except Exception as e:
             s = "Connection failure!" if not str(e) else "Connection failure: %s"%str(e)
             raise cliError(s)
@@ -77,7 +76,7 @@ class Cli(object):
         '''Handle server authentification'''
         self.printer.debug("Authenticating...")
         try:
-            self.rpc.authentify(self.settings["login"], self.settings["pass"])
+            self.rpc.call("authentify", self.settings["login"], self.settings["pass"])
         except Exception as e:
             s = "Authentication failure!" if not str(e) else "Authentication failure: %s"%str(e)
             raise cliError(s)
diff --git a/cccli/command.py b/cccli/command.py
index 01c378ee3ec2acdb0bdf07c32faa19a55eda72f6..db4ceaf536a85ceae0aa1d45c493dc78195f1e45 100644
--- a/cccli/command.py
+++ b/cccli/command.py
@@ -156,7 +156,7 @@ class Command(object):
 
     def cmd_rcmd(self, argv):
         '''Show remote commands'''
-        for cmds in self.cli.rpc.list_commands():
+        for cmds in self.cli.rpc.call("list_commands"):
             self.printer.out("%s"%cmds["name"])
     cmd_rcmd.usage = "rcmd"
     cmd_rcmd.desc = "Print remote command list"
@@ -181,7 +181,7 @@ class Command(object):
         if len(args) == 0:
             args.append("a")
         try:
-            objs = self.cli.rpc.list(str.join("", args))
+            objs = self.cli.rpc.call("list", str.join("", args))
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
         if len(objs) == 0:
@@ -227,7 +227,7 @@ class Command(object):
         tql = str.join("", argv[1:])
         # print tql list result
         try:
-            objs = self.cli.rpc.list(tql)
+            objs = self.cli.rpc.call("list",tql)
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
         if len(objs) == 0:
@@ -245,7 +245,7 @@ class Command(object):
             if self.printer.ask("You request is on more than 5 objets. Are you really sure to %s its? (Yes, I am) "%argv[0], "Yes, I am") != "Yes, I am":
                 raise cmdWarning("Aborted")
         try:
-            self.cli.rpc[argv[0]](tql)
+            self.cli.rpc.call(argv[0],tql)
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
 
@@ -285,7 +285,7 @@ class Command(object):
             argv.append(self.cli.settings["login"])
         tql = "a~(%s)$con"%"|".join(argv[1:])
         try:
-            objs = self.cli.rpc.list(tql)
+            objs = self.cli.rpc.call("list",tql)
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
         for o in objs:
@@ -296,9 +296,9 @@ class Command(object):
         '''List static tags on an account (current by default)'''
         if len(argv) == 1:
             argv.append(self.cli.settings["login"])
-        for a in argv:
+        for a in argv[1:]:
             try:
-                tl = self.cli.rpc.tags(a)
+                tl = self.cli.rpc.call("tags",a)
                 self.printer.out("%s: %s"%(a, tl))
             except RpcError as e:
                 raise cmdError("RPCError: %s"%str(e))
@@ -309,7 +309,7 @@ class Command(object):
         if len(argv) != 4:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.addtag(argv[1], argv[2], argv[3])
+            self.cli.rpc.call("addtag", argv[1], argv[2], argv[3])
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
     cmd_addtag.usage = "addtag <account> <tag> <value>"
@@ -319,7 +319,7 @@ class Command(object):
         if len(argv) != 3:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.deltag(argv[1], argv[2])
+            self.cli.rpc.call("deltag", argv[1], argv[2])
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
     cmd_deltag.usage = "deltag <account> <tag>"
@@ -329,7 +329,7 @@ class Command(object):
         if len(argv) != 3:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.addaccount(argv[1], argv[2])
+            self.cli.rpc.call("addaccount", argv[1], argv[2])
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
     cmd_addaccount.usage = "addaccount <name> <role>"
@@ -339,7 +339,7 @@ class Command(object):
         if len(argv) != 2:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.delaccount(argv[1])
+            self.cli.rpc.call("delaccount", argv[1])
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
     cmd_delaccount.usage = "delaccount <name>"
@@ -362,7 +362,7 @@ class Command(object):
         else:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.passwd(argv[1], argv[2])
+            self.cli.rpc.call("passwd", argv[1], argv[2])
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
     cmd_passwd.usage = "passwd <account> [password]"