       
       try request.session().data["timeStamp"] = Node(String(Date().timeIntervalSinceReferenceDate))
       
-      return try server.view.make("index",
-                                  ["url": Node("https://github.com/login/oauth/authorize?client_id=\(GitHubClientID)")])
-    }
-    
-    server.get("oauth", "github") { [unowned self] request in
+      return try self.droplet.view.make("index",
+                                        ["url": Node("https://github.com/login/oauth/authorize?client_id=\(GitHubClientID)")])
+    }
+    
+    self.droplet.get("oauth", "github") { request in
       guard let sessionIdentifier = try request.session().identifier,
             let code = request.data["code"]?.string
       else {

  init() {
    self.shortDateFormatter.dateStyle = .short
    
    setupRoutes(server: server)
  }
  
  func startServer() {
    self.server.run()
  }
  
  private func setupRoutes(server: Droplet) {
    server.get("/") { [unowned self] request in
      // Redirect if we already have a user.
      
      if let user = self.userForRequest(request) {

private let MinQueryLength = 3

class App {
  private let droplet = Droplet()
  private let shortDateFormatter = DateFormatter()
  private var purgeTimeStamp = Date()

