diff --git a/performance/lib/reauth.js b/performance/lib/reauth.js
index a7e8aa43ad55fd352fbae8ea3e71150426921cb4..211025c0d4a787104106ae472f9a739268467bf9 100644
--- a/performance/lib/reauth.js
+++ b/performance/lib/reauth.js
@@ -45,5 +45,7 @@ exports.startFunc = function(cfg, cb) {
   // 3. in page javascript calls CSRF to get a CSRF token
   // 4. the RP will call /verify to verify a generated assertion
 
+  // XXX: implementing this will require actual crypto.
+
   setTimeout(function() { cb(true); }, 10); 
 };
diff --git a/performance/lib/signin.js b/performance/lib/signin.js
index 8dbb319805d9dcc15bb7c2a928a9c99f9312cfd4..5400d57911c52ea0bd90fb0c70c73a7abc181e40 100644
--- a/performance/lib/signin.js
+++ b/performance/lib/signin.js
@@ -36,12 +36,9 @@
 
 /* this file is the "signin" activity, which simulates the process of a user
  * who has used browserid before signing into browserid inside the dialog and
- * picking an idenity */
+ * picking an identity */
 
 exports.startFunc = function(cfg, cb) {
-  // A new user signing up for browserid looks like this in terms of
-  // network transactions:
-  //
   // 1. RP includes include.js 
   // 2. users' browser loads all code associated with dialog
   // 3. in page javascript calls CSRF to get a CSRF token
diff --git a/performance/lib/user_db.js b/performance/lib/user_db.js
index 90ac8a663226cee062905218d00e8c5b20702076..1e6f8ffd111071fb1f3b2b6db30c991e60b742c3 100644
--- a/performance/lib/user_db.js
+++ b/performance/lib/user_db.js
@@ -43,7 +43,7 @@ var secrets = require('../../libs/secrets.js');
 // the grandiose database
 var users = [ ];
 
-exports.numUsers = function() { return users.length; }
+exports.num = function() { return users.length; }
 
 function genEmail() {
   return secrets.generate(8) + "@" + secrets.generate(8) + "." + secrets.generate(3);
diff --git a/performance/run.js b/performance/run.js
index 470b143b134153911911293b087c8e3927d7ec75..e7a0a537f3f2ed6edd2354e38d23dd5f869ab271 100755
--- a/performance/run.js
+++ b/performance/run.js
@@ -259,5 +259,23 @@ function poll() {
   iterations++;
 }
 
-console.log("Average active users simulated over the last 1s/5s/60s:");
-setTimeout(poll, 1);
+// always start out by creating a bunch of users
+var NUM_INITIAL_USERS = 50;
+
+console.log("To start, let's create " + NUM_INITIAL_USERS + " users.  A moment please.");
+
+const userdb = require("./lib/user_db.js");
+var createUser = require("./lib/signup.js").startFunc;
+var created = 0;
+for (var i = 0; i < NUM_INITIAL_USERS; i++) {
+  createUser(configuration, function(rv) {
+    if (!rv) {
+      console.log("failed to create initial users! tragedy!  run away!");
+      process.exit(1);
+    }
+    if (++created == NUM_INITIAL_USERS) {
+      console.log("Average active users simulated over the last 1s/5s/60s:");
+      poll();
+    }
+  });
+}