diff --git a/README.rst b/README.rst
index af07bfca6..0ac9a09d9 100644
--- a/README.rst
+++ b/README.rst
@@ -40,7 +40,7 @@ with the ``--username``, ``--apikey`` and  ``--projectid`` params, but it's easi
 set them as environment variables::
 
     export NOVA_USERNAME=openstack
-    export NOVA_API_KEY=yadayada
+    export NOVA_PASSWORD=yadayada
     export NOVA_PROJECT_ID=myproject
 
 You will also need to define the authentication url with ``--url`` and the
@@ -64,6 +64,7 @@ You'll find complete documentation on the shell by running
 
     usage: nova [--username USERNAME] [--apikey APIKEY] [--projectid PROJECTID]
                    [--url URL] [--version VERSION] [--region_name NAME]
+                   [--endpoint_name NAME]
                    <subcommand> ...
 
     Command-line interface to the OpenStack Nova API.
@@ -141,7 +142,7 @@ You'll find complete documentation on the shell by running
 
     Optional arguments:
       --username USERNAME   Defaults to env[NOVA_USERNAME].
-      --apikey APIKEY       Defaults to env[NOVA_API_KEY].
+      --apikey PASSWORD       Defaults to env[NOVA_PASSWORD].
       --apikey PROJECTID    Defaults to env[NOVA_PROJECT_ID].
       --url AUTH_URL        Defaults to env[NOVA_URL] or
                             https://auth.api.rackspacecloud.com/v1.0
@@ -164,7 +165,7 @@ __ http://packages.python.org/python-novaclient/
 By way of a quick-start::
 
     >>> import novaclient
-    >>> nt = novaclient.OpenStack(USERNAME, API_KEY,PROJECT_ID [, AUTH_URL])
+    >>> nt = novaclient.OpenStack(USERNAME, PASSWORD, PROJECT_ID [, AUTH_URL])
     >>> nt.flavors.list()
     [...]
     >>> nt.servers.list()
diff --git a/docs/api.rst b/docs/api.rst
index 1d46c2fdf..6e2b1002a 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -12,7 +12,7 @@ Usage
 First create an instance of :class:`OpenStack` with your credentials::
 
     >>> from novaclient import OpenStack
-    >>> nova = OpenStack(USERNAME, API_KEY, AUTH_URL)
+    >>> nova = OpenStack(USERNAME, PASSWORD, AUTH_URL)
 
 Then call methods on the :class:`OpenStack` object:
 
diff --git a/docs/shell.rst b/docs/shell.rst
index 70a1ab6db..79d9e1a85 100644
--- a/docs/shell.rst
+++ b/docs/shell.rst
@@ -11,7 +11,7 @@ First, you'll need an OpenStack Nova account and an API key. You get this
 by using the `nova-manage` command in OpenStack Nova.
 
 You'll need to provide :program:`nova` with your OpenStack username and
-API key. You can do this with the :option:`--username`, :option:`--apikey`
+API key. You can do this with the :option:`--username`, :option:`--password`
 and :option:`--projectid` options, but it's easier to just set them as 
 environment variables by setting two environment variables:
 
@@ -19,9 +19,9 @@ environment variables by setting two environment variables:
 
     Your OpenStack Nova username.
 
-.. envvar:: NOVA_API_KEY
+.. envvar:: NOVA_PASSWORD
 
-    Your API key.
+    Your password.
 
 .. envvar:: NOVA_PROJECT_ID
 
@@ -38,7 +38,7 @@ environment variables by setting two environment variables:
 For example, in Bash you'd use::
 
     export NOVA_USERNAME=yourname
-    export NOVA_API_KEY=yadayadayada
+    export NOVA_PASSWORD=yadayadayada
     export NOVA_PROJECT_ID=myproject
     export NOVA_URL=http://...
     export NOVA_VERSION=1.0
diff --git a/novaclient/client.py b/novaclient/client.py
index 2a07e2c4a..2a7a8e2f8 100644
--- a/novaclient/client.py
+++ b/novaclient/client.py
@@ -37,11 +37,11 @@ class HTTPClient(httplib2.Http):
 
     USER_AGENT = 'python-novaclient'
 
-    def __init__(self, user, apikey, projectid, auth_url, insecure=False,
+    def __init__(self, user, password, projectid, auth_url, insecure=False,
                  timeout=None, token=None, region_name=None):
         super(HTTPClient, self).__init__(timeout=timeout)
         self.user = user
-        self.apikey = apikey
+        self.password = password
         self.projectid = projectid
         self.auth_url = auth_url
         self.version = 'v1.0'
@@ -239,7 +239,7 @@ class HTTPClient(httplib2.Http):
             raise NoTokenLookupException()
 
         headers = {'X-Auth-User': self.user,
-                   'X-Auth-Key': self.apikey}
+                   'X-Auth-Key': self.password}
         if self.projectid:
             headers['X-Auth-Project-Id'] = self.projectid
 
@@ -260,7 +260,7 @@ class HTTPClient(httplib2.Http):
         """Authenticate against a v2.0 auth service."""
         body = {"auth": {
                    "passwordCredentials": {"username": self.user,
-                                           "password": self.apikey}}}
+                                           "password": self.password}}}
 
         if self.projectid:
             body['auth']['tenantName'] = self.projectid
diff --git a/novaclient/v1_0/shell.py b/novaclient/v1_0/shell.py
index 6528c6968..438b60d3d 100644
--- a/novaclient/v1_0/shell.py
+++ b/novaclient/v1_0/shell.py
@@ -674,7 +674,8 @@ def do_delete(cs, args):
 @utils.arg('--api_url', dest='api_url', default=None, help='New URL.')
 @utils.arg('--zone_username', dest='zone_username', default=None,
                         help='New zone username.')
-@utils.arg('--password', dest='password', default=None, help='New password.')
+@utils.arg('--zone_password', dest='zone_password', default=None,
+                        help='New password.')
 @utils.arg('--weight_offset', dest='weight_offset', default=None,
                         help='Child Zone weight offset.')
 @utils.arg('--weight_scale', dest='weight_scale', default=None,
@@ -689,8 +690,8 @@ def do_zone(cs, args):
         zone_delta['api_url'] = args.api_url
     if args.zone_username:
         zone_delta['username'] = args.zone_username
-    if args.password:
-        zone_delta['password'] = args.password
+    if args.zone_password:
+        zone_delta['password'] = args.zone_password
     if args.weight_offset:
         zone_delta['weight_offset'] = args.weight_offset
     if args.weight_scale:
@@ -713,7 +714,7 @@ def do_zone_info(cs, args):
 @utils.arg('--zone_username', metavar='<zone_username>',
             help='Optional Authentication username. (Default=None)',
             default=None)
-@utils.arg('--password', metavar='<password>',
+@utils.arg('--zone_password', metavar='<zone_password>',
            help='Authentication password. (Default=None)',
            default=None)
 @utils.arg('--weight_offset', metavar='<weight_offset>',
@@ -725,7 +726,7 @@ def do_zone_info(cs, args):
 def do_zone_add(cs, args):
     """Add a new child zone."""
     zone = cs.zones.create(args.zone_name, args.api_url,
-                           args.zone_username, args.password,
+                           args.zone_username, args.zone_password,
                            args.weight_offset, args.weight_scale)
     utils.print_dict(zone._info)
 
diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py
index d44e16a87..de2e31d5a 100644
--- a/novaclient/v1_1/shell.py
+++ b/novaclient/v1_1/shell.py
@@ -455,15 +455,16 @@ def do_reboot(cs, args):
 
 @utils.arg('server', metavar='<server>', help='Name or ID of server.')
 @utils.arg('image', metavar='<image>', help="Name or ID of new image.")
-@utils.arg('--password', dest='password', metavar='<password>', default=False,
+@utils.arg('--rebuild_password', dest='rebuild_password',
+           metavar='<rebuild_password>', default=False,
            help="Set the provided password on the rebuild instance.")
 def do_rebuild(cs, args):
     """Shutdown, re-image, and re-boot a server."""
     server = _find_server(cs, args.server)
     image = _find_image(cs, args.image)
 
-    if args.password != False:
-        _password = args.password
+    if args.rebuild_password != False:
+        _password = args.rebuild_password
     else:
         _password = None
 
@@ -675,7 +676,8 @@ def _find_flavor(cs, flavor):
 @utils.arg('--api_url', dest='api_url', default=None, help='New URL.')
 @utils.arg('--zone_username', dest='zone_username', default=None,
                         help='New zone username.')
-@utils.arg('--password', dest='password', default=None, help='New password.')
+@utils.arg('--zone_password', dest='zone_password', default=None,
+                        help='New password.')
 @utils.arg('--weight_offset', dest='weight_offset', default=None,
                         help='Child Zone weight offset.')
 @utils.arg('--weight_scale', dest='weight_scale', default=None,
@@ -690,8 +692,8 @@ def do_zone(cs, args):
         zone_delta['api_url'] = args.api_url
     if args.zone_username:
         zone_delta['username'] = args.zone_username
-    if args.password:
-        zone_delta['password'] = args.password
+    if args.zone_password:
+        zone_delta['password'] = args.zone_password
     if args.weight_offset:
         zone_delta['weight_offset'] = args.weight_offset
     if args.weight_scale:
@@ -714,7 +716,7 @@ def do_zone_info(cs, args):
 @utils.arg('--zone_username', metavar='<zone_username>',
             help='Optional Authentication username. (Default=None)',
             default=None)
-@utils.arg('--password', metavar='<password>',
+@utils.arg('--zone_password', metavar='<zone_password>',
            help='Authentication password. (Default=None)',
            default=None)
 @utils.arg('--weight_offset', metavar='<weight_offset>',
@@ -726,7 +728,7 @@ def do_zone_info(cs, args):
 def do_zone_add(cs, args):
     """Add a new child zone."""
     zone = cs.zones.create(args.zone_name, args.api_url,
-                           args.zone_username, args.password,
+                           args.zone_username, args.zone_password,
                            args.weight_offset, args.weight_scale)
     utils.print_dict(zone._info)
 
diff --git a/tests/test_shell.py b/tests/test_shell.py
index 38f8ef3a9..27d8fd367 100644
--- a/tests/test_shell.py
+++ b/tests/test_shell.py
@@ -14,7 +14,7 @@ class ShellTest(utils.TestCase):
         global _old_env
         fake_env = {
             'NOVA_USERNAME': 'username',
-            'NOVA_API_KEY': 'password',
+            'NOVA_PASSWORD': 'password',
             'NOVA_PROJECT_ID': 'project_id',
             'NOVA_URL': 'http://no.where',
         }
diff --git a/tests/v1_0/fakes.py b/tests/v1_0/fakes.py
index 7646a2d05..3659610c5 100644
--- a/tests/v1_0/fakes.py
+++ b/tests/v1_0/fakes.py
@@ -18,7 +18,7 @@ class FakeClient(fakes.FakeClient, client.Client):
 class FakeHTTPClient(base_client.HTTPClient):
     def __init__(self, **kwargs):
         self.username = 'username'
-        self.apikey = 'apikey'
+        self.password = 'password'
         self.auth_url = 'auth_url'
         self.callstack = []
 
diff --git a/tests/v1_0/test_shell.py b/tests/v1_0/test_shell.py
index d97bbc4b0..01afdb705 100644
--- a/tests/v1_0/test_shell.py
+++ b/tests/v1_0/test_shell.py
@@ -14,7 +14,7 @@ class ShellTest(utils.TestCase):
         self.old_environment = os.environ.copy()
         os.environ = {
             'NOVA_USERNAME': 'username',
-            'NOVA_API_KEY': 'password',
+            'NOVA_PASSWORD': 'password',
             'NOVA_PROJECT_ID': 'project_id',
             'NOVA_VERSION': '1.0',
         }
@@ -304,7 +304,7 @@ class ShellTest(utils.TestCase):
         self.assert_called('GET', '/zones/1')
 
         self.run_command('zone 1 --api_url=http://zzz '
-                         '--zone_username=frank --password=xxx')
+                         '--zone_username=frank --zone_password=xxx')
         self.assert_called(
             'PUT', '/zones/1',
             {'zone': {'username': 'frank', 'password': 'xxx',
@@ -313,7 +313,7 @@ class ShellTest(utils.TestCase):
 
     def test_zone_add(self):
         self.run_command('zone-add child_zone http://zzz '
-                         '--zone_username=frank --password=xxx '
+                         '--zone_username=frank --zone_password=xxx '
                          '--weight_offset=0.0 --weight_scale=1.0')
         self.assert_called(
             'POST', '/zones',
diff --git a/tests/v1_1/fakes.py b/tests/v1_1/fakes.py
index a1554fe0d..1638de3d0 100644
--- a/tests/v1_1/fakes.py
+++ b/tests/v1_1/fakes.py
@@ -8,7 +8,7 @@ from tests import fakes
 class FakeClient(fakes.FakeClient, client.Client):
 
     def __init__(self, *args, **kwargs):
-        client.Client.__init__(self, 'username', 'apikey',
+        client.Client.__init__(self, 'username', 'password',
                                'project_id', 'auth_url')
         self.client = FakeHTTPClient(**kwargs)
 
@@ -17,7 +17,7 @@ class FakeHTTPClient(base_client.HTTPClient):
 
     def __init__(self, **kwargs):
         self.username = 'username'
-        self.apikey = 'apikey'
+        self.password = 'password'
         self.auth_url = 'auth_url'
         self.callstack = []
 
@@ -324,7 +324,7 @@ class FakeHTTPClient(base_client.HTTPClient):
         ]})
 
     def get_os_floating_ips_1(self, **kw):
-        return (200, {'floating_ip': 
+        return (200, {'floating_ip':
             {'id': 1, 'fixed_ip': '10.0.0.1', 'ip': '11.0.0.1'}
         })
 
diff --git a/tests/v1_1/test_auth.py b/tests/v1_1/test_auth.py
index 9be2ce365..0e20f500f 100644
--- a/tests/v1_1/test_auth.py
+++ b/tests/v1_1/test_auth.py
@@ -19,7 +19,7 @@ def to_http_response(resp_dict):
 
 class AuthenticateAgainstKeystoneTests(utils.TestCase):
     def test_authenticate_success(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url/v2.0")
+        cs = client.Client("username", "password", "project_id", "auth_url/v2.0")
         resp = {"access":
                     {"token": {"expires": "12345", "id": "FAKE_ID"},
                      "serviceCatalog": [
@@ -44,7 +44,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
                        'Content-Type': 'application/json', }
             body = {'auth': {
                         'passwordCredentials': {'username': cs.client.user,
-                                                'password': cs.client.apikey},
+                                                'password': cs.client.password},
                         'tenantName': cs.client.projectid, }}
 
             token_url = urlparse.urljoin(cs.client.auth_url, "tokens")
@@ -60,7 +60,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
         test_auth_call()
 
     def test_authenticate_failure(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url/v2.0")
+        cs = client.Client("username", "password", "project_id", "auth_url/v2.0")
         resp = {"unauthorized": {"message": "Unauthorized", "code": "401"}}
         auth_response = httplib2.Response({
             "status": 401,
@@ -77,7 +77,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
         test_auth_call()
 
     def test_auth_redirect(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url/v1.0")
+        cs = client.Client("username", "password", "project_id", "auth_url/v1.0")
         dict_correct_response = {"access": {"token": {"expires": "12345", "id": "FAKE_ID"},
                          "serviceCatalog": [{
                             "type": "compute",
@@ -116,7 +116,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
                        'Content-Type': 'application/json',}
             body = {'auth': {
                             'passwordCredentials': {'username': cs.client.user,
-                                                    'password': cs.client.apikey},
+                                                    'password': cs.client.password},
                             'tenantName': cs.client.projectid,}}
 
             token_url = urlparse.urljoin(cs.client.auth_url, "tokens")
@@ -135,7 +135,7 @@ class AuthenticateAgainstKeystoneTests(utils.TestCase):
 
 class AuthenticationTests(utils.TestCase):
     def test_authenticate_success(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url")
+        cs = client.Client("username", "password", "project_id", "auth_url")
         management_url = 'https://servers.api.rackspacecloud.com/v1.1/443470'
         auth_response = httplib2.Response({
             'status': 204,
@@ -149,7 +149,7 @@ class AuthenticationTests(utils.TestCase):
             cs.client.authenticate()
             headers = {
                 'X-Auth-User': 'username',
-                'X-Auth-Key': 'apikey',
+                'X-Auth-Key': 'password',
                 'X-Auth-Project-Id': 'project_id',
                 'User-Agent': cs.client.USER_AGENT
             }
@@ -163,7 +163,7 @@ class AuthenticationTests(utils.TestCase):
         test_auth_call()
 
     def test_authenticate_failure(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url")
+        cs = client.Client("username", "password", "project_id", "auth_url")
         auth_response = httplib2.Response({'status': 401})
         mock_request = mock.Mock(return_value=(auth_response, None))
 
@@ -174,7 +174,7 @@ class AuthenticationTests(utils.TestCase):
         test_auth_call()
 
     def test_auth_automatic(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url")
+        cs = client.Client("username", "password", "project_id", "auth_url")
         http_client = cs.client
         http_client.management_url = ''
         mock_request = mock.Mock(return_value=(None, None))
@@ -189,7 +189,7 @@ class AuthenticationTests(utils.TestCase):
         test_auth_call()
 
     def test_auth_manual(self):
-        cs = client.Client("username", "apikey", "project_id", "auth_url")
+        cs = client.Client("username", "password", "project_id", "auth_url")
 
         @mock.patch.object(cs.client, 'authenticate')
         def test_auth_call(m):
diff --git a/tests/v1_1/test_shell.py b/tests/v1_1/test_shell.py
index 33d28a5a5..70c3b5a19 100644
--- a/tests/v1_1/test_shell.py
+++ b/tests/v1_1/test_shell.py
@@ -17,7 +17,7 @@ class ShellTest(utils.TestCase):
         self.old_environment = os.environ.copy()
         os.environ = {
             'NOVA_USERNAME': 'username',
-            'NOVA_API_KEY': 'password',
+            'NOVA_PASSWORD': 'password',
             'NOVA_PROJECT_ID': 'project_id',
             'NOVA_VERSION': '1.1',
             'NOVA_URL': 'http://no.where',
@@ -228,7 +228,7 @@ class ShellTest(utils.TestCase):
         #                   {'rebuild': {'imageRef': 1}})
         self.assert_called('GET', '/images/2')
 
-        self.run_command('rebuild sample-server 1 --password asdf')
+        self.run_command('rebuild sample-server 1 --rebuild_password asdf')
         # XXX need a way to test multiple calls
         #self.assert_called('POST', '/servers/1234/action',
         #                   {'rebuild': {'imageRef': 1, 'adminPass': 'asdf'}})
@@ -267,7 +267,7 @@ class ShellTest(utils.TestCase):
         self.assert_called('GET', '/images/2')
 
     def test_show_bad_id(self):
-        self.assertRaises(exceptions.CommandError, 
+        self.assertRaises(exceptions.CommandError,
                           self.run_command, 'show xxx')
 
     def test_delete(self):