diff --git a/src/applications/drydock/controller/DrydockConsoleController.php b/src/applications/drydock/controller/DrydockConsoleController.php
index c6a8e25fd6..1d79f52c14 100644
--- a/src/applications/drydock/controller/DrydockConsoleController.php
+++ b/src/applications/drydock/controller/DrydockConsoleController.php
@@ -1,80 +1,86 @@
 <?php
 
 final class DrydockConsoleController extends DrydockController {
 
   public function shouldAllowPublic() {
     return true;
   }
 
   public function buildSideNavView() {
     $nav = new AphrontSideNavFilterView();
     $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
 
     // These are only used on mobile.
 
     $nav->addFilter('blueprint', pht('Blueprints'));
     $nav->addFilter('resource', pht('Resources'));
     $nav->addFilter('lease', pht('Leases'));
     $nav->addFilter('operation', pht('Repository Operations'));
 
     $nav->selectFilter(null);
 
     return $nav;
   }
 
   public function handleRequest(AphrontRequest $request) {
     $viewer = $request->getViewer();
 
     $menu = id(new PHUIObjectItemListView())
       ->setUser($viewer);
 
     $menu->addItem(
       id(new PHUIObjectItemView())
         ->setHeader(pht('Blueprints'))
         ->setIcon('fa-map-o')
         ->setHref($this->getApplicationURI('blueprint/'))
         ->addAttribute(
           pht(
             'Configure blueprints so Drydock can build resources, like '.
             'hosts and working copies.')));
 
     $menu->addItem(
       id(new PHUIObjectItemView())
         ->setHeader(pht('Resources'))
         ->setIcon('fa-map')
         ->setHref($this->getApplicationURI('resource/'))
         ->addAttribute(
           pht('View and manage resources Drydock has built, like hosts.')));
 
     $menu->addItem(
       id(new PHUIObjectItemView())
         ->setHeader(pht('Leases'))
         ->setIcon('fa-link')
         ->setHref($this->getApplicationURI('lease/'))
         ->addAttribute(pht('Manage leases on resources.')));
 
     $menu->addItem(
       id(new PHUIObjectItemView())
         ->setHeader(pht('Repository Operations'))
         ->setIcon('fa-fighter-jet')
         ->setHref($this->getApplicationURI('operation/'))
         ->addAttribute(pht('Review the repository operation queue.')));
 
     $crumbs = $this->buildApplicationCrumbs();
     $crumbs->addTextCrumb(pht('Console'));
+    $crumbs->setBorder(true);
 
     $box = id(new PHUIObjectBoxView())
-      ->setHeaderText(pht('Drydock Console'))
       ->setObjectList($menu);
 
-    return $this->buildApplicationPage(
-      array(
-        $crumbs,
-        $box,
-      ),
-      array(
-        'title'  => pht('Drydock Console'),
-      ));
+    $title = pht('Drydock Console');
+
+    $header = id(new PHUIHeaderView())
+      ->setHeader($title)
+      ->setHeaderIcon('fa-truck');
+
+    $view = id(new PHUITwoColumnView())
+      ->setHeader($header)
+      ->setFooter($box);
+
+    return $this->newPage()
+      ->setTitle($title)
+      ->setCrumbs($crumbs)
+      ->appendChild($view);
   }
 
 }
diff --git a/src/applications/drydock/controller/DrydockRepositoryOperationStatusController.php b/src/applications/drydock/controller/DrydockRepositoryOperationStatusController.php
index c6d38791f3..5f35c91bb3 100644
--- a/src/applications/drydock/controller/DrydockRepositoryOperationStatusController.php
+++ b/src/applications/drydock/controller/DrydockRepositoryOperationStatusController.php
@@ -1,59 +1,52 @@
 <?php
 
 final class DrydockRepositoryOperationStatusController
   extends DrydockRepositoryOperationController {
 
   public function shouldAllowPublic() {
     return true;
   }
 
   public function handleRequest(AphrontRequest $request) {
     $viewer = $request->getViewer();
     $id = $request->getURIData('id');
 
     $operation = id(new DrydockRepositoryOperationQuery())
       ->setViewer($viewer)
       ->withIDs(array($id))
       ->executeOne();
     if (!$operation) {
       return new Aphront404Response();
     }
 
     $id = $operation->getID();
 
     $status_view = id(new DrydockRepositoryOperationStatusView())
       ->setUser($viewer)
       ->setOperation($operation);
 
     if ($request->isAjax()) {
       $payload = array(
         'markup' => $status_view->renderUnderwayState(),
         'isUnderway' => $operation->isUnderway(),
       );
 
       return id(new AphrontAjaxResponse())
         ->setContent($payload);
     }
 
     $title = pht('Repository Operation %d', $id);
 
     $crumbs = $this->buildApplicationCrumbs();
     $crumbs->addTextCrumb(
       pht('Operations'),
       $this->getApplicationURI('operation/'));
     $crumbs->addTextCrumb($title);
 
-    return $this->buildApplicationPage(
-      array(
-        $crumbs,
-        $status_view,
-      ),
-      array(
-        'title' => array(
-          $title,
-          pht('Status'),
-        ),
-      ));
+    return $this->newPage()
+      ->setTitle(pht('Status'))
+      ->setCrumbs($crumbs)
+      ->appendChild($status_view);
   }
 
 }