diff --git a/apiclient/contrib/buzz/future.json b/apiclient/contrib/buzz/future.json
index 88abf31..ed6f0f9 100644
--- a/apiclient/contrib/buzz/future.json
+++ b/apiclient/contrib/buzz/future.json
@@ -112,7 +112,12 @@
             "methods": {
               "delete": {}, 
               "get": {}, 
-              "liked": {}, 
+              "liked": {
+                "next": {
+                  "type": "uri",
+                  "location": ["links", "next", 0, "href"]
+                }
+              },
               "list": {}, 
               "relatedToUri": {}, 
               "reshared": {}, 
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index bb5c305..0b441b1 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -28,6 +28,10 @@
 import uritemplate
 import urllib
 import urlparse
+try:
+    from urlparse import parse_qsl
+except ImportError:
+    from cgi import parse_qsl
 from apiclient.http import HttpRequest
 
 try: # pragma: no cover
@@ -273,7 +277,7 @@
 
       if self._developerKey:
         parsed = list(urlparse.urlparse(url))
-        q = urlparse.parse_qsl(parsed[4])
+        q = parse_qsl(parsed[4])
         q.append(('key', self._developerKey))
         parsed[4] = urllib.urlencode(q)
         url = urlparse.urlunparse(parsed)
diff --git a/buzz_gae_client.py b/buzz_gae_client.py
index 544655e..ffc74c3 100644
--- a/buzz_gae_client.py
+++ b/buzz_gae_client.py
@@ -36,6 +36,7 @@
 AUTHORIZE_URL = 'https://www.google.com/buzz/api/auth/OAuthAuthorizeToken?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
 ACCESS_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetAccessToken'
 
+# TODO(ade) This class is really a BuzzGaeBuilder. Rename it.
 class BuzzGaeClient(object):
   def __init__(self, consumer_key='anonymous', consumer_secret='anonymous'):
     self.consumer = oauth.Consumer(consumer_key, consumer_secret)
diff --git a/functional_tests/test_services.py b/functional_tests/test_services.py
index faab6cf..7cf5a5d 100644
--- a/functional_tests/test_services.py
+++ b/functional_tests/test_services.py
@@ -9,13 +9,29 @@
 These tests are read-only in order to ensure they're repeatable. They also
 only work with publicly visible data in order to avoid dealing with OAuth.
 """
+import httplib2
 
 __author__ = 'ade@google.com (Ade Oshineye)'
 
 from apiclient.discovery import build
+import httplib2
 import logging
+import os
 import unittest
 
+# TODO(ade) Remove this mock once the bug in the discovery document is fixed
+DATA_DIR = os.path.join(logging.os.path.dirname(__file__), '../tests/data')
+class HttpMock(object):
+
+  def __init__(self, filename, headers):
+    f = file(os.path.join(DATA_DIR, filename), 'r')
+    self.data = f.read()
+    f.close()
+    self.headers = headers
+
+  def request(self, uri, method="GET", body=None, headers=None, redirections=1, connection_type=None):
+    return httplib2.Response(self.headers), self.data
+
 class BuzzFunctionalTest(unittest.TestCase):
   def test_can_get_buzz_activities_with_many_params(self):
     buzz = build('buzz', 'v1')
@@ -31,7 +47,7 @@
     activity_count = len(activities['items'])
     self.assertEquals(max_results, activity_count)
 
-  def test_can_page_through_users_activities(self):
+  def test_can_get_multiple_pages_of_buzz_activities(self):
     buzz = build('buzz', 'v1')
     max_results = 2
     actcol = buzz.activities()
@@ -43,5 +59,21 @@
       activity_count = len(activities['items'])
       self.assertEquals(max_results, activity_count, 'Failed after %s pages' % str(count))
 
+  def IGNORE__test_can_get_multiple_pages_of_buzz_likers(self):
+    # Ignore this test until the Buzz API fixes the bug with next links
+    # http://code.google.com/p/google-buzz-api/issues/detail?id=114
+    self.http = HttpMock('buzz.json', {'status': '200'})
+    buzz = build('buzz', 'v1', self.http)
+    max_results = 1
+    people_cmd = buzz.people()
+    #https://www.googleapis.com/buzz/v1/activities/111062888259659218284/@self/B:z13nh535yk2syfob004cdjyb3mjeulcwv3c?alt=json#
+    people = people_cmd.liked(groupId='@liked', userId='googlebuzz', scope='@self',
+                              postId='B:z13nh535yk2syfob004cdjyb3mjeulcwv3c', max_results=max_results).execute()
+
+    for count in range(10):
+      people = people_cmd.liked_next(people).execute()
+      people_count = len(people['items'])
+      self.assertEquals(max_results, people_count, 'Failed after %s pages' % str(count))
+
 if __name__ == '__main__':
   unittest.main()
diff --git a/samples/cmdline/buzz.py b/samples/cmdline/buzz.py
index 92be46d..2f0da84 100644
--- a/samples/cmdline/buzz.py
+++ b/samples/cmdline/buzz.py
@@ -11,13 +11,17 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
+# Enable this sample to be run from the top-level directory
+import os
+import sys
+sys.path.insert(0, os.getcwd())
 
 from apiclient.discovery import build
 
 import httplib2
 httplib2.debuglevel = 4
 import pickle
-
+import pprint
 
 def main():
   f = open("buzz.dat", "r")
@@ -34,13 +38,16 @@
   activitylist = activities.list_next(activitylist).execute()
   print activitylist['items'][0]['title']
 
-  activities.insert(userId='@me', body={
+  activity = activities.insert(userId='@me', body={
     'title': 'Testing insert',
     'object': {
       'content': u'Just a short note to show that insert is working. ☄',
       'type': 'note'}
     }
   ).execute()
+  pprint.pprint(activity)
+  print
+  print 'Just created: ', activity['links']['alternate'][0]['href']
 
 if __name__ == '__main__':
   main()
diff --git a/samples/cmdline/three_legged_dance.py b/samples/cmdline/three_legged_dance.py
index 9972455..ff1d657 100644
--- a/samples/cmdline/three_legged_dance.py
+++ b/samples/cmdline/three_legged_dance.py
@@ -22,6 +22,11 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
+# Enable this sample to be run from the top-level directory
+import os
+import sys
+sys.path.insert(0, os.getcwd())
+
 from apiclient.discovery import build
 from apiclient.oauth import FlowThreeLegged
 
diff --git a/tests/data/buzz.json b/tests/data/buzz.json
index f12a445..62af35c 100644
--- a/tests/data/buzz.json
+++ b/tests/data/buzz.json
@@ -621,7 +621,7 @@
        "liked": {
         "pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/{groupId}",
         "rpcName": "buzz.people.liked",
-        "httpMethod": "POST",
+        "httpMethod": "GET",
         "methodType": "rest",
         "parameters": {
          "groupId": {
@@ -646,6 +646,11 @@
           "pattern": "[^/]+",
           "required": true
          },
+         "scope": {
+          "parameterType": "path",
+          "pattern": "@.*",
+          "required": true
+         },
          "postId": {
           "parameterType": "path",
           "pattern": ".*",
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index fdca968..8704e92 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -26,6 +26,10 @@
 import os
 import unittest
 import urlparse
+try:
+    from urlparse import parse_qs
+except ImportError:
+    from cgi import parse_qs
 
 from apiclient.discovery import build, key2param
 
@@ -102,7 +106,7 @@
 
 
 class Next(unittest.TestCase):
-  def test_next(self):
+  def test_next_for_activities_list(self):
     self.http = HttpMock('buzz.json', {'status': '200'})
     buzz = build('buzz', 'v1', self.http, developerKey='foobie_bletch')
     activities = {'links':
@@ -122,10 +126,18 @@
                    [{'href': 'http://www.googleapis.com/next-link'}]}}
     request = buzz.activities().list_next(activities)
     parsed = urlparse.urlparse(request.uri)
-    q = urlparse.parse_qs(parsed[4])
+    q = parse_qs(parsed[4])
     self.assertEqual(q['key'], ['foobie_bletch'])
 
 
+  def test_next_for_people_liked(self):
+    self.http = HttpMock('buzz.json', {'status': '200'})
+    buzz = build('buzz', 'v1', self.http)
+    people = {'links':
+                  {'next':
+                   [{'href': 'http://www.googleapis.com/next-link'}]}}
+    request = buzz.people().liked_next(people)
+    self.assertEqual(request.uri, 'http://www.googleapis.com/next-link')
 
 if __name__ == '__main__':
   unittest.main()
