diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 6f0f752..2965f3c 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -58,6 +58,16 @@
 STACK_QUERY_PARAMETERS = ['trace', 'fields', 'pp', 'prettyPrint', 'userIp',
   'userip', 'strict']
 
+RESERVED_WORDS = [ 'and', 'assert', 'break', 'class', 'continue', 'def', 'del',
+                  'elif', 'else', 'except', 'exec', 'finally', 'for', 'from',
+                  'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or',
+                  'pass', 'print', 'raise', 'return', 'try', 'while' ]
+
+def _fix_method_name(name):
+  if name in RESERVED_WORDS:
+    return name + '_'
+  else:
+    return name
 
 def _write_headers(self):
   # Utility no-op method for multipart media handling
@@ -260,6 +270,7 @@
       self._requestBuilder = requestBuilder
 
   def createMethod(theclass, methodName, methodDesc, futureDesc):
+    methodName = _fix_method_name(methodName)
     pathUrl = methodDesc['path']
     httpMethod = methodDesc['httpMethod']
     methodId = methodDesc['id']
@@ -463,6 +474,7 @@
     setattr(theclass, methodName, method)
 
   def createNextMethod(theclass, methodName, methodDesc, futureDesc):
+    methodName = _fix_method_name(methodName)
     methodId = methodDesc['id'] + '.next'
 
     def methodNext(self, previous):
@@ -520,6 +532,7 @@
   if 'resources' in resourceDesc:
 
     def createResourceMethod(theclass, methodName, methodDesc, futureDesc):
+      methodName = _fix_method_name(methodName)
 
       def methodResource(self):
         return createResource(self._http, self._baseUrl, self._model,
diff --git a/setup_oauth2client.py b/setup_oauth2client.py
new file mode 100644
index 0000000..ec87873
--- /dev/null
+++ b/setup_oauth2client.py
@@ -0,0 +1,73 @@
+# Copyright (C) 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Setup script for oauth2client.
+
+Also installs included versions of third party libraries, if those libraries
+are not already installed.
+"""
+import setup_utils
+
+has_setuptools = False
+try:
+  from setuptools import setup
+  has_setuptools = True
+except ImportError:
+  from distutils.core import setup
+
+packages = [
+  'oauth2client',
+]
+
+install_requires = []
+py_modules = []
+
+
+# (module to test for, install_requires to add if missing, packages to add if missing, py_modules to add if missing)
+REQUIREMENTS = [
+  ('httplib2', 'httplib2', 'httplib2', None),
+  ('gflags', 'python-gflags', None, ['gflags', 'gflags_validators']),
+  (['json', 'simplejson', 'django.utils'], 'simplejson', 'simplejson', None)
+]
+
+for import_name, requires, package, modules in REQUIREMENTS:
+  if setup_utils.is_missing(import_name):
+    if has_setuptools:
+      install_requires.append(requires)
+    else:
+      if package is not None:
+        packages.append(package)
+      else:
+        py_modules.extend(modules)
+
+
+long_desc = """The oauth2client is a client library for OAuth 2.0."""
+
+setup(name="oauth2client",
+      version="1.0beta2",
+      description="OAuth 2.0 client library",
+      long_description=long_desc,
+      author="Joe Gregorio",
+      author_email="jcgregorio@google.com",
+      url="http://code.google.com/p/google-api-python-client/",
+      install_requires=install_requires,
+      packages=packages,
+      py_modules=py_modules,
+      license="Apache 2.0",
+      keywords="google oauth 2.0 http client",
+      classifiers=['Development Status :: 4 - Beta',
+                   'Intended Audience :: Developers',
+                   'License :: OSI Approved :: Apache Software License',
+                   'Operating System :: POSIX',
+                   'Topic :: Internet :: WWW/HTTP'])
diff --git a/tests/data/zoo.json b/tests/data/zoo.json
index 9314928..1475704 100644
--- a/tests/data/zoo.json
+++ b/tests/data/zoo.json
@@ -190,6 +190,25 @@
     }
    }
   },
+  "global": {
+   "resources": {
+    "print": {
+     "methods": {
+      "assert": {
+       "path": "global/print/assert",
+       "id": "zoo.animals.mine",
+       "httpMethod": "GET",
+       "parameters": {
+        "max-results": {
+          "location": "query",
+          "required": false
+        }
+       }
+      }
+     }
+    }
+   }
+  },
   "animals": {
    "methods": {
     "crossbreed": {
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index f8c45c1..06bbbb8 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -188,6 +188,14 @@
     q = parse_qs(parsed[4])
     self.assertEqual(q['max-results'], ['5'])
 
+  def test_methods_with_reserved_names(self):
+    self.http = HttpMock(datafile('zoo.json'), {'status': '200'})
+    zoo = build('zoo', 'v1', self.http)
+    self.assertTrue(getattr(zoo, 'animals'))
+    request = zoo.global_().print_().assert_(max_results="5")
+    parsed = urlparse.urlparse(request.uri)
+    self.assertEqual(parsed[2], '/zoo/global/print/assert')
+
   def test_top_level_functions(self):
     self.http = HttpMock(datafile('zoo.json'), {'status': '200'})
     zoo = build('zoo', 'v1', self.http)
