diff --git a/describe.py b/describe.py
index b2bcc6d..ac1411c 100644
--- a/describe.py
+++ b/describe.py
@@ -31,12 +31,13 @@
 from string import Template
 
 from apiclient.discovery import build
+from apiclient.discovery import build_from_document
+from apiclient.discovery import DISCOVERY_URI
 from oauth2client.anyjson import simplejson
+import gflags
 import uritemplate
 
 
-BASE = 'docs/dyn'
-
 CSS = """<style>
 
 body, h1, h2, h3, div, span, p, pre, a {
@@ -111,9 +112,6 @@
 </style>
 """
 
-DISCOVERY_URI = ('https://www.googleapis.com/discovery/v1/apis/'
-                 '{api}/{apiVersion}/rest')
-
 METHOD_TEMPLATE = """<div class="method">
     <code class="details" id="$name">$name($params)</code>
   <pre>$doc</pre>
@@ -130,6 +128,24 @@
   <code><a href="#$name">$name($params)</a></code></p>
 <p class="firstline">$firstline</p>"""
 
+BASE = 'docs/dyn'
+
+DIRECTORY_URI = 'https://www.googleapis.com/discovery/v1/apis?preferred=true',
+
+FLAGS = gflags.FLAGS
+
+gflags.DEFINE_string('discovery_uri_template', DISCOVERY_URI,
+                     'URI Template for discovery.')
+
+gflags.DEFINE_string('discovery_uri', '', 'URI of discovery document. '
+                     'If supplied then only this API will be documented.')
+
+gflags.DEFINE_string('directory_uri', DIRECTORY_URI,
+                     'URI of directory document. '
+                     'Unused if --discovery_uri is supplied.')
+
+gflags.DEFINE_string('dest', BASE, 'Directory name to write documents into.')
+
 
 def safe_version(version):
   """Create a safe version of the verion string.
@@ -300,7 +316,7 @@
 
   html = document_collection(resource, path, root_discovery, discovery)
 
-  f = open(os.path.join(BASE, path + 'html'), 'w')
+  f = open(os.path.join(FLAGS.dest, path + 'html'), 'w')
   f.write(html.encode('utf-8'))
   f.close()
 
@@ -323,7 +339,7 @@
   service = build(name, version)
   response, content = http.request(
       uritemplate.expand(
-          DISCOVERY_URI, {
+          FLAGS.discovery_uri_template, {
               'api': name,
               'apiVersion': version})
           )
@@ -335,14 +351,43 @@
       service, '%s_%s.' % (name, version), discovery, discovery)
 
 
-if __name__ == '__main__':
+def document_api_from_discovery_document(uri):
+  """Document the given API.
+
+  Args:
+    uri: string, URI of discovery document.
+  """
   http = httplib2.Http()
-  resp, content = http.request(
-      'https://www.googleapis.com/discovery/v1/apis?preferred=true',
-      headers={'X-User-IP': '0.0.0.0'})
-  if resp.status == 200:
-    directory = simplejson.loads(content)['items']
-    for api in directory:
-      document_api(api['name'], api['version'])
+  response, content = http.request(FLAGS.discovery_uri)
+  discovery = simplejson.loads(content)
+
+  service = build_from_document(discovery)
+
+  name = discovery['version']
+  version = safe_version(discovery['version'])
+
+  document_collection_recursive(
+      service, '%s_%s.' % (name, version), discovery, discovery)
+
+
+if __name__ == '__main__':
+  # Let the gflags module process the command-line arguments
+  try:
+    argv = FLAGS(sys.argv)
+  except gflags.FlagsError, e:
+    print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
+    sys.exit(1)
+
+  if FLAGS.discovery_uri:
+    document_api_from_discovery_document(FLAGS.discovery_uri)
   else:
-    sys.exit("Failed to load the discovery document.")
+    http = httplib2.Http()
+    resp, content = http.request(
+        FLAGS.directory_uri,
+        headers={'X-User-IP': '0.0.0.0'})
+    if resp.status == 200:
+      directory = simplejson.loads(content)['items']
+      for api in directory:
+        document_api(api['name'], api['version'])
+    else:
+      sys.exit("Failed to load the discovery document.")
