diff --git a/Makefile b/Makefile
index f53fa87..f1bf782 100644
--- a/Makefile
+++ b/Makefile
@@ -27,8 +27,8 @@
 	@echo "Here we go..."
 	cd snapshot; python setup.py sdist --formats=gztar,zip register upload
 	wget "http://support.googlecode.com/svn/trunk/scripts/googlecode_upload.py" -O googlecode_upload.py
-	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
-	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
+	python googlecode_upload.py --summary="google-api-python-client Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
+	python googlecode_upload.py --summary="google-api-python-client Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
 
 
 .PHONY: oauth2_prerelease
@@ -56,5 +56,5 @@
 	@echo "Here we go..."
 	cd snapshot; python setup.py sdist --formats=gztar,zip register upload
 	wget "http://support.googlecode.com/svn/trunk/scripts/googlecode_upload.py" -O googlecode_upload.py
-	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
-	python googlecode_upload.py --summary="Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
+	python googlecode_upload.py --summary="oauth2client Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.tar.gz
+	python googlecode_upload.py --summary="oauth2client Version $(shell python setup.py --version)" --project=google-api-python-client snapshot/dist/*.zip
diff --git a/oauth2client/appengine.py b/oauth2client/appengine.py
index 68d5066..533d53f 100644
--- a/oauth2client/appengine.py
+++ b/oauth2client/appengine.py
@@ -19,10 +19,11 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
+import base64
 import httplib2
+import logging
 import pickle
 import time
-import base64
 
 try: # pragma: no cover
   import simplejson
@@ -152,7 +153,7 @@
 
   def validate(self, value):
     if value is not None and not isinstance(value, Flow):
-      raise BadValueError('Property %s must be convertible '
+      raise db.BadValueError('Property %s must be convertible '
                           'to a FlowThreeLegged instance (%s)' %
                           (self.name, value))
     return super(FlowProperty, self).validate(value)
@@ -173,6 +174,7 @@
 
   # For writing to datastore.
   def get_value_for_datastore(self, model_instance):
+    logging.info("get: Got type " + str(type(model_instance)))
     cred = super(CredentialsProperty,
                  self).get_value_for_datastore(model_instance)
     if cred is None:
@@ -183,6 +185,8 @@
 
   # For reading from datastore.
   def make_value_from_datastore(self, value):
+    logging.info("make: Got a " + value)
+    logging.info("make: Got type " + str(type(value)))
     if value is None:
       return None
     if len(value) == 0:
@@ -191,18 +195,22 @@
     try:
       credentials = Credentials.new_from_json(value)
     except ValueError:
-      credentials = pickle.loads(value)
+      try:
+        credentials = pickle.loads(value)
+      except ValueError:
+        credentials = None
     return credentials
 
   def validate(self, value):
+    value = super(CredentialsProperty, self).validate(value)
+    logging.info("validate: Got type " + str(type(value)))
     if value is not None and not isinstance(value, Credentials):
       raise db.BadValueError('Property %s must be convertible '
-                          'to an Credentials instance (%s)' %
-                          (self.name, value))
-    return super(CredentialsProperty, self).validate(value)
-
-  def empty(self, value):
-    return not value
+                          'to a Credentials instance (%s)' %
+                            (self.name, value))
+    #if value is not None and not isinstance(value, Credentials):
+    #  return None
+    return value
 
 
 class StorageByKeyName(Storage):
diff --git a/oauth2client/client.py b/oauth2client/client.py
index 2b97d4d..6392533 100644
--- a/oauth2client/client.py
+++ b/oauth2client/client.py
@@ -44,7 +44,7 @@
 logger = logging.getLogger(__name__)
 
 # Expiry is stored in RFC3339 UTC format
-EXPIRY_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
+EXPIRY_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
 
 
 class Error(Exception):
@@ -283,8 +283,11 @@
     data = simplejson.loads(s)
     if 'token_expiry' in data and not isinstance(data['token_expiry'],
         datetime.datetime):
-      data['token_expiry'] = datetime.datetime.strptime(
-          data['token_expiry'], EXPIRY_FORMAT)
+      try:
+        data['token_expiry'] = datetime.datetime.strptime(
+            data['token_expiry'], EXPIRY_FORMAT)
+      except:
+        data['token_expiry'] = None
     retval = OAuth2Credentials(
         data['access_token'],
         data['client_id'],
diff --git a/samples/appengine_with_decorator2/app.yaml b/samples/appengine_with_decorator2/app.yaml
index c0d43d5..bdc4be1 100644
--- a/samples/appengine_with_decorator2/app.yaml
+++ b/samples/appengine_with_decorator2/app.yaml
@@ -1,5 +1,5 @@
 application: jcg-testing-01
-version: 1
+version: 2
 runtime: python
 api_version: 1
 
diff --git a/samples/appengine_with_decorator2/main.py b/samples/appengine_with_decorator2/main.py
index 4cd2401..05fa922 100644
--- a/samples/appengine_with_decorator2/main.py
+++ b/samples/appengine_with_decorator2/main.py
@@ -41,8 +41,8 @@
 # The client_id and client_secret are copied from the API Access tab on
 # the Google APIs Console <http://code.google.com/apis/console>
 decorator = OAuth2Decorator(
-    client_id='837647042410-75ifgipj95q4agpm0cs452mg7i2pn17c.apps.googleusercontent.com',
-    client_secret='QhxYsjM__u4vy5N0DXUFRwwI',
+    client_id='837647042410-49mlotv28bfpn5a0igtinipsb8so5eob.apps.googleusercontent.com',
+    client_secret='d4BSDjl4rmFmk-wh28_aK1Oz',
     scope='https://www.googleapis.com/auth/buzz')
 
 http = httplib2.Http(memcache)
diff --git a/tests/test_oauth2client.py b/tests/test_oauth2client.py
index 14beb97..4063e8b 100644
--- a/tests/test_oauth2client.py
+++ b/tests/test_oauth2client.py
@@ -101,6 +101,9 @@
     json = self.credentials.to_json()
     instance = OAuth2Credentials.from_json(json)
     self.assertEquals(type(instance), OAuth2Credentials)
+    instance.token_expiry = None
+    self.credentials.token_expiry = None
+
     self.assertEquals(self.credentials.__dict__, instance.__dict__)
 
 
