diff --git a/cccli/cli.py b/cccli/cli.py
index 9dbf8ff862bc1dd480146488a9604f8808d650bd..b9cb2e3ee134b4490e2311c3160828b49a11fb69 100644
--- a/cccli/cli.py
+++ b/cccli/cli.py
@@ -112,10 +112,8 @@ class Cli(object):
                 if len(argv) == 0:
                     continue
                 # alias subsitution
-                if argv[0] in self.aliases:
-                    oldargv = argv[1:]
-                    argv = shlex.split(self.aliases[argv[0]])
-                    argv.extend(oldargv)
+                argv = self.aliases.substitute(argv)
+                # command execution
                 self._exec_command(argv)
             except KeyboardInterrupt:
                 self.printer.out("")
diff --git a/cccli/commands.py b/cccli/commands.py
index c91217515e1cd49fcc2140a689ed8510eb2c8f53..f424cbbce5b334e3f2b28921c4626461ccf3a5e5 100644
--- a/cccli/commands.py
+++ b/cccli/commands.py
@@ -7,6 +7,7 @@ CloudControl CLI commands module
 import re
 import ConfigParser
 import os
+import shlex
 
 from cccli.exception import *
 from cccli.command import *
@@ -98,3 +99,10 @@ class Aliases(dict):
             for n,v in self.items():
                 fparser.set("alias", n, v)
             fparser.write(open(filename, "w"))
+
+    def substitute(self, argv):
+        if argv[0] in self:
+            oldargv = argv[1:]
+            argv = shlex.split(self[argv[0]])
+            argv.extend(oldargv)
+        return argv