diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventCancelController.php b/src/applications/calendar/controller/PhabricatorCalendarEventCancelController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventCancelController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventCancelController.php
@@ -3,20 +3,14 @@
 final class PhabricatorCalendarEventCancelController
   extends PhabricatorCalendarController {
 
-  private $id;
-
-  public function willProcessRequest(array $data) {
-    $this->id = idx($data, 'id');
-  }
-
-  public function processRequest() {
-    $request  = $this->getRequest();
-    $user     = $request->getUser();
+  public function handleRequest(AphrontRequest $request) {
+    $viewer = $request->getViewer();
+    $id = $request->getURIData('id');
     $sequence = $request->getURIData('sequence');
 
     $event = id(new PhabricatorCalendarEventQuery())
-      ->setViewer($user)
-      ->withIDs(array($this->id))
+      ->setViewer($viewer)
+      ->withIDs(array($id))
       ->requireCapabilities(
         array(
           PhabricatorPolicyCapability::CAN_VIEW,
@@ -26,7 +20,7 @@
 
     if ($sequence) {
       $parent_event = $event;
-      $event = $parent_event->generateNthGhost($sequence, $user);
+      $event = $parent_event->generateNthGhost($sequence, $viewer);
       $event->attachParentEvent($parent_event);
     }
 
@@ -51,10 +45,10 @@
         return id(new AphrontRedirectResponse())->setURI($cancel_uri);
       } else if ($sequence) {
         $event = $this->createEventFromGhost(
-          $user,
+          $viewer,
           $event,
           $sequence);
-        $event->applyViewerTimezone($user);
+        $event->applyViewerTimezone($viewer);
       }
 
       $xactions = array();
@@ -65,7 +59,7 @@
         ->setNewValue(!$is_cancelled);
 
       $editor = id(new PhabricatorCalendarEventEditor())
-        ->setActor($user)
+        ->setActor($viewer)
         ->setContentSourceFromRequest($request)
         ->setContinueOnNoEffect(true)
         ->setContinueOnMissingFields(true);
diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventCommentController.php b/src/applications/calendar/controller/PhabricatorCalendarEventCommentController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventCommentController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventCommentController.php
@@ -3,24 +3,20 @@
 final class PhabricatorCalendarEventCommentController
   extends PhabricatorCalendarController {
 
-  private $id;
-
-  public function willProcessRequest(array $data) {
-    $this->id = idx($data, 'id');
-  }
-
   public function handleRequest(AphrontRequest $request) {
     if (!$request->isFormPost()) {
       return new Aphront400Response();
     }
 
-    $user = $request->getUser();
+    $viewer = $request->getViewer();
+    $id = $request->getURIData('id');
+
     $is_preview = $request->isPreviewRequest();
     $draft = PhabricatorDraft::buildFromRequest($request);
 
     $event = id(new PhabricatorCalendarEventQuery())
-      ->setViewer($user)
-      ->withIDs(array($this->id))
+      ->setViewer($viewer)
+      ->withIDs(array($id))
       ->executeOne();
     if (!$event) {
       return new Aphront404Response();
@@ -29,7 +25,7 @@
     $index = $request->getURIData('sequence');
     if ($index && !$is_preview) {
       $result = $this->getEventAtIndexForGhostPHID(
-        $user,
+        $viewer,
         $event->getPHID(),
         $index);
 
@@ -37,10 +33,10 @@
         $event = $result;
       } else {
         $event = $this->createEventFromGhost(
-          $user,
+          $viewer,
           $event,
           $index);
-        $event->applyViewerTimezone($user);
+        $event->applyViewerTimezone($viewer);
       }
     }
 
@@ -54,7 +50,7 @@
           ->setContent($request->getStr('comment')));
 
     $editor = id(new PhabricatorCalendarEventEditor())
-      ->setActor($user)
+      ->setActor($viewer)
       ->setContinueOnNoEffect($request->isContinueRequest())
       ->setContentSourceFromRequest($request)
       ->setIsPreview($is_preview);
@@ -73,7 +69,7 @@
 
     if ($request->isAjax() && $is_preview) {
       return id(new PhabricatorApplicationTransactionResponse())
-        ->setViewer($user)
+        ->setViewer($viewer)
         ->setTransactions($xactions)
         ->setIsPreview($is_preview);
     } else {
diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventEditController.php b/src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
@@ -5,10 +5,6 @@
 
   private $id;
 
-  public function willProcessRequest(array $data) {
-    $this->id = idx($data, 'id');
-  }
-
   public function isCreate() {
     return !$this->id;
   }
@@ -16,6 +12,8 @@
   public function handleRequest(AphrontRequest $request) {
     $viewer = $request->getViewer();
     $user_phid = $viewer->getPHID();
+    $this->id = $request->getURIData('id');
+
     $error_name = true;
     $error_recurrence_end_date = null;
     $error_start_date = true;
diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventEditIconController.php b/src/applications/calendar/controller/PhabricatorCalendarEventEditIconController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventEditIconController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventEditIconController.php
@@ -3,19 +3,14 @@
 final class PhabricatorCalendarEventEditIconController
   extends PhabricatorCalendarController {
 
-  private $id;
-
-  public function willProcessRequest(array $data) {
-    $this->id = idx($data, 'id');
-  }
-
   public function handleRequest(AphrontRequest $request) {
     $viewer = $request->getUser();
+    $id = $request->getURIData('id');
 
-    if ($this->id) {
+    if ($id) {
       $event = id(new PhabricatorCalendarEventQuery())
         ->setViewer($viewer)
-        ->withIDs(array($this->id))
+        ->withIDs(array($id))
         ->requireCapabilities(
           array(
             PhabricatorPolicyCapability::CAN_VIEW,
diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventJoinController.php b/src/applications/calendar/controller/PhabricatorCalendarEventJoinController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventJoinController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventJoinController.php
@@ -3,14 +3,12 @@
 final class PhabricatorCalendarEventJoinController
   extends PhabricatorCalendarController {
 
-  private $id;
-
   const ACTION_ACCEPT = 'accept';
   const ACTION_DECLINE = 'decline';
   const ACTION_JOIN = 'join';
 
   public function handleRequest(AphrontRequest $request) {
-    $this->id = $request->getURIData('id');
+    $id = $request->getURIData('id');
     $action = $request->getURIData('action');
 
     $request = $this->getRequest();
@@ -20,7 +18,7 @@
 
     $event = id(new PhabricatorCalendarEventQuery())
       ->setViewer($viewer)
-      ->withIDs(array($this->id))
+      ->withIDs(array($id))
       ->executeOne();
 
     if (!$event) {
diff --git a/src/applications/calendar/controller/PhabricatorCalendarEventViewController.php b/src/applications/calendar/controller/PhabricatorCalendarEventViewController.php
--- a/src/applications/calendar/controller/PhabricatorCalendarEventViewController.php
+++ b/src/applications/calendar/controller/PhabricatorCalendarEventViewController.php
@@ -3,26 +3,20 @@
 final class PhabricatorCalendarEventViewController
   extends PhabricatorCalendarController {
 
-  private $id;
-
   public function shouldAllowPublic() {
     return true;
   }
 
-  public function willProcessRequest(array $data) {
-    $this->id = $data['id'];
-  }
-
-  public function processRequest() {
-    $request = $this->getRequest();
-    $viewer = $request->getUser();
+  public function handleRequest(AphrontRequest $request) {
+    $viewer = $request->getViewer();
+    $id = $request->getURIData('id');
     $sequence = $request->getURIData('sequence');
 
     $timeline = null;
 
     $event = id(new PhabricatorCalendarEventQuery())
       ->setViewer($viewer)
-      ->withIDs(array($this->id))
+      ->withIDs(array($id))
       ->executeOne();
     if (!$event) {
       return new Aphront404Response();