diff --git a/Makefile b/Makefile
index 0c2eeaa..e88e4d1 100644
--- a/Makefile
+++ b/Makefile
@@ -14,9 +14,11 @@
 	python2.4 runtests.py tests --exit_on_failure
 	python2.6 runtests.py tests --exit_on_failure
 	python2.7 runtests.py tests --exit_on_failure
-	-rm -rf dist/*
-	python setup.py clean
-	python setup.py sdist --formats=gztar,zip
+	-sudo rm -rf dist/
+	-sudo rm -rf snapshot/
+	python expand-symlinks.py
+	cd snapshot; python setup.py clean
+	cd snapshot; python setup.py sdist --formats=gztar,zip
 
 .PHONY: release
 release: prerelease
@@ -24,7 +26,7 @@
 	@echo "Are you sure you want to proceed? (yes/no)"
 	@read yn; [ "yes" == $$yn ]
 	@echo "Here we go..."
-	python setup.py sdist --formats=gztar,zip register upload
+	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 dist/*.tar.gz
-	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client dist/*.zip
+	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/bin/enable-app-engine-project b/bin/enable-app-engine-project
old mode 100644
new mode 100755
index 07dfb7b..8a53ec2
--- a/bin/enable-app-engine-project
+++ b/bin/enable-app-engine-project
@@ -16,9 +16,12 @@
 
 """Copy the sources for google-api-python-client into an App Engine project.
 
-Copies, or symbolically links the sources of the google-api-python-client
+Copies the sources of the google-api-python-client
 library into a Google App Engine project. This is necessary so that the
 source can be uploaded when the application is deployed.
+
+  $ enable-app-engine-project [flags] directory
+
 """
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
@@ -53,6 +56,15 @@
 gflags.DEFINE_boolean('dry_run', 'False', 'Don\'t actually do anything.')
 
 def find_source(module):
+  """Find the absolute path for the source of a module.
+
+  Args:
+    module: str, Name of the module.
+  Returns:
+    A tuple of (isdir, location), a boolean indicating if it
+    is a directory (True) or a single file module (False), and
+    the absolute path of the source.
+  """
   isdir = False
   location = ''
   m = __import__(module)
@@ -71,7 +83,11 @@
   try:
     argv = FLAGS(argv)
   except gflags.FlagsError, e:
-    print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
+    print '%s\nUsage: %s ARGS\n%s' % (e, argv[0], FLAGS)
+    sys.exit(1)
+
+  if len(argv) == 1:
+    print 'Usage: %s ARGS\n%s' % (argv[0], FLAGS)
     sys.exit(1)
 
   # Set the logging according to the command-line flag
@@ -82,7 +98,7 @@
     # Check if the supplied directory is an App Engine project by looking
     # for an app.yaml
     if not os.path.isfile(os.path.join(dir, 'app.yaml')):
-      sys.exit('The given directory is not a Google App Engine project: %s', dir)
+      sys.exit('The given directory is not a Google App Engine project: %s' % dir)
 
 
     # Build up the set of file or directory copying actions we need to do
@@ -105,10 +121,10 @@
         if isdir:
           results = copy_tree(src, dst, FLAGS.dry_run)
           for filename in results:
-            logging.info('Copied to: %s' % filename)
+            print 'Copied: %s' % filename
         else:
           filename, copied = copy_file(src, dst, FLAGS.dry_run)
-          logging.info('Copied to: %s Successfully: %s' % (filename, copied))
+          print 'Copied: %s Successfully: %s' % (filename, copied)
     except DistutilsFileError, e:
       sys.exit(str(e))
 
diff --git a/expand-symlinks.py b/expand-symlinks.py
new file mode 100644
index 0000000..29535d6
--- /dev/null
+++ b/expand-symlinks.py
@@ -0,0 +1,3 @@
+from distutils.dir_util import copy_tree
+
+copy_tree('.', 'snapshot', verbose=True)
diff --git a/samples/appengine/oauth2client b/samples/appengine/oauth2client
new file mode 120000
index 0000000..9013119
--- /dev/null
+++ b/samples/appengine/oauth2client
@@ -0,0 +1 @@
+../../oauth2client/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/apiclient b/samples/oauth2/appengine/apiclient
deleted file mode 120000
index f53af07..0000000
--- a/samples/oauth2/appengine/apiclient
+++ /dev/null
@@ -1 +0,0 @@
-../../../apiclient/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/app.yaml b/samples/oauth2/appengine/app.yaml
deleted file mode 100644
index 03bdf81..0000000
--- a/samples/oauth2/appengine/app.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-application: m-buzz
-version: 1
-runtime: python
-api_version: 1
-
-handlers:
-- url: /static
-  static_dir: static
-
-- url: /google8f1adb368b7bd14c.html
-  upload: google8f1adb368b7bd14c.html
-  static_files: static/google8f1adb368b7bd14c.html
-
-- url: .*
-  script: main.py
-
diff --git a/samples/oauth2/appengine/gflags.py b/samples/oauth2/appengine/gflags.py
deleted file mode 120000
index 157177e..0000000
--- a/samples/oauth2/appengine/gflags.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../gflags.py
\ No newline at end of file
diff --git a/samples/oauth2/appengine/gflags_validators.py b/samples/oauth2/appengine/gflags_validators.py
deleted file mode 120000
index 9d359e0..0000000
--- a/samples/oauth2/appengine/gflags_validators.py
+++ /dev/null
@@ -1 +0,0 @@
-../../../gflags_validators.py
\ No newline at end of file
diff --git a/samples/oauth2/appengine/httplib2 b/samples/oauth2/appengine/httplib2
deleted file mode 120000
index 69b02ef..0000000
--- a/samples/oauth2/appengine/httplib2
+++ /dev/null
@@ -1 +0,0 @@
-../../../httplib2/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/index.yaml b/samples/oauth2/appengine/index.yaml
deleted file mode 100644
index a3b9e05..0000000
--- a/samples/oauth2/appengine/index.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-indexes:
-
-# AUTOGENERATED
-
-# This index.yaml is automatically updated whenever the dev_appserver
-# detects that a new type of query is run.  If you want to manage the
-# index.yaml file manually, remove the above marker line (the line
-# saying "# AUTOGENERATED").  If you want to manage some indexes
-# manually, move them above the marker line.  The index.yaml file is
-# automatically uploaded to the admin console when you next deploy
-# your application using appcfg.py.
diff --git a/samples/oauth2/appengine/main.py b/samples/oauth2/appengine/main.py
deleted file mode 100644
index 087a136..0000000
--- a/samples/oauth2/appengine/main.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2007 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.
-#
-
-__author__ = 'jcgregorio@google.com (Joe Gregorio)'
-
-
-import httplib2
-import logging
-import os
-import pickle
-
-from apiclient.discovery import build
-from oauth2client.appengine import CredentialsProperty
-from oauth2client.appengine import StorageByKeyName
-from oauth2client.client import OAuth2WebServerFlow
-from google.appengine.api import memcache
-from google.appengine.api import users
-from google.appengine.ext import db
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-from google.appengine.ext.webapp import util
-from google.appengine.ext.webapp.util import login_required
-
-
-class Credentials(db.Model):
-  credentials = CredentialsProperty()
-
-
-class MainHandler(webapp.RequestHandler):
-
-  @login_required
-  def get(self):
-    user = users.get_current_user()
-    credentials = StorageByKeyName(
-        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))
-      self.redirect(authorize_url)
-    else:
-      http = httplib2.Http()
-      http = credentials.authorize(http)
-      service = build("buzz", "v1", http=http)
-      activities = service.activities()
-      activitylist = activities.list(scope='@consumption',
-                                     userId='@me').execute()
-      path = os.path.join(os.path.dirname(__file__), 'welcome.html')
-      logout = users.create_logout_url('/')
-      self.response.out.write(
-          template.render(
-              path, {'activitylist': activitylist,
-                     'logout': logout
-                     }))
-
-
-class OAuthHandler(webapp.RequestHandler):
-
-  @login_required
-  def get(self):
-    user = users.get_current_user()
-    flow = pickle.loads(memcache.get(user.user_id()))
-    if flow:
-      credentials = flow.step2_exchange(self.request.params)
-      StorageByKeyName(
-          Credentials, user.user_id(), 'credentials').put(credentials)
-      self.redirect("/")
-    else:
-      pass
-
-
-def main():
-  application = webapp.WSGIApplication(
-      [
-      ('/', MainHandler),
-      ('/auth_return', OAuthHandler)
-      ],
-      debug=True)
-  util.run_wsgi_app(application)
-
-
-if __name__ == '__main__':
-  main()
diff --git a/samples/oauth2/appengine/oauth2client b/samples/oauth2/appengine/oauth2client
deleted file mode 120000
index 0a1ec33..0000000
--- a/samples/oauth2/appengine/oauth2client
+++ /dev/null
@@ -1 +0,0 @@
-../../../oauth2client/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/simplejson b/samples/oauth2/appengine/simplejson
deleted file mode 120000
index eeaa2f0..0000000
--- a/samples/oauth2/appengine/simplejson
+++ /dev/null
@@ -1 +0,0 @@
-../../../simplejson/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/uritemplate b/samples/oauth2/appengine/uritemplate
deleted file mode 120000
index 5952908..0000000
--- a/samples/oauth2/appengine/uritemplate
+++ /dev/null
@@ -1 +0,0 @@
-../../../uritemplate/
\ No newline at end of file
diff --git a/samples/oauth2/appengine/welcome.html b/samples/oauth2/appengine/welcome.html
deleted file mode 100644
index da40a16..0000000
--- a/samples/oauth2/appengine/welcome.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<html>
-  <head>
-    <title>Buzz Stuff</title>
-    <style type=text/css>
-      td  { vertical-align: top; padding: 0.5em }
-      img { border:0 }
-    </style>
-  </head>
-  <body>
-    <p><a href="{{ logout }}">Logout</a></p>
-      <table border=0>
-      {% for item in activitylist.items %}
-      <tr valign=top>
-        <td>
-          <a href="{{ item.actor.profileUrl }}"><img
-            src="{{ item.actor.thumbnailUrl }}"></a><br>
-          <a href="{{ item.actor.profileUrl }}">{{ item.actor.name }}</a></td>
-      <td>
-        {{ item.object.content }}
-        </td>
-        <td>
-          <a href="{{ item.object.links.alternate.0.href }}"><img
-            src="/static/go.png"></a>
-        </td>
-      </tr>
-      {% endfor %}
-      </table>
-  </body>
-</html>
