diff --git a/tracker/fieldcreate.py b/tracker/fieldcreate.py
index b1f2316..245b697 100644
--- a/tracker/fieldcreate.py
+++ b/tracker/fieldcreate.py
@@ -1,27 +1,22 @@
-# 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 owners to create a new field def."""
 from __future__ import print_function
 from __future__ import division
 from __future__ import absolute_import
 
-import logging
 import re
 import time
 
 import ezt
 
-from framework import exceptions
-from framework import flaskservlet
 from framework import framework_helpers
-from framework import jsonfeed
 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_constants
@@ -31,7 +26,7 @@
 class FieldCreate(servlet.Servlet):
   """Servlet allowing project owners to create a custom field."""
 
-  _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
+  _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
   _PAGE_TEMPLATE = 'tracker/field-create-page.ezt'
 
   def AssertBasePermission(self, mr):
@@ -41,7 +36,7 @@
       mr: commonly used info parsed from the request.
     """
     super(FieldCreate, self).AssertBasePermission(mr)
-    if not self.CheckPerm(mr, permissions.EDIT_PROJECT):
+    if not permissions.CanEditProjectConfig(mr, self.services):
       raise permissions.PermissionException(
           'You are not allowed to administer this project')
 
@@ -125,7 +120,8 @@
           parsed.is_restricted_field), 'Approval fields cannot be restricted.'
       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:
@@ -199,11 +195,11 @@
     return framework_helpers.FormatAbsoluteURL(
         mr, urls.ADMIN_LABELS, saved=1, ts=int(time.time()))
 
-  # def GetFieldCreate(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def GetFieldCreate(self, **kwargs):
+    return self.handler(**kwargs)
 
-  # def PostFieldCreate(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def PostFieldCreate(self, **kwargs):
+    return self.handler(**kwargs)
 
 
 def FieldNameErrorMessage(field_name, config):
