diff --git a/src/conduit/SprintCreateConduitAPIMethod.php b/src/conduit/SprintCreateConduitAPIMethod.php
index 920e40b267b196dcbf4cb3290db7913f454292a2..712c8fac319267ee05454803218559ce71b752af 100644
--- a/src/conduit/SprintCreateConduitAPIMethod.php
+++ b/src/conduit/SprintCreateConduitAPIMethod.php
@@ -80,9 +80,9 @@ final class SprintCreateConduitAPIMethod extends SprintConduitAPIMethod {
         ->setNewValue(strtotime($request->getValue('enddate')));
 
     $editor = id(new PhabricatorProjectTransactionEditor())
-      ->setActor($user)
-      ->setContinueOnNoEffect(true)
-      ->setContentSourceFromConduitRequest($request);
+        ->setActor($user)
+        ->setContinueOnNoEffect(true)
+        ->setContentSource($request->newContentSource());
 
     $editor->applyTransactions($project, $xactions);
 
diff --git a/src/controller/SprintProjectProfileController.php b/src/controller/SprintProjectProfileController.php
index 71ce5e408406368de40fed076337d69b94e3389f..a1b2c19d7c8bce13f20f7dfecf920a2824895850 100644
--- a/src/controller/SprintProjectProfileController.php
+++ b/src/controller/SprintProjectProfileController.php
@@ -29,7 +29,7 @@ final class SprintProjectProfileController
 
     $header = id(new PHUIHeaderView())
       ->setHeader(array($project->getDisplayName(), $tag))
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setPolicyObject($project)
       ->setImage($picture)
       ->setProfileHeader(true);
@@ -58,14 +58,14 @@ final class SprintProjectProfileController
     $subproject_list = $this->buildSubprojectList($project);
 
     $member_list = id(new PhabricatorProjectMemberListView())
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setProject($project)
       ->setLimit(5)
       ->setBackground(PHUIBoxView::GREY)
       ->setUserPHIDs($project->getMemberPHIDs());
 
     $watcher_list = id(new PhabricatorProjectWatcherListView())
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setProject($project)
       ->setLimit(5)
       ->setBackground(PHUIBoxView::GREY)
@@ -131,7 +131,7 @@ final class SprintProjectProfileController
     $viewer = $request->getViewer();
 
     $view = id(new PHUIPropertyListView())
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setObject($project);
 
     $field_list = PhabricatorCustomField::getObjectFields(
@@ -214,7 +214,7 @@ final class SprintProjectProfileController
     }
 
     $milestone_list = id(new PhabricatorProjectListView())
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setProjects($milestones)
       ->renderList();
 
@@ -262,7 +262,7 @@ final class SprintProjectProfileController
     }
 
     $subproject_list = id(new PhabricatorProjectListView())
-      ->setUser($viewer)
+      ->setViewer($viewer)
       ->setProjects($subprojects)
       ->renderList();
 
diff --git a/src/controller/SprintReportController.php b/src/controller/SprintReportController.php
index a3cec51d30391b49617e3639f1c331fa5bfa1ebd..88a6cb451d6919665bd4059efb277a100aa577a1 100644
--- a/src/controller/SprintReportController.php
+++ b/src/controller/SprintReportController.php
@@ -33,18 +33,18 @@ final class SprintReportController extends SprintController {
       case 'user':
       case 'project':
       $core = id(new SprintReportOpenTasksView())
-          ->setUser($viewer)
+          ->setViewer($viewer)
           ->setRequest($request)
           ->setView($this->view);
         break;
       case 'burn':
         $core = id(new SprintReportBurnUpView())
-            ->setUser($viewer)
+            ->setViewer($viewer)
             ->setRequest($request);
         break;
       case 'history':
         $core = id(new SprintHistoryTableView())
-            ->setUser($viewer)
+            ->setViewer($viewer)
             ->setRequest($request);
         break;
       default:
diff --git a/src/customfield/SprintProjectCustomField.php b/src/customfield/SprintProjectCustomField.php
index 94b201f775d59f02cda2905e6741c650cd8f903d..8761b9d7fe3ad555bbca64a53bf786ceba529299 100644
--- a/src/customfield/SprintProjectCustomField.php
+++ b/src/customfield/SprintProjectCustomField.php
@@ -109,7 +109,7 @@ abstract class SprintProjectCustomField extends PhabricatorProjectCustomField
     $control = id(new AphrontFormDateControl())
         ->setLabel($proxy->getFieldName())
         ->setName($proxy->getFieldKey())
-        ->setUser($proxy->getViewer())
+        ->setViewer($proxy->getViewer())
         ->setCaption($proxy->getCaption())
         ->setAllowNull(!$proxy->getRequired())
         ->setInitialTime($time);
diff --git a/src/tests/SprintControllerTest.php b/src/tests/SprintControllerTest.php
index b9103c7170f8b6ca94bf27da55abf18c391e3065..7b30a6122f4b1b93a0b6a360eaa9895e3f1bd00f 100644
--- a/src/tests/SprintControllerTest.php
+++ b/src/tests/SprintControllerTest.php
@@ -34,7 +34,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['id'] =  18;
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('AphrontResponse', $response);
@@ -50,7 +50,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['id'] =  3;
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('Aphront404Response', $response);
@@ -66,7 +66,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['id'] =  18;
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('AphrontResponse', $response);
@@ -82,7 +82,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['id'] =  3;
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('Aphront404Response', $response);
@@ -98,7 +98,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['slug'] =  'null_project';
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('AphrontResponse', $response);
@@ -114,7 +114,7 @@ final class SprintControllerTest extends SprintTestCase {
     $data['slug'] =  'fail_project';
     $request->setURIMap($data);
     $viewer = $this->generateNewTestUser();
-    $request->setUser($viewer);
+    $request->setViewer($viewer);
     $dvcontroller->willProcessRequest($data);
     $response = $dvcontroller->handleRequest($request);
     $this->assertInstanceOf('Aphront404Response', $response);
diff --git a/src/tests/SprintQueryTest.php b/src/tests/SprintQueryTest.php
index 77a78106124b540e25b08bfb13fdbb3e34906d56..b8d371885603105a8d3d0b63243657bd5d43f7ce 100644
--- a/src/tests/SprintQueryTest.php
+++ b/src/tests/SprintQueryTest.php
@@ -10,7 +10,7 @@ final class SprintQueryTest extends SprintTestCase {
   public function testRequestSetUser() {
     $r = new AphrontRequest('example.com', '/');
     $viewer = $this->generateNewTestUser();
-    $r->setUser($viewer);
+    $r->setViewer($viewer);
     $this->assertEquals($viewer, $r->getUser());
     return $r;
   }
diff --git a/src/view/SprintView.php b/src/view/SprintView.php
index 8f200e010182667c7ab6d87369ad85558cb806b3..3571597cb9f1e02be8a482a3450bbc9e3e5d30cd 100644
--- a/src/view/SprintView.php
+++ b/src/view/SprintView.php
@@ -2,11 +2,19 @@
 
 
 abstract class SprintView extends AphrontView {
+
+  private $viewer;
+
+  public function setViewer(PhabricatorUser $viewer) {
+    $this->viewer = $viewer;
+    return $this;
+  }
+
   public function renderReportFilters(array $tokens, $has_window, $request,
-                                      $viewer) {
+                                      PhabricatorUser $viewer) {
 
     $form = id(new AphrontFormView())
-        ->setUser($viewer)
+        ->setViewer($viewer)
         ->appendControl(
             id(new AphrontFormTokenizerControl())
                 ->setDatasource(new PhabricatorProjectDatasource())
@@ -16,7 +24,7 @@ abstract class SprintView extends AphrontView {
                 ->setValue(mpull($tokens, 'getPHID')));
 
     if ($has_window) {
-      list($window_str, , $window_error) = $this->getWindow($request);
+      list($window_str, , $window_error) = $this->getWindow($request, $viewer);
       $form
           ->appendChild(
               id(new AphrontFormDividerControl()));
@@ -34,7 +42,7 @@ abstract class SprintView extends AphrontView {
   }
 
 
-  public function getWindow($request) {
+  public function getWindow($request, PhabricatorUser $viewer) {
     $window_str = $request->getStr('window', '12 AM 7 days ago');
 
     $error = null;
@@ -42,7 +50,7 @@ abstract class SprintView extends AphrontView {
     // Do locale-aware parsing so that the user's timezone is assumed for
     // time windows like "3 PM", rather than assuming the server timezone.
 
-    $window_epoch = PhabricatorTime::parseLocalTime($window_str, $this->user);
+    $window_epoch = PhabricatorTime::parseLocalTime($window_str, $viewer);
     if ($window_epoch === null) {
       $error = 'Invalid';
       $window_epoch = time() - (60 * 60 * 24 * 7);
@@ -63,7 +71,7 @@ abstract class SprintView extends AphrontView {
     return array($window_str, $window_epoch, $error);
   }
 
-  public function buildFilter($request) {
+  public function buildFilter($request, $viewer) {
     $handle = null;
     $project_phid = $request->getStr('project');
     if ($project_phid) {
@@ -75,7 +83,7 @@ abstract class SprintView extends AphrontView {
       $tokens = $this->getTokens($handle);
     }
     $filter = $this->renderReportFilters($tokens, $has_window = true,
-        $request, $this->user);
+        $request, $viewer);
     return $filter;
   }
 
diff --git a/src/view/reports/SprintHistoryTableView.php b/src/view/reports/SprintHistoryTableView.php
index a8565dd5c3c635cf8410eca3fde6af2fa50366b7..444a6808fbfd281ce7fad8fe60d2305bd9e48e5e 100644
--- a/src/view/reports/SprintHistoryTableView.php
+++ b/src/view/reports/SprintHistoryTableView.php
@@ -7,7 +7,7 @@ final class SprintHistoryTableView extends SprintView {
   protected $viewer;
 
   public function setViewer(PhabricatorUser $viewer) {
-    $this->user = $viewer;
+    $this->viewer = $viewer;
     return $this;
   }
 
diff --git a/src/view/reports/SprintReportBurnUpView.php b/src/view/reports/SprintReportBurnUpView.php
index 56f464af8fc0e2974349cfebaa8ce82675d5b8ca..1e5450e5eb8aadf9d279a7b6525e07e0a0299f41 100644
--- a/src/view/reports/SprintReportBurnUpView.php
+++ b/src/view/reports/SprintReportBurnUpView.php
@@ -3,9 +3,10 @@
 final class SprintReportBurnUpView extends SprintView {
 
   private $request;
+  private $viewer;
 
-  public function setUser(PhabricatorUser $viewer) {
-    $this->user = $viewer;
+  public function setViewer(PhabricatorUser $viewer) {
+    $this->viewer = $viewer;
     return $this;
   }
 
@@ -16,7 +17,7 @@ final class SprintReportBurnUpView extends SprintView {
 
   public function render() {
     require_celerity_resource('sprint-report-css', 'sprint');
-    $filter = $this->BuildFilter($this->request);
+    $filter = $this->BuildFilter($this->request, $this->viewer);
     if ($this->request->getStr('project')) {
       $chart = $this->buildBurnDownChart();
       $table = $this->buildStatsTable();
@@ -73,7 +74,7 @@ final class SprintReportBurnUpView extends SprintView {
 
      $day_bucket = phabricator_format_local_time(
           $row['dateCreated'],
-          $this->user,
+          $this->viewer,
           'Yz');
 
       if (empty($stats[$day_bucket])) {
@@ -94,7 +95,7 @@ final class SprintReportBurnUpView extends SprintView {
 
        $day_bucket = phabricator_format_local_time(
             $row['dateCreated'],
-            $this->user,
+            $this->viewer,
             'Yz');
        $day_buckets[$day_bucket] = $row['dateCreated'];
        }
@@ -107,7 +108,7 @@ final class SprintReportBurnUpView extends SprintView {
   private function buildBucket($epoch, $format) {
     $bucket = phabricator_format_local_time(
         $epoch,
-        $this->user,
+        $this->viewer,
         $format);
     return $bucket;
   }
@@ -138,7 +139,7 @@ final class SprintReportBurnUpView extends SprintView {
       if ($week_bucket != $last_week) {
         if ($week) {
           $rows[] = $this->formatBurnRow(
-              'Week of '.phabricator_date($last_week_epoch, $this->user),
+              'Week of '.phabricator_date($last_week_epoch, $this->viewer),
               $week);
           $rowc[] = 'week';
         }
@@ -153,7 +154,7 @@ final class SprintReportBurnUpView extends SprintView {
         if ($month) {
           $rows[] = $this->formatBurnRow(
               phabricator_format_local_time($last_month_epoch,
-                  $this->user, 'F, Y'),
+                  $this->viewer, 'F, Y'),
               $month);
           $rowc[] = 'month';
         }
@@ -162,7 +163,7 @@ final class SprintReportBurnUpView extends SprintView {
         $last_month_epoch = $epoch;
       }
 
-      $rows[] = $this->formatBurnRow(phabricator_date($epoch, $this->user),
+      $rows[] = $this->formatBurnRow(phabricator_date($epoch, $this->viewer),
           $info);
       $rowc[] = null;
       $week['open'] += $info['open'];
diff --git a/src/view/reports/SprintReportOpenTasksView.php b/src/view/reports/SprintReportOpenTasksView.php
index 421a35e50d684dded18ecd504872644c1e205424..2a4f32c018b67617e926f10f526d01e9745830a3 100644
--- a/src/view/reports/SprintReportOpenTasksView.php
+++ b/src/view/reports/SprintReportOpenTasksView.php
@@ -6,8 +6,8 @@ final class SprintReportOpenTasksView extends SprintView {
     private $request;
     private $view;
 
-  public function setUser(PhabricatorUser $viewer) {
-    $this->user = $viewer;
+  public function setViewer(PhabricatorUser $viewer) {
+    $this->viewer = $viewer;
     return $this;
   }
 
@@ -44,13 +44,13 @@ final class SprintReportOpenTasksView extends SprintView {
     if ($project_phid) {
       $phids = array($project_phid);
       $project_handle = $this->getProjectHandle($phids, $project_phid, $this->request);
-      $tasks = $this->getOpenTasksforProject($this->user, $phids);
+      $tasks = $this->getOpenTasksforProject($this->viewer, $phids);
     } else {
-      $tasks = $this->getOpenTasks($this->user);
+      $tasks = $this->getOpenTasks($this->viewer);
     }
     $recently_closed = $this->loadRecentlyClosedTasks();
 
-    $date = phabricator_date(time(), $this->user);
+    $date = phabricator_date(time(), $this->viewer);
 
     $viewer_task_view = new UserOpenTasksView();
     $project_task_view = new ProjectOpenTasksView();
@@ -96,7 +96,7 @@ final class SprintReportOpenTasksView extends SprintView {
       $tokens = array($project_handle);
     }
     $filter = $this->renderReportFilters($tokens, $has_window = false,
-        $this->request, $this->user);
+        $this->request, $this->viewer);
 
     return array($filter, $panel);
   }
@@ -286,8 +286,8 @@ final class SprintReportOpenTasksView extends SprintView {
         pht('Oldest (Pri)'));
     $cclass[] = 'center narrow';
 
-    list($window_epoch) = $this->getWindow($this->request);
-    $edate = phabricator_datetime($window_epoch, $this->user);
+    list($window_epoch) = $this->getWindow($this->request, $this->viewer);
+    $edate = phabricator_datetime($window_epoch, $this->viewer);
     $cname[] = javelin_tag(
         'span',
         array(
@@ -337,7 +337,7 @@ final class SprintReportOpenTasksView extends SprintView {
    * Load all the tasks that have been recently closed.
    */
   private function loadRecentlyClosedTasks() {
-    list(, , $window_epoch) = $this->getWindow($this->request);
+    list(, , $window_epoch) = $this->getWindow($this->request, $this->viewer);
 
     $table = new ManiphestTask();
     $xtable = new ManiphestTransaction();