diff --git a/MANIFEST_oauth2client.in b/MANIFEST_oauth2client.in
new file mode 100644
index 0000000..1e189f3
--- /dev/null
+++ b/MANIFEST_oauth2client.in
@@ -0,0 +1,7 @@
+recursive-include httplib2 *.py
+recursive-include simplejson *.py *.c
+recursive-include samples *.py *.png *.html *.yaml *.json
+include setup_utils.py
+include gflags.py
+include gflags_validators.py
+include README
diff --git a/Makefile b/Makefile
index e88e4d1..6c08a9a 100644
--- a/Makefile
+++ b/Makefile
@@ -30,3 +30,32 @@
 	wget "http://support.googlecode.com/svn/trunk/scripts/googlecode_upload.py" -O googlecode_upload.py
 	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
 	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
+
+
+.PHONY: oauth2_prerelease
+oauth2_prerelease:
+	-sudo rm -rf dist/
+	-sudo rm -rf snapshot/
+	mkdir snapshot
+	python expand-symlinks.py --source=oauth2client --dest=snapshot/oauth2client
+	python expand-symlinks.py --source=samples/oauth2/dailymotion --dest=snapshot/samples/dailymotion
+	python expand-symlinks.py --source=samples/appengine_with_decorator --dest=snapshot/samples/appengine_with_decorator
+	python expand-symlinks.py --source=samples/appengine_with_decorator2 --dest=snapshot/samples/appengine_with_decorator2
+	python expand-symlinks.py --source=samples/appengine --dest=snapshot/samples/appengine
+	cp setup_oauth2client.py snapshot/setup.py
+	cp setup_utils.py snapshot/setup_utils.py
+	cp MANIFEST_oauth2client.in snapshot/MANIFEST.in
+	cp README_oauth2client snapshot/README
+	cd snapshot; python setup.py clean
+	cd snapshot; python setup.py sdist --formats=gztar,zip
+
+.PHONY: oauth2_release
+oauth2_release: oauth2_prerelease
+	@echo "This target will upload a new release to PyPi and code.google.com hosting."
+	@echo "Are you sure you want to proceed? (yes/no)"
+	@read yn; [ "yes" == $$yn ]
+	@echo "Here we go..."
+	cd snapshot; python setup.py sdist --formats=gztar,zip register upload
+	wget "http://support.googlecode.com/svn/trunk/scripts/googlecode_upload.py" -O googlecode_upload.py
+	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
+	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
diff --git a/README_oauth2client b/README_oauth2client
new file mode 100644
index 0000000..857613b
--- /dev/null
+++ b/README_oauth2client
@@ -0,0 +1,31 @@
+This is a client library for accessing resources protected by OAuth 2.0.
+
+
+Installation
+============
+
+To install, simply say
+
+   $ python setup.py install
+
+If you want to do a "mock install" and simply extend your PYTHONPATH
+for the current shell to include this folder and the packages in it, do
+
+   $ source setpath.sh
+
+from the root of the project directory.
+
+
+
+Third Party Libraries
+=====================
+
+These libraries will be installed when you install the client library:
+
+http://code.google.com/p/httplib2
+http://code.google.com/p/python-gflags
+
+Depending on your version of Python, these libraries may also be installed:
+
+http://pypi.python.org/pypi/simplejson/
+
diff --git a/expand-symlinks.py b/expand-symlinks.py
index 29535d6..73d2bdd 100644
--- a/expand-symlinks.py
+++ b/expand-symlinks.py
@@ -1,3 +1,45 @@
+#!/usr/bin/python2.4
+# -*- coding: utf-8 -*-
+#
+# 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.
+
+"""Copy files from source to dest expanding symlinks along the way.
+"""
+
 from distutils.dir_util import copy_tree
 
-copy_tree('.', 'snapshot', verbose=True)
+import gflags
+import sys
+
+
+FLAGS = gflags.FLAGS
+
+gflags.DEFINE_string('source', '.', 'Directory name to copy from.')
+gflags.DEFINE_string('dest', 'snapshot', 'Directory name to copy to.')
+
+
+def main(argv):
+  # Let the gflags module process the command-line arguments
+  try:
+    argv = FLAGS(argv)
+  except gflags.FlagsError, e:
+    print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
+    sys.exit(1)
+
+  copy_tree(FLAGS.source, FLAGS.dest, verbose=True)
+
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/samples/appengine/main.py b/samples/appengine/main.py
index 087a136..184f5fa 100755
--- a/samples/appengine/main.py
+++ b/samples/appengine/main.py
@@ -36,6 +36,16 @@
 from google.appengine.ext.webapp.util import login_required
 
 
+FLOW = OAuth2WebServerFlow(
+    # Visit https://code.google.com/apis/console to
+    # generate your client_id, client_secret and to
+    # register your redirect_uri.
+    client_id='<YOUR CLIENT ID HERE>',
+    client_secret='<YOUR CLIENT SECRET HERE>',
+    scope='https://www.googleapis.com/auth/buzz',
+    user_agent='buzz-cmdline-sample/1.0')
+
+
 class Credentials(db.Model):
   credentials = CredentialsProperty()
 
@@ -49,20 +59,9 @@
         Credentials, user.user_id(), 'credentials').get()
 
     if credentials is None or credentials.invalid == True:
-      flow = OAuth2WebServerFlow(
-          # Visit https://code.google.com/apis/console to
-          # generate your client_id, client_secret and to
-          # register your redirect_uri.
-          client_id='<YOUR CLIENT ID HERE>',
-          client_secret='<YOUR CLIENT SECRET HERE>',
-          scope='https://www.googleapis.com/auth/buzz',
-          user_agent='buzz-cmdline-sample/1.0',
-          domain='anonymous',
-          xoauth_displayname='Google App Engine Example App')
-
-      callback = self.request.relative_url('/auth_return')
-      authorize_url = flow.step1_get_authorize_url(callback)
-      memcache.set(user.user_id(), pickle.dumps(flow))
+      callback = self.request.relative_url('/oauth2callback')
+      authorize_url = FLOW.step1_get_authorize_url(callback)
+      memcache.set(user.user_id(), pickle.dumps(FLOW))
       self.redirect(authorize_url)
     else:
       http = httplib2.Http()
@@ -99,7 +98,7 @@
   application = webapp.WSGIApplication(
       [
       ('/', MainHandler),
-      ('/auth_return', OAuthHandler)
+      ('/oauth2callback', OAuthHandler)
       ],
       debug=True)
   util.run_wsgi_app(application)
diff --git a/samples/oauth2/dailymotion/apiclient b/samples/oauth2/dailymotion/apiclient
deleted file mode 120000
index f53af07..0000000
--- a/samples/oauth2/dailymotion/apiclient
+++ /dev/null
@@ -1 +0,0 @@
-../../../apiclient/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/main.py b/samples/oauth2/dailymotion/main.py
index c904e3b..1b75239 100644
--- a/samples/oauth2/dailymotion/main.py
+++ b/samples/oauth2/dailymotion/main.py
@@ -23,7 +23,6 @@
 import os
 import pickle
 
-from apiclient.discovery import build
 from oauth2client.appengine import CredentialsProperty
 from oauth2client.appengine import StorageByKeyName
 from oauth2client.client import OAuth2WebServerFlow
@@ -36,6 +35,16 @@
 from google.appengine.ext.webapp.util import login_required
 
 
+FLOW = OAuth2WebServerFlow(
+    client_id='2ad565600216d25d9cde',
+    client_secret='03b56df2949a520be6049ff98b89813f17b467dc',
+    scope='read',
+    user_agent='oauth2client-sample/1.0',
+    auth_uri='https://api.dailymotion.com/oauth/authorize',
+    token_uri='https://api.dailymotion.com/oauth/token'
+    )
+
+
 class Credentials(db.Model):
   credentials = CredentialsProperty()
 
@@ -49,37 +58,23 @@
         Credentials, user.user_id(), 'credentials').get()
 
     if credentials is None or credentials.invalid == True:
-      flow = OAuth2WebServerFlow(
-          client_id='2ad565600216d25d9cde',
-          client_secret='03b56df2949a520be6049ff98b89813f17b467dc',
-          scope='read',
-          user_agent='oauth2client-sample/1.0',
-          auth_uri='https://api.dailymotion.com/oauth/authorize',
-          token_uri='https://api.dailymotion.com/oauth/token'
-          )
-
       callback = self.request.relative_url('/auth_return')
-      authorize_url = flow.step1_get_authorize_url(callback)
-      memcache.set(user.user_id(), pickle.dumps(flow))
+      authorize_url = FLOW.step1_get_authorize_url(callback)
+      memcache.set(user.user_id(), pickle.dumps(FLOW))
       self.redirect(authorize_url)
     else:
       http = httplib2.Http()
-
-      resp, content1 = http.request('https://api.dailymotion.com/me?access_token=%s' %
-                   credentials.access_token)
-
       http = credentials.authorize(http)
-      resp, content2 = http.request('https://api.dailymotion.com/me')
+
+      resp, content = http.request('https://api.dailymotion.com/me')
 
       path = os.path.join(os.path.dirname(__file__), 'welcome.html')
       logout = users.create_logout_url('/')
-      self.response.out.write(
-          template.render(
-              path, {
-                  'content1': content1,
-                  'content2': content2,
-                  'logout': logout
-                  }))
+      variables = {
+          'content': content,
+          'logout': logout
+          }
+      self.response.out.write(template.render(path, variables))
 
 
 class OAuthHandler(webapp.RequestHandler):
diff --git a/samples/oauth2/dailymotion/welcome.html b/samples/oauth2/dailymotion/welcome.html
index 06fcb95..f86902f 100644
--- a/samples/oauth2/dailymotion/welcome.html
+++ b/samples/oauth2/dailymotion/welcome.html
@@ -8,9 +8,7 @@
   </head>
   <body>
     <p><a href="{{ logout }}">Logout</a></p>
-    <h2>First request with access_token in query parameter:</h2>
-    <pre>{{ content1 }} </pre>
-    <h2>Second request with access_token in header:</h2>
-    <pre>{{ content2 }} </pre>
+    <h2>Response body:</h2>
+    <pre>{{ content }} </pre>
   </body>
 </html>
diff --git a/samples/oauth2/django_sample/buzz/views.py b/samples/oauth2/django_sample/buzz/views.py
index c942aaf..9a051ea 100644
--- a/samples/oauth2/django_sample/buzz/views.py
+++ b/samples/oauth2/django_sample/buzz/views.py
@@ -16,22 +16,21 @@
 from django.shortcuts import render_to_response
 
 STEP2_URI = 'http://localhost:8000/auth_return'
-
+FLOW = OAuth2WebServerFlow(
+    client_id='837647042410.apps.googleusercontent.com',
+    client_secret='+SWwMCL9d8gWtzPRa1lXw5R8',
+    scope='https://www.googleapis.com/auth/buzz',
+    user_agent='buzz-django-sample/1.0',
+    )
 
 @login_required
 def index(request):
   storage = Storage(CredentialsModel, 'id', request.user, 'credential')
   credential = storage.get()
   if credential is None or credential.invalid == True:
-    flow = OAuth2WebServerFlow(
-        client_id='837647042410.apps.googleusercontent.com',
-        client_secret='+SWwMCL9d8gWtzPRa1lXw5R8',
-        scope='https://www.googleapis.com/auth/buzz',
-        user_agent='buzz-django-sample/1.0',
-        )
 
-    authorize_url = flow.step1_get_authorize_url(STEP2_URI)
-    f = FlowModel(id=request.user, flow=flow)
+    authorize_url = FLOW.step1_get_authorize_url(STEP2_URI)
+    f = FlowModel(id=request.user, flow=FLOW)
     f.save()
     return HttpResponseRedirect(authorize_url)
   else:
diff --git a/setpath.sh b/setpath.sh
index 45826d6..8fb8f1b 100644
--- a/setpath.sh
+++ b/setpath.sh
@@ -1 +1 @@
-export PYTHONPATH=`pwd`:$PYTHONPATH
+export PYTHONPATH=`pwd`:${PYTHONPATH}
diff --git a/setup.py b/setup.py
index 58827dc..db17fcb 100644
--- a/setup.py
+++ b/setup.py
@@ -79,7 +79,7 @@
       scripts=['bin/enable-app-engine-project'],
       license="Apache 2.0",
       keywords="google api client",
-      classifiers=['Development Status :: 3 - Alpha',
+      classifiers=['Development Status :: 4 - Beta',
                    'Intended Audience :: Developers',
                    'License :: OSI Approved :: Apache Software License',
                    'Operating System :: POSIX',
