diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientInformationResponseView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientInformationResponseView.java
index f2e0e2f8e..526f2f347 100644
--- a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientInformationResponseView.java
+++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/ClientInformationResponseView.java
@@ -19,6 +19,7 @@ import org.springframework.web.servlet.view.AbstractView;
 import com.google.common.base.Joiner;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.google.gson.JsonIOException;
 import com.google.gson.JsonObject;
 
 /**
@@ -40,7 +41,8 @@ public class ClientInformationResponseView extends AbstractView {
 
 		response.setContentType("application/json");
 		
-		Gson gson = new GsonBuilder().create();
+		// note that this won't serialize nulls by default
+		Gson gson = new Gson();
 		
 		ClientDetailsEntity client = (ClientDetailsEntity) model.get("client");
 		OAuth2AccessTokenEntity token = (OAuth2AccessTokenEntity) model.get("token");
@@ -49,7 +51,36 @@ public class ClientInformationResponseView extends AbstractView {
 			code = HttpStatus.OK;
 		}
 		
+		JsonObject obj = new JsonObject();
 		
+		obj.addProperty("client_id", client.getClientId());
+		if (client.getClientSecret() != null) {
+			obj.addProperty("client_secret", client.getClientSecret());
+			obj.addProperty("expires_at", 0); // TODO: do we want to let secrets expire?
+		}
+		obj.addProperty("issued_at", client.getCreatedAt().getTime());
+
+		obj.addProperty("registration_access_token", token.getValue());
+		
+		// TODO: urlencode the client id for safety?
+		String uri = request.getRequestURL() + "/" + client.getClientId();		
+		obj.addProperty("registration_client_uri", uri);
+		
+		
+		// add in all other client properties
+		
+		
+		
+		try {
+	        Writer out = response.getWriter();
+	        gson.toJson(obj, out);
+        } catch (JsonIOException e) {
+	        // TODO Auto-generated catch block
+	        e.printStackTrace();
+        } catch (IOException e) {
+	        // TODO Auto-generated catch block
+	        e.printStackTrace();
+        }		
 			
 	}