1.0beta3 release
diff --git a/docs/oauth2client.appengine.html b/docs/oauth2client.appengine.html
index e3cba8b..1607892 100644
--- a/docs/oauth2client.appengine.html
+++ b/docs/oauth2client.appengine.html
@@ -8,7 +8,7 @@
 <td valign=bottom>&nbsp;<br>
 <font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="oauth2client.html"><font color="#ffffff">oauth2client</font></a>.appengine</strong></big></big></font></td
 ><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/jcgregorio/projects/google-api-python-client/oauth2client/appengine.py">/home/jcgregorio/projects/google-api-python-client/oauth2client/appengine.py</a></font></td></tr></table>
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiclient/oauth2client/appengine.py">/usr/local/google/home/jcgregorio/projects/apiclient/oauth2client/appengine.py</a></font></td></tr></table>
     <p><tt>Utilities&nbsp;for&nbsp;Google&nbsp;App&nbsp;Engine<br>
 &nbsp;<br>
 Utilities&nbsp;for&nbsp;making&nbsp;it&nbsp;easier&nbsp;to&nbsp;use&nbsp;OAuth&nbsp;2.0&nbsp;on&nbsp;Google&nbsp;App&nbsp;Engine.</tt></p>
@@ -23,13 +23,12 @@
 <a href="base64.html">base64</a><br>
 <a href="google.appengine.ext.db.html">google.appengine.ext.db</a><br>
 </td><td width="25%" valign=top><a href="httplib2.html">httplib2</a><br>
-<a href="logging.html">logging</a><br>
 <a href="google.appengine.api.memcache.html">google.appengine.api.memcache</a><br>
-</td><td width="25%" valign=top><a href="pickle.html">pickle</a><br>
-<a href="simplejson.html">simplejson</a><br>
+<a href="pickle.html">pickle</a><br>
+</td><td width="25%" valign=top><a href="simplejson.html">simplejson</a><br>
 <a href="time.html">time</a><br>
-</td><td width="25%" valign=top><a href="google.appengine.api.users.html">google.appengine.api.users</a><br>
-<a href="google.appengine.ext.webapp.html">google.appengine.ext.webapp</a><br>
+<a href="google.appengine.api.users.html">google.appengine.api.users</a><br>
+</td><td width="25%" valign=top><a href="google.appengine.ext.webapp.html">google.appengine.ext.webapp</a><br>
 </td></tr></table></td></tr></table><p>
 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
 <tr bgcolor="#ee77aa">
@@ -122,6 +121,10 @@
 &nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;to&nbsp;Google's&nbsp;endpoints&nbsp;but&nbsp;any&nbsp;OAuth&nbsp;2.0&nbsp;provider&nbsp;can&nbsp;be&nbsp;used.</tt></dd></dl>
 
 <hr>
+Class methods defined here:<br>
+<dl><dt><a name="AppAssertionCredentials-from_json"><strong>from_json</strong></a>(cls, json)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt></dl>
+
+<hr>
 Methods inherited from <a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a>:<br>
 <dl><dt><a name="AppAssertionCredentials-__getstate__"><strong>__getstate__</strong></a>(self)</dt><dd><tt>Trim&nbsp;the&nbsp;state&nbsp;down&nbsp;to&nbsp;something&nbsp;that&nbsp;can&nbsp;be&nbsp;pickled.</tt></dd></dl>
 
@@ -141,28 +144,43 @@
 &nbsp;&nbsp;h&nbsp;=&nbsp;httplib2.Http()<br>
 &nbsp;&nbsp;h&nbsp;=&nbsp;credentials.<a href="#AppAssertionCredentials-authorize">authorize</a>(h)<br>
 &nbsp;<br>
-You&nbsp;can't&nbsp;create&nbsp;a&nbsp;new&nbsp;OAuth<br>
-subclass&nbsp;of&nbsp;httplib2.Authenication&nbsp;because<br>
-it&nbsp;never&nbsp;gets&nbsp;passed&nbsp;the&nbsp;absolute&nbsp;URI,&nbsp;which&nbsp;is<br>
-needed&nbsp;for&nbsp;signing.&nbsp;So&nbsp;instead&nbsp;we&nbsp;have&nbsp;to&nbsp;overload<br>
-'request'&nbsp;with&nbsp;a&nbsp;closure&nbsp;that&nbsp;adds&nbsp;in&nbsp;the<br>
-Authorization&nbsp;header&nbsp;and&nbsp;then&nbsp;calls&nbsp;the&nbsp;original&nbsp;version<br>
-of&nbsp;'request()'.</tt></dd></dl>
+You&nbsp;can't&nbsp;create&nbsp;a&nbsp;new&nbsp;OAuth&nbsp;subclass&nbsp;of&nbsp;httplib2.Authenication<br>
+because&nbsp;it&nbsp;never&nbsp;gets&nbsp;passed&nbsp;the&nbsp;absolute&nbsp;URI,&nbsp;which&nbsp;is&nbsp;needed&nbsp;for<br>
+signing.&nbsp;So&nbsp;instead&nbsp;we&nbsp;have&nbsp;to&nbsp;overload&nbsp;'request'&nbsp;with&nbsp;a&nbsp;closure<br>
+that&nbsp;adds&nbsp;in&nbsp;the&nbsp;Authorization&nbsp;header&nbsp;and&nbsp;then&nbsp;calls&nbsp;the&nbsp;original<br>
+version&nbsp;of&nbsp;'request()'.</tt></dd></dl>
 
-<dl><dt><a name="AppAssertionCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set&nbsp;the&nbsp;storage&nbsp;for&nbsp;the&nbsp;credential.<br>
+<dl><dt><a name="AppAssertionCredentials-set_store"><strong>set_store</strong></a>(self, store)</dt><dd><tt>Set&nbsp;the&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;for&nbsp;the&nbsp;credential.<br>
 &nbsp;<br>
 Args:<br>
-&nbsp;&nbsp;store:&nbsp;callable,&nbsp;a&nbsp;callable&nbsp;that&nbsp;when&nbsp;passed&nbsp;a&nbsp;Credential<br>
-&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;store&nbsp;the&nbsp;credential&nbsp;back&nbsp;to&nbsp;where&nbsp;it&nbsp;came&nbsp;from.<br>
+&nbsp;&nbsp;store:&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>,&nbsp;an&nbsp;implementation&nbsp;of&nbsp;Stroage&nbsp;<a href="__builtin__.html#object">object</a>.<br>
 &nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;store&nbsp;the&nbsp;latest&nbsp;access_token&nbsp;if&nbsp;it<br>
-&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;expired&nbsp;and&nbsp;been&nbsp;refreshed.</tt></dd></dl>
+&nbsp;&nbsp;&nbsp;&nbsp;has&nbsp;expired&nbsp;and&nbsp;been&nbsp;refreshed.&nbsp;&nbsp;This&nbsp;implementation&nbsp;uses<br>
+&nbsp;&nbsp;&nbsp;&nbsp;locking&nbsp;to&nbsp;check&nbsp;for&nbsp;updates&nbsp;before&nbsp;updating&nbsp;the<br>
+&nbsp;&nbsp;&nbsp;&nbsp;access_token.</tt></dd></dl>
+
+<dl><dt><a name="AppAssertionCredentials-to_json"><strong>to_json</strong></a>(self)</dt></dl>
 
 <hr>
 Data descriptors inherited from <a href="oauth2client.client.html#OAuth2Credentials">oauth2client.client.OAuth2Credentials</a>:<br>
-<dl><dt><strong>invalid</strong></dt>
-<dd><tt>True&nbsp;if&nbsp;the&nbsp;credentials&nbsp;are&nbsp;invalid,&nbsp;such&nbsp;as&nbsp;being&nbsp;revoked.</tt></dd>
+<dl><dt><strong>access_token_expired</strong></dt>
+<dd><tt>True&nbsp;if&nbsp;the&nbsp;credential&nbsp;is&nbsp;expired&nbsp;or&nbsp;invalid.<br>
+&nbsp;<br>
+If&nbsp;the&nbsp;token_expiry&nbsp;isn't&nbsp;set,&nbsp;we&nbsp;assume&nbsp;the&nbsp;token&nbsp;doesn't&nbsp;expire.</tt></dd>
 </dl>
 <hr>
+Class methods inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
+<dl><dt><a name="AppAssertionCredentials-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility&nbsp;class&nbsp;method&nbsp;to&nbsp;instantiate&nbsp;a&nbsp;Credentials&nbsp;subclass&nbsp;from&nbsp;a&nbsp;JSON<br>
+representation&nbsp;produced&nbsp;by&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;s:&nbsp;string,&nbsp;JSON&nbsp;from&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;An&nbsp;instance&nbsp;of&nbsp;the&nbsp;subclass&nbsp;of&nbsp;Credentials&nbsp;that&nbsp;was&nbsp;serialized&nbsp;with<br>
+&nbsp;&nbsp;<a href="#AppAssertionCredentials-to_json">to_json</a>().</tt></dd></dl>
+
+<hr>
 Data descriptors inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
 <dl><dt><strong>__dict__</strong></dt>
 <dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
@@ -170,6 +188,10 @@
 <dl><dt><strong>__weakref__</strong></dt>
 <dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
 </dl>
+<hr>
+Data and other attributes inherited from <a href="oauth2client.client.html#Credentials">oauth2client.client.Credentials</a>:<br>
+<dl><dt><strong>NON_SERIALIZED_MEMBERS</strong> = ['store']</dl>
+
 </td></tr></table> <p>
 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
 <tr bgcolor="#ffc8d8">
@@ -515,8 +537,11 @@
 Data and other attributes defined here:<br>
 <dl><dt><strong>data_type</strong> = &lt;class 'oauth2client.client.Credentials'&gt;<dd><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;Credentials&nbsp;objects.<br>
 &nbsp;<br>
-Subclasses&nbsp;must&nbsp;define&nbsp;an&nbsp;authorize()&nbsp;method<br>
-that&nbsp;applies&nbsp;the&nbsp;credentials&nbsp;to&nbsp;an&nbsp;HTTP&nbsp;transport.</tt></dl>
+Subclasses&nbsp;must&nbsp;define&nbsp;an&nbsp;authorize()&nbsp;method&nbsp;that&nbsp;applies&nbsp;the&nbsp;credentials&nbsp;to<br>
+an&nbsp;HTTP&nbsp;transport.<br>
+&nbsp;<br>
+Subclasses&nbsp;must&nbsp;also&nbsp;specify&nbsp;a&nbsp;classmethod&nbsp;named&nbsp;'from_json'&nbsp;that&nbsp;takes&nbsp;a&nbsp;JSON<br>
+string&nbsp;as&nbsp;input&nbsp;and&nbsp;returns&nbsp;an&nbsp;instaniated&nbsp;Crentials&nbsp;<a href="__builtin__.html#object">object</a>.</tt></dl>
 
 <hr>
 Methods inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
@@ -903,6 +928,31 @@
 &nbsp;&nbsp;credentials:&nbsp;Credentials,&nbsp;the&nbsp;credentials&nbsp;to&nbsp;store.</tt></dd></dl>
 
 <hr>
+Methods inherited from <a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>:<br>
+<dl><dt><a name="StorageByKeyName-acquire_lock"><strong>acquire_lock</strong></a>(self)</dt><dd><tt>Acquires&nbsp;any&nbsp;lock&nbsp;necessary&nbsp;to&nbsp;access&nbsp;this&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>.<br>
+&nbsp;<br>
+This&nbsp;lock&nbsp;is&nbsp;not&nbsp;reentrant.</tt></dd></dl>
+
+<dl><dt><a name="StorageByKeyName-locked_get"><strong>locked_get</strong></a>(self)</dt><dd><tt>Retrieve&nbsp;credential.<br>
+&nbsp;<br>
+The&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock&nbsp;must&nbsp;be&nbsp;held&nbsp;when&nbsp;this&nbsp;is&nbsp;called.<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;oauth2client.client.Credentials</tt></dd></dl>
+
+<dl><dt><a name="StorageByKeyName-locked_put"><strong>locked_put</strong></a>(self, credentials)</dt><dd><tt>Write&nbsp;a&nbsp;credential.<br>
+&nbsp;<br>
+The&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock&nbsp;must&nbsp;be&nbsp;held&nbsp;when&nbsp;this&nbsp;is&nbsp;called.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;credentials:&nbsp;Credentials,&nbsp;the&nbsp;credentials&nbsp;to&nbsp;store.</tt></dd></dl>
+
+<dl><dt><a name="StorageByKeyName-release_lock"><strong>release_lock</strong></a>(self)</dt><dd><tt>Release&nbsp;the&nbsp;<a href="oauth2client.client.html#Storage">Storage</a>&nbsp;lock.<br>
+&nbsp;<br>
+Trying&nbsp;to&nbsp;release&nbsp;a&nbsp;lock&nbsp;that&nbsp;isn't&nbsp;held&nbsp;will&nbsp;result&nbsp;in&nbsp;a<br>
+RuntimeError.</tt></dd></dl>
+
+<hr>
 Data descriptors inherited from <a href="oauth2client.client.html#Storage">oauth2client.client.Storage</a>:<br>
 <dl><dt><strong>__dict__</strong></dt>
 <dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>