diff --git a/helios/templates/election_keygenerator.html b/helios/templates/election_keygenerator.html
index 946533d523919b422d1091cb44fc57bbbfb5742d..33da0dd0191ddf1b8eef6ec5b2db2409ad88bc12 100644
--- a/helios/templates/election_keygenerator.html
+++ b/helios/templates/election_keygenerator.html
@@ -27,13 +27,21 @@ function reuse_key(secret_key_text) {
     show_pk();
 }
 
+// start collecting some local randomness
+sjcl.random.startCollectors();
+
 $(document).ready(function() {
     clear_keys();
     $('#generator').hide();
-    BigInt.setup(function() {
-        ELGAMAL_PARAMS = ElGamal.Params.fromJSONObject({{eg_params_json|safe}});
-        $('#waiting_message').hide();
-        $('#generator').show();
+
+    // get some more server-side randomness for keygen
+    $.getJSON('../../get-randomness', function(result) {
+       sjcl.random.addEntropy(result.randomness);
+       BigInt.setup(function() {
+          ELGAMAL_PARAMS = ElGamal.Params.fromJSONObject({{eg_params_json|safe}});
+          $('#waiting_message').hide();
+          $('#generator').show();
+       });
     });
 });
 
diff --git a/helios/views.py b/helios/views.py
index ebdc81fafa973097bd32e52819f84cc7f4cf4d10..5721f2093d9c4185d5259475eae3aa8f8926c5f4 100644
--- a/helios/views.py
+++ b/helios/views.py
@@ -508,7 +508,7 @@ def trustee_upload_pk(request, election, trustee):
 ##
 
 @json
-@election_view(frozen=True)
+@election_view()
 def get_randomness(request, election):
   """
   get some randomness to sprinkle into the sjcl entropy pool