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:
