diff --git a/authority/jsapi/picker.html b/authority/jsapi/picker.html
index f8c564dc40a692339e67740a82cca5e6a771ae8f..3319b14b6436bdd8c4914bf659ef175bcee9c791 100644
--- a/authority/jsapi/picker.html
+++ b/authority/jsapi/picker.html
@@ -76,16 +76,22 @@
         font-weight: bold;
     }
 
-    #availableIdentities > div {
+    #identities > div {
         margin-left: .8em;
         margin-bottom: .5em;
         height: 1.4em;
     }
 
-    #availableIdentities > div > * {
-        float: left; 
+    #identities > div > * {
+        float: left;
+        cursor: pointer;
     }
 
+    button {
+        cursor: pointer;
+    }
+
+
   </style>
 </head>
 <body id="body">
@@ -93,8 +99,8 @@
 <div id="title"> Sign in with your Email Address </div>
 <div id="content">
 <p>Which email would you like to use to log into <span id="sitename"></span>:</p>
-<div id="availableIdentities">
-</div>
+<form id="identities" name="identities">
+</form>
 </div>
 <div id="bottom-bar">
 <button id="back">Go Back</button>
diff --git a/authority/jsapi/picker.js b/authority/jsapi/picker.js
index bcd3ec386c2cf3707e41b6f10009a8d48377698e..3ecf38d322b514e590086b50c4bae800981518b2 100644
--- a/authority/jsapi/picker.js
+++ b/authority/jsapi/picker.js
@@ -13,25 +13,56 @@ chan.bind("getVerifiedEmail", function(trans, s) {
 
   // set the requesting site
   document.getElementById("sitename").innerText = trans.origin.replace(/^.*:\/\//, "");
-  
+
   // iterate over all of the available identities and add a links to them
   // XXX -- actually pull these guys outta localStorage
 
-  var list = document.getElementById('availableIdentities');
+  var list = document.getElementById('identities');
+
+  var first = true;
   [ "foo@bar.com", "baz@bing.com" ].forEach(function(i) {
     var div = document.createElement("div");
     var button = document.createElement("input");
     button.setAttribute('type', 'radio');
+    button.checked = first;
+    first = false;
     button.name = "id_selection";
     button.value = i;
     div.appendChild(button);
     var label = document.createElement("div");
     label.innerText = i;
+    label.addEventListener("click", function(evt) {
+      console.log("clicked label: ");
+      this.parentNode.firstChild.checked = true;
+    });
     div.appendChild(label);
     list.appendChild(div);
   });
 
   // now make the body visible...
   document.getElementById("body").style.display = "block";
+
+  document.getElementById('signin').addEventListener("click", function(evt) {
+    var is = document.forms["identities"].elements['id_selection'];
+    var id = undefined;
+    for (var i = 0; i < is.length; i++) {
+      if (is[i].checked) {
+        id = is[i].value;
+        break;
+      }
+    }
+    if (id) {
+      trans.complete(id);
+      window.self.close();
+    } else {
+      trans.error("noSelection", "no id selected by user");
+      window.self.close();
+    }
+  });
+
+  document.getElementById('cancel').addEventListener("click", function(evt) {
+    trans.error("noSelection", "no id selected by user");
+    window.self.close();
+  });
 });