Added TODO and did PEP 8 cleanup.
diff --git a/Makefile b/Makefile
index 838feef..9825ad9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,2 +1,2 @@
-default:
-	python discovery.py
+pep8:
+	find apiclient samples -name "*.py" | xargs pep8 --ignore=E111,E202
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..0152144
--- /dev/null
+++ b/TODO
@@ -0,0 +1,21 @@
+TODO
+====
+ - Unit tests against copies of current discovery docs
+
+ - Flag required parameters
+
+ - Check the regex when accepting values
+
+ - OAuth cmdline sample should start local http server to catch response.
+
+ - 'Extra Discovery' for pagination
+
+ - Implement requests as Command objects, either for immediate
+   execution, or for batching.
+
+ - Requests for multiple APIs at one time.
+
+ - 2.x and 3.x compatible
+
+
+
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 85d2049..0f9395d 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -27,9 +27,12 @@
 import urlparse
 import uritemplate
 
-class HttpError(Exception): pass
 
-DISCOVERY_URI = 'http://www.googleapis.com/discovery/0.1/describe{?api,apiVersion}'
+class HttpError(Exception):
+  pass
+
+DISCOVERY_URI = 'http://www.googleapis.com/discovery/0.1/describe' +
+  '{?api,apiVersion}'
 
 
 def key2method(key):
@@ -73,6 +76,7 @@
 
 
 class JsonModel(object):
+
   def request(self, headers, params):
     model = params.get('body', None)
     query = '?alt=json&prettyprint=true'
@@ -80,13 +84,14 @@
     if model == None:
       return (headers, params, query, None)
     else:
-      model = {'data': model }
+      model = {'data': model}
       headers['Content-Type'] = 'application/json'
       del params['body']
       return (headers, params, query, simplejson.dumps(model))
 
   def response(self, resp, content):
-    # Error handling is TBD
+    # Error handling is TBD, for example, do we retry
+    # for some operation/error combinations?
     if resp.status < 300:
       return simplejson.loads(content)['data']
     else:
@@ -97,7 +102,7 @@
 
 
 def build(service, version, http=httplib2.Http(),
-    discoveryServiceUrl = DISCOVERY_URI, auth = None, model = JsonModel()):
+    discoveryServiceUrl=DISCOVERY_URI, auth=None, model=JsonModel()):
   params = {
       'api': service,
       'apiVersion': version
@@ -117,6 +122,7 @@
       self._model = model
 
   def createMethod(theclass, methodName, methodDesc):
+
     def method(self, **kwargs):
       return createResource(self._http, self._baseUrl, self._model,
           methodName, methodDesc)
diff --git a/samples/cmdline/buzz.py b/samples/cmdline/buzz.py
index 9a0a909..e6b2ff4 100644
--- a/samples/cmdline/buzz.py
+++ b/samples/cmdline/buzz.py
@@ -10,38 +10,14 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
-# TODO
-# - Add normalize_ that converts max-results into MaxResults
-#
-# - Each 'resource' should be its own object accessible
-#   from the service object returned from discovery.
-#
-# - Methods can either execute immediately or return 
-#   RestRequest objects which can be batched. 
-#
-# - 'Body' parameter for non-GET requests 
-#
-# - 2.x and 3.x compatible
-
-# JS also has the idea of a TransportRequest and a Transport.
-# The Transport has a doRequest() method that takes a request
-# and a callback function.
-# 
-
-
-# Discovery doc notes
-# - Which parameters are optional vs mandatory
-# - Is pattern a regex?
-# - Inconsistent naming max-results vs userId
-
 
 from apiclient.discovery import build
 
 import httplib2
-import simplejson
-import re
-
 import oauth2 as oauth
+import re
+import simplejson
+
 
 def oauth_wrap(consumer, token, http):
     """
@@ -51,7 +27,7 @@
 
     Returns:
        A modified instance of http that was passed in.
-      
+
     Example:
 
       h = httplib2.Http()
@@ -61,14 +37,15 @@
     subclass of httplib2.Authenication because
     it never gets passed the absolute URI, which is
     needed for signing. So instead we have to overload
-    'request' with a closure that adds in the 
+    'request' with a closure that adds in the
     Authorization header and then calls the original version
     of 'request()'.
     """
     request_orig = http.request
     signer = oauth.SignatureMethod_HMAC_SHA1()
 
-    def new_request(uri, method="GET", body=None, headers=None, redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None):
+    def new_request(uri, method="GET", body=None, headers=None,
+        redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None):
       """Modify the request headers to add the appropriate
       Authorization header."""
       req = oauth.Request.from_consumer_and_token(
@@ -78,19 +55,23 @@
         headers = {}
       headers.update(req.to_header())
       headers['user-agent'] = 'jcgregorio-test-client'
-      return request_orig(uri, method, body, headers, redirections, connection_type)
+      return request_orig(uri, method, body, headers,
+          redirections, connection_type)
 
     http.request = new_request
     return http
 
+
 def get_wrapped_http():
   f = open("oauth_token.dat", "r")
   oauth_params = simplejson.loads(f.read())
 
-  consumer = oauth.Consumer(oauth_params['consumer_key'], oauth_params['consumer_secret'])
-  token = oauth.Token(oauth_params['oauth_token'], oauth_params['oauth_token_secret'])
+  consumer = oauth.Consumer(
+      oauth_params['consumer_key'], oauth_params['consumer_secret'])
+  token = oauth.Token(
+      oauth_params['oauth_token'], oauth_params['oauth_token_secret'])
 
-  # Create a simple monkeypatch for httplib2.Http.request 
+  # Create a simple monkeypatch for httplib2.Http.request
   # just adds in the oauth authorization header and then calls
   # the original request().
   http = httplib2.Http()
@@ -99,14 +80,14 @@
 
 def main():
   http = get_wrapped_http()
-  p = build("buzz", "v1", http = http)
+  p = build("buzz", "v1", http=http)
   activities = p.activities()
   activitylist = activities.list(scope='@self', userId='@me')
   print activitylist['items'][0]['title']
   activities.insert(userId='@me', body={
     'title': 'Testing insert',
     'object': {
-      'content': u'Just a short note to show that insert is working. ☄', 
+      'content': u'Just a short note to show that insert is working. ☄',
       'type': 'note'}
     }
   )
diff --git a/samples/cmdline/three_legged_dance.py b/samples/cmdline/three_legged_dance.py
index 7219216..8e85796 100644
--- a/samples/cmdline/three_legged_dance.py
+++ b/samples/cmdline/three_legged_dance.py
@@ -9,7 +9,7 @@
 except ImportError:
     from cgi import parse_qs, parse_qsl
 
-httplib2.debuglevel=4
+httplib2.debuglevel = 4
 headers = {"user-agent": "jcgregorio-buzz-client",
     'content-type': 'application/x-www-form-urlencoded'
     }
@@ -17,18 +17,22 @@
 consumer_key = 'anonymous'
 consumer_secret = 'anonymous'
 
-request_token_url = 'https://www.google.com/accounts/OAuthGetRequestToken?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
-access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
-authorize_url = 'https://www.google.com/buzz/api/auth/OAuthAuthorizeToken?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
+request_token_url = 'https://www.google.com/accounts/OAuthGetRequestToken' +
+  '?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
+access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken' +
+  '?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
+authorize_url = 'https://www.google.com/buzz/api/auth/OAuthAuthorizeToken' +
+  '?domain=anonymous&scope=https://www.googleapis.com/auth/buzz'
 
 consumer = oauth.Consumer(consumer_key, consumer_secret)
 client = oauth.Client(consumer)
 
-# Step 1: Get a request token. This is a temporary token that is used for 
-# having the user authorize an access token and to sign the request to obtain 
+# Step 1: Get a request token. This is a temporary token that is used for
+# having the user authorize an access token and to sign the request to obtain
 # said access token.
 
-resp, content = client.request(request_token_url, "POST", headers=headers, body="oauth_callback=oob")
+resp, content = client.request(request_token_url, "POST", headers=headers,
+    body="oauth_callback=oob")
 if resp['status'] != '200':
   print content
   raise Exception("Invalid response %s." % resp['status'])
@@ -38,9 +42,9 @@
 print "Request Token:"
 print "    - oauth_token        = %s" % request_token['oauth_token']
 print "    - oauth_token_secret = %s" % request_token['oauth_token_secret']
-print 
+print
 
-# Step 2: Redirect to the provider. Since this is a CLI script we do not 
+# Step 2: Redirect to the provider. Since this is a CLI script we do not
 # redirect. In a web application you would redirect the user to the URL
 # below.
 
@@ -56,20 +60,21 @@
 
 print "Go to the following link in your browser:"
 print authorize_url
-print 
+print
 
 # After the user has granted access to you, the consumer, the provider will
-# redirect you to whatever URL you have told them to redirect to. You can 
+# redirect you to whatever URL you have told them to redirect to. You can
 # usually define this in the oauth_callback argument as well.
 accepted = 'n'
 while accepted.lower() == 'n':
     accepted = raw_input('Have you authorized me? (y/n) ')
-oauth_verifier = raw_input('What is the PIN? ')
+oauth_verifier = raw_input('What is the PIN? ').strip()
+
 
 # Step 3: Once the consumer has redirected the user back to the oauth_callback
-# URL you can request the access token the user has approved. You use the 
+# URL you can request the access token the user has approved. You use the
 # request token to sign this request. After this is done you throw away the
-# request token and use the access token returned. You should store this 
+# request token and use the access token returned. You should store this
 # access token somewhere safe, like a database, for future use.
 token = oauth.Token(request_token['oauth_token'],
     request_token['oauth_token_secret'])
@@ -83,13 +88,14 @@
 print "    - oauth_token        = %s" % access_token['oauth_token']
 print "    - oauth_token_secret = %s" % access_token['oauth_token_secret']
 print
-print "You may now access protected resources using the access tokens above." 
+print "You may now access protected resources using the access tokens above."
 print
 
 d = dict(
-  consumer_key = 'anonymous',
-  consumer_secret = 'anonymous'
+  consumer_key='anonymous',
+  consumer_secret='anonymous'
     )
+
 d.update(access_token)
 
 f = open("oauth_token.dat", "w")