diff --git a/novaclient/shell.py b/novaclient/shell.py
index 989b6ef19..92e4e83f9 100644
--- a/novaclient/shell.py
+++ b/novaclient/shell.py
@@ -42,10 +42,28 @@ def env(*vars):
     return ''
 
 
+class NovaClientArgumentParser(argparse.ArgumentParser):
+
+    def __init__(self, *args, **kwargs):
+        super(NovaClientArgumentParser, self).__init__(*args, **kwargs)
+
+    def error(self, message):
+        """error(message: string)
+
+        Prints a usage message incorporating the message to stderr and
+        exits.
+        """
+        self.print_usage(sys.stderr)
+        #FIXME(lzyeval): if changes occur in argparse.ArgParser._check_value
+        choose_from = ' (choose from'
+        self.exit(2, "error: %s\nTry `%s help' for more information.\n" %
+                     (message.split(choose_from)[0], self.prog))
+
+
 class OpenStackComputeShell(object):
 
     def get_base_parser(self):
-        parser = argparse.ArgumentParser(
+        parser = NovaClientArgumentParser(
             prog='nova',
             description=__doc__.strip(),
             epilog='See "nova help COMMAND" '\