diff --git a/tracker/fielddetail.py b/tracker/fielddetail.py
index 76cf378..ae607f2 100644
--- a/tracker/fielddetail.py
+++ b/tracker/fielddetail.py
@@ -1,27 +1,23 @@
-# 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.
 
 """A servlet for project and component owners to view and edit field defs."""
 from __future__ import print_function
 from __future__ import division
 from __future__ import absolute_import
 
-import logging
 import time
 import re
 
 import ezt
 
-from framework import exceptions
-from framework import flaskservlet
 from framework import framework_helpers
 from framework import framework_views
 from framework import permissions
 from framework import servlet
 from framework import urls
-from proto import tracker_pb2
+from mrproto import tracker_pb2
 from tracker import field_helpers
 from tracker import tracker_bizobj
 from tracker import tracker_helpers
@@ -31,7 +27,7 @@
 class FieldDetail(servlet.Servlet):
   """Servlet allowing project owners to view and edit a custom field."""
 
-  _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
+  _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
   _PAGE_TEMPLATE = 'tracker/field-detail-page.ezt'
 
   def _GetFieldDef(self, mr):
@@ -190,7 +186,8 @@
 
       if parsed.approvers_str:
         approver_ids_dict = self.services.user.LookupUserIDs(
-            mr.cnxn, re.split('[,;\s]+', parsed.approvers_str),
+            mr.cnxn,
+            re.split(r'[,;\s]+', parsed.approvers_str),
             autocreate=True)
         approver_ids = list(set(approver_ids_dict.values()))
       else:
@@ -249,8 +246,8 @@
           mr, urls.FIELD_DETAIL, field=field_def.field_name,
           saved=1, ts=int(time.time()))
 
-  # def GetFieldDetail(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def GetFieldDetail(self, **kwargs):
+    return self.handler(**kwargs)
 
-  # def PostFieldDetail(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def PostFieldDetail(self, **kwargs):
+    return self.handler(**kwargs)
