diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 57c5af8..fb9b7c5 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -36,7 +36,6 @@
 from http import HttpRequest
 from anyjson import simplejson
 from model import JsonModel
-from errors import HttpError
 from errors import UnknownLinkType
 
 URITEMPLATE = re.compile('{[^}]*}')
@@ -63,11 +62,11 @@
 
 
 def build(serviceName, version,
-    http=None,
-    discoveryServiceUrl=DISCOVERY_URI,
-    developerKey=None,
-    model=JsonModel(),
-    requestBuilder=HttpRequest):
+          http=None,
+          discoveryServiceUrl=DISCOVERY_URI,
+          developerKey=None,
+          model=JsonModel(),
+          requestBuilder=HttpRequest):
   params = {
       'api': serviceName,
       'apiVersion': version
@@ -292,7 +291,8 @@
 
       def method(self):
         return createResource(self._http, self._baseUrl, self._model,
-            methodName, self._developerKey, methodDesc, futureDesc)
+                              self._requestBuilder, methodName,
+                              self._developerKey, methodDesc, futureDesc)
 
       setattr(method, '__doc__', 'A description of how to use this function')
       setattr(method, '__is_resource__', True)
diff --git a/apiclient/ext/appengine.py b/apiclient/ext/appengine.py
index ead4d29..232d4ea 100644
--- a/apiclient/ext/appengine.py
+++ b/apiclient/ext/appengine.py
@@ -106,7 +106,7 @@
     Args:
       model: db.Model, model class
       key_name: string, key name for the entity that has the credentials
-      property_name: string, name of the property that is an CredentialsProperty
+      property_name: string, name of the property that is a CredentialsProperty
     """
     self.model = model
     self.key_name = key_name
diff --git a/samples/new_project_template/main.py b/samples/new_project_template/main.py
index 8241908..7238344 100755
--- a/samples/new_project_template/main.py
+++ b/samples/new_project_template/main.py
@@ -64,10 +64,12 @@
     if not credentials:
       return begin_oauth_flow(self, user, service)
 
-    followers = service.people().list(userId='@me', groupId='@followers').execute()
+    followers = service.people().list(
+        userId='@me', groupId='@followers').execute()
     self.response.out.write('Hello, you have %s followers!' %
                             followers['totalResults'])
 
+
 def begin_oauth_flow(request_handler, user, service):
     flow = FlowThreeLegged(service.auth_discovery(),
                    consumer_key='anonymous',
@@ -81,6 +83,7 @@
     memcache.set(user.user_id(), pickle.dumps(flow))
     request_handler.redirect(authorize_url)
 
+
 class OAuthHandler(webapp.RequestHandler):
 
   @login_required
diff --git a/tests/data/zoo.json b/tests/data/zoo.json
index 50b2e55..f83e9dd 100644
--- a/tests/data/zoo.json
+++ b/tests/data/zoo.json
@@ -5,6 +5,25 @@
  "restBasePath": "/zoo",
  "rpcPath": "/rpc",
  "resources": {
+  "my": {
+   "resources": {
+    "favorites": {
+     "methods": {
+      "list": {
+       "restPath": "favorites/@me/mine",
+       "rpcMethod": "zoo.animals.mine",
+       "httpMethod": "GET",
+       "parameters": {
+        "max-results": {
+          "restParameterType": "query",
+          "required": false
+        }
+       }
+      }
+     }
+    }
+   }
+  },
   "animals": {
    "methods": {
     "crossbreed": {
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 44dbd6a..0c64a09 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -104,6 +104,15 @@
     self.assertEqual(q['name'], ['bat'])
     self.assertEqual(q['projection'], ['size'])
 
+  def test_nested_resources(self):
+    self.http = HttpMock('zoo.json', {'status': '200'})
+    zoo = build('zoo', 'v1', self.http)
+    self.assertTrue(getattr(zoo, 'animals'))
+    request = zoo.my().favorites().list(max_results="5")
+    parsed = urlparse.urlparse(request.uri)
+    q = parse_qs(parsed[4])
+    self.assertEqual(q['max-results'], ['5'])
+
 
 
 class Next(unittest.TestCase):
diff --git a/tests/test_json_model.py b/tests/test_json_model.py
index c9c9b7d..084e0a9 100644
--- a/tests/test_json_model.py
+++ b/tests/test_json_model.py
@@ -21,7 +21,8 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
-from apiclient.discovery import JsonModel, HttpError
+from apiclient.model import JsonModel
+from apiclient.errors import HttpError
 import os
 import unittest
 import httplib2
diff --git a/tests/test_mocks.py b/tests/test_mocks.py
index 91450ee..ee8ef26 100644
--- a/tests/test_mocks.py
+++ b/tests/test_mocks.py
@@ -21,7 +21,7 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
-from apiclient.discovery import HttpError
+from apiclient.errors import HttpError
 from apiclient.discovery import build
 from apiclient.http import RequestMockBuilder
 from tests.util import HttpMock
