diff --git a/TODO b/TODO
index 0152144..e4785c6 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,6 @@
 TODO
 ====
+
  - Unit tests against copies of current discovery docs
 
  - Flag required parameters
@@ -8,7 +9,11 @@
 
  - OAuth cmdline sample should start local http server to catch response.
 
- - 'Extra Discovery' for pagination
+ - Caching of discovery doc
+
+ - Add in 'Extra Discovery' for pagination
+
+ - Layered user-agent header, ala 'my-buzz-client/1.0 google-api-python-client/0.2 httplib2/0.6'
 
  - Implement requests as Command objects, either for immediate
    execution, or for batching.
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 0f9395d..71e901b 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -31,8 +31,8 @@
 class HttpError(Exception):
   pass
 
-DISCOVERY_URI = 'http://www.googleapis.com/discovery/0.1/describe' +
-  '{?api,apiVersion}'
+DISCOVERY_URI = 'http://www.googleapis.com/discovery/0.1/describe\
+{?api,apiVersion}'
 
 
 def key2method(key):
@@ -96,7 +96,7 @@
       return simplejson.loads(content)['data']
     else:
       if resp['content-type'] != 'application/json':
-        raise HttpError("%d %s" % (resp.status, resp.reason))
+        raise HttpError('%d %s' % (resp.status, resp.reason))
       else:
         raise HttpError(simplejson.loads(content)['error'])
 
@@ -150,6 +150,7 @@
     pathUrl = re.sub(r'\{', r'{+', pathUrl)
     httpMethod = methodDesc['httpMethod']
     args = methodDesc['parameters'].keys()
+    required = [arg for arg in args if methodDesc['parameters'][arg].get('required', True)]
     if httpMethod in ['PUT', 'POST']:
       args.append('body')
     argmap = dict([(key2param(key), key) for key in args])
@@ -161,11 +162,15 @@
       params = dict(
           [(argmap[key], value) for key, value in kwargs.iteritems()]
           )
+      for name in required:
+        if name not in kwargs:
+          raise TypeError('Missing required parameter "%s"' % name)
       headers = {}
       headers, params, query, body = self._model.request(headers, params)
 
       url = urlparse.urljoin(self._baseUrl,
           uritemplate.expand(pathUrl, params) + query)
+
       return self._model.response(*self._http.request(
         url, method=httpMethod, headers=headers, body=body))
 
diff --git a/samples/cmdline/three_legged_dance.py b/samples/cmdline/three_legged_dance.py
index 8e85796..cc0ebf2 100644
--- a/samples/cmdline/three_legged_dance.py
+++ b/samples/cmdline/three_legged_dance.py
@@ -10,19 +10,21 @@
     from cgi import parse_qs, parse_qsl
 
 httplib2.debuglevel = 4
-headers = {"user-agent": "jcgregorio-buzz-client",
+headers = {'user-agent': 'google-api-client-python-buzz-cmdline/1.0',
     'content-type': 'application/x-www-form-urlencoded'
     }
 
 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)
@@ -31,17 +33,17 @@
 # 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'])
+  raise Exception('Invalid response %s.' % resp['status'])
 
 request_token = dict(parse_qsl(content))
 
-print "Request Token:"
-print "    - oauth_token        = %s" % request_token['oauth_token']
-print "    - oauth_token_secret = %s" % request_token['oauth_token_secret']
+print 'Request Token:'
+print '    - oauth_token        = %s' % request_token['oauth_token']
+print '    - oauth_token_secret = %s' % request_token['oauth_token_secret']
 print
 
 # Step 2: Redirect to the provider. Since this is a CLI script we do not
@@ -58,7 +60,7 @@
        urllib.urlencode(query, True), base_url.fragment)
 authorize_url = urlparse.urlunparse(url)
 
-print "Go to the following link in your browser:"
+print 'Go to the following link in your browser:'
 print authorize_url
 print
 
@@ -81,14 +83,14 @@
 token.set_verifier(oauth_verifier)
 client = oauth.Client(consumer, token)
 
-resp, content = client.request(access_token_url, "POST", headers=headers)
+resp, content = client.request(access_token_url, 'POST', headers=headers)
 access_token = dict(parse_qsl(content))
 
-print "Access Token:"
-print "    - oauth_token        = %s" % access_token['oauth_token']
-print "    - oauth_token_secret = %s" % access_token['oauth_token_secret']
+print 'Access Token:'
+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(
@@ -98,6 +100,6 @@
 
 d.update(access_token)
 
-f = open("oauth_token.dat", "w")
+f = open('oauth_token.dat', 'w')
 f.write(simplejson.dumps(d))
 f.close()
