Refresh docs
diff --git a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
index 9ef2dfc..4e87d0d 100644
--- a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
+++ b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
@@ -56,21 +56,19 @@
 <h1 class="epydoc">Class StorageByKeyName</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="class_hierarchy_for_storagebyk" name="class_hierarchy_for_storagebyk">
-<area shape="rect" href="oauth2client.appengine.StorageByKeyName-class.html" title="StorageByKeyName" alt="" coords="5,5,144,32"/>
-<area shape="rect" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="168,5,269,32"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.StorageByKeyName-class.html" title="StorageByKeyName" alt="" coords="5,6,147,34"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="171,6,272,34"/>
 </map>
   <img src="class_hierarchy_for_storagebyk.gif" alt='' usemap="#class_hierarchy_for_storagebyk" ismap="ismap" class="graph-without-title" />
 </center>
 </center>
 <hr />
 <pre class="literalblock">
-Store and retrieve a single credential to and from
-the App Engine datastore.
+Store and retrieve a credential to and from the App Engine datastore.
 
-This Storage helper presumes the Credentials
-have been stored as a CredenialsProperty
-on a datastore model class, and that entities
-are stored by key_name.
+This Storage helper presumes the Credentials have been stored as a
+CredentialsProperty or CredentialsNDBProperty on a datastore model class, and
+that entities are stored by key_name.
 
 </pre>
 
@@ -112,6 +110,57 @@
       
     </td>
   </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb" class="summary-sig-name" onclick="show_private();">_is_ndb</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Determine whether the model of the instance is an NDB model.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._is_ndb">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity" class="summary-sig-name" onclick="show_private();">_get_entity</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Retrieve entity from datastore.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._get_entity">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity" class="summary-sig-name" onclick="show_private();">_delete_entity</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Delete entity from datastore.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._delete_entity">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
 <tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
@@ -256,10 +305,13 @@
 Constructor for Storage.
 
 Args:
-  model: db.Model, model class
+  model: db.Model or ndb.Model, model class
   key_name: string, key name for the entity that has the credentials
   property_name: string, name of the property that is a CredentialsProperty
-  cache: memcache, a write-through cache to put in front of the datastore
+    or CredentialsNDBProperty.
+  cache: memcache, a write-through cache to put in front of the datastore.
+    If the model you are using is an NDB model, using a cache will be
+    redundant since the model uses an instance cache and memcache for you.
 
 </pre>
   <dl class="fields">
@@ -273,6 +325,84 @@
   </dl>
 </td></tr></table>
 </div>
+<a name="_is_ndb"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_is_ndb</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._is_ndb">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Determine whether the model of the instance is an NDB model.
+
+Returns:
+  Boolean indicating whether or not the model is an NDB or DB model.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_get_entity"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_entity</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._get_entity">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Retrieve entity from datastore.
+
+Uses a different model method for db or ndb models.
+
+Returns:
+  Instance of the model corresponding to the current storage object
+      and stored using the key name of the storage object.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="_delete_entity"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_delete_entity</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName._delete_entity">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Delete entity from datastore.
+
+Attempts to delete using the key_name stored on the object, whether or not
+the given key is in the datastore.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
 <a name="locked_get"></a>
 <div>
 <table class="details" border="1" cellpadding="3"
@@ -379,7 +509,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  6 12:07:14 2012
+    Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:40 2013
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"