diff --git a/project/projectexport.py b/project/projectexport.py
index 177eea4..cc9353c 100644
--- a/project/projectexport.py
+++ b/project/projectexport.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """Servlet to export a project's config in JSON format.
 """
@@ -9,24 +8,19 @@
 from __future__ import division
 from __future__ import absolute_import
 
-import logging
 import time
 
-import ezt
-
-from framework import flaskservlet
 from framework import permissions
 from framework import jsonfeed
 from framework import servlet
 from project import project_helpers
-from tracker import tracker_bizobj
 
 
 class ProjectExport(servlet.Servlet):
   """Only site admins can export a project"""
 
   _PAGE_TEMPLATE = 'project/project-export-page.ezt'
-  _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ADMIN
+  _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ADMIN
 
   def AssertBasePermission(self, mr):
     """Make sure that the logged in user has permission to view this page."""
@@ -43,11 +37,10 @@
         'page_perms': self.MakePagePerms(mr, None, permissions.CREATE_ISSUE),
     }
 
-  # def GetProjectExportPage(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def GetProjectExportPage(self, **kwargs):
+    return self.handler(**kwargs)
 
 
-# TODO(https://crbug.com/monorail/10936): Use FlaskJsonFeed
 class ProjectExportJSON(jsonfeed.JsonFeed):
   """ProjectExportJSON shows all configuration for a Project in JSON form."""
 
@@ -207,8 +200,8 @@
     }
     return component_json
 
-  # def GetProjectExportJSONPage(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def GetProjectExportJSONPage(self, **kwargs):
+    return self.handler(**kwargs)
 
-  # def PostProjectExportJSONPage(self, **kwargs):
-  #   return self.handler(**kwargs)
\ No newline at end of file
+  def PostProjectExportJSONPage(self, **kwargs):
+    return self.handler(**kwargs)
