diff --git a/config/settings/base.py b/config/settings/base.py
index 3b040c16e74e8d139f56a0e884bb55880bfeaeb8..2c1d3250a0d0fd15788394a72f4f13b4b93a026b 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -1,7 +1,7 @@
 import os, time, socket, logging
 from datetime import datetime, timedelta
 from cloghandler import ConcurrentRotatingFileHandler
-from utils import posixToGpsTime
+from core.time_utils import posixToGpsTime
 
 # Get local settings:
 # SERVER_HOSTNAME, SERVER_FQDN, IS_PRODUCTION_SERVER, ADMINS, GRACEDB_PATHS
diff --git a/core/__init__.py b/core/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/utils/__init__.py b/core/time_utils.py
similarity index 100%
rename from utils/__init__.py
rename to core/time_utils.py
diff --git a/utils/vfile.py b/core/vfile.py
similarity index 100%
rename from utils/vfile.py
rename to core/vfile.py
diff --git a/gracedb/alert.py b/gracedb/alert.py
index fa587ad42b30cdc4eba4fecab6c487a51d5631d4..e9ebdd2d37c9700e15cf445889513d02240566f8 100644
--- a/gracedb/alert.py
+++ b/gracedb/alert.py
@@ -15,7 +15,7 @@ log = logging.getLogger(__name__)
 
 from django_twilio.client import twilio_client
 
-from utils import gpsToUtc
+from core.time_utils import gpsToUtc
 
 from query import filter_for_labels
 
diff --git a/gracedb/api.py b/gracedb/api.py
index a053c984c60e51910a87d997c78e980fe7342ada..4471700567338bcb0bc4258b716ca8d7e49f1761 100644
--- a/gracedb/api.py
+++ b/gracedb/api.py
@@ -42,7 +42,7 @@ import urllib
 import shutil
 import exceptions
 
-from utils.vfile import VersionedFile
+from core.vfile import VersionedFile
 
 import logging; logger = logging.getLogger(__name__)
 # 
diff --git a/gracedb/buildVOEvent.py b/gracedb/buildVOEvent.py
index 8bad656d19589a2dc5f7be710933c48f1bdefffc..9c38002a80aa4c4fb755bb271b0b2b6c512fecf7 100644
--- a/gracedb/buildVOEvent.py
+++ b/gracedb/buildVOEvent.py
@@ -19,8 +19,7 @@ from VOEventLib.VOEvent import ObservationLocation, ObservatoryLocation
 from VOEventLib.VOEvent import ObsDataLocation, WhereWhen
 from VOEventLib.VOEvent import Time, TimeInstant
 
-# XXX ER2.utils.  utils is in project directory.  ugh.
-from utils import gpsToUtc
+from core.time_utils import gpsToUtc
 from django.utils import timezone
 from django.conf import settings
 from django.urls import reverse
diff --git a/gracedb/models.py b/gracedb/models.py
index 28986d7bf97f03754ab710d531dd3a0520b75157..e50b4d082a9307fe15d7374fefecea717459e08c 100644
--- a/gracedb/models.py
+++ b/gracedb/models.py
@@ -21,8 +21,7 @@ from glue.lal import LIGOTimeGPS
 
 import json, re
 
-# XXX ER2.utils.  utils is in project directory.  ugh.
-from utils import posixToGpsTime
+from core.time_utils import posixToGpsTime
 
 from django.conf import settings
 import pytz
diff --git a/gracedb/reports.py b/gracedb/reports.py
index 92bec48cfa60878ce098fcbf12a9ab4f56c7ca95..180f94fc2ecdee3d09ff21933b9cb177e8ec0b99 100644
--- a/gracedb/reports.py
+++ b/gracedb/reports.py
@@ -26,7 +26,7 @@ import base64
 import sys
 import calendar
 from datetime import timedelta, datetime
-from utils import posixToGpsTime
+from core.time_utils import posixToGpsTime
 from django.utils import timezone
 import pytz
 import json
diff --git a/gracedb/serialize.py b/gracedb/serialize.py
index 9283ffc322674dc34ccb6909aa7ba6c0cb0d9955..3cba1e6f1db3589e0247a8b32ba3dce3f1253280 100644
--- a/gracedb/serialize.py
+++ b/gracedb/serialize.py
@@ -9,7 +9,7 @@ from glue.ligolw import ligolw
 from glue.ligolw import table
 from glue.ligolw import lsctables
 
-from utils.vfile import VersionedFile
+from core.vfile import VersionedFile
 
 ##############################################################################
 #
diff --git a/gracedb/south_migrations/0040_migrate_eels_to_observations.py b/gracedb/south_migrations/0040_migrate_eels_to_observations.py
index 52482ee39b96d010911ed9fbb7b105a5afd2e299..d5e7550156cb87ebebc393699d6301fd4205aee0 100644
--- a/gracedb/south_migrations/0040_migrate_eels_to_observations.py
+++ b/gracedb/south_migrations/0040_migrate_eels_to_observations.py
@@ -4,7 +4,7 @@ from south.db import db
 from south.v2 import DataMigration
 from django.db import models
 import json
-from utils import gpsToUtc
+from core.time_utils import gpsToUtc
 
 class Migration(DataMigration):
 
diff --git a/gracedb/templatetags/timeutil.py b/gracedb/templatetags/timeutil.py
index c2c9248c9b8a7acc1158fcbb1afca9f6a5a7b02d..dc72a5c95f57176622db1e47680bd00567f1255e 100644
--- a/gracedb/templatetags/timeutil.py
+++ b/gracedb/templatetags/timeutil.py
@@ -6,8 +6,7 @@ from django.utils import dateformat
 from django.utils.html import conditional_escape
 from django.utils.safestring import mark_safe
 
-# XXX utils is in the project root.  this is not right. ER2.utils
-from utils import posixToGpsTime, gpsToUtc
+from core.time_utils import posixToGpsTime, gpsToUtc
 
 import pytz
 import time
diff --git a/gracedb/translator.py b/gracedb/translator.py
index e3415ed70e028cacc4d944ff78597d719b69cb32..1181204eac8163302b913801f3070a4440f3b397 100644
--- a/gracedb/translator.py
+++ b/gracedb/translator.py
@@ -15,8 +15,8 @@ from gracedb.serialize import populate_inspiral_tables, \
                                write_output_files
 
 from VOEventLib.Vutil import parse, getWhereWhen, findParam, getParamNames
-from utils import isoToGps, isoToGpsFloat
-from utils.vfile import VersionedFile
+from core.time_utils import isoToGps, isoToGpsFloat
+from core.vfile import VersionedFile
 
 import json
 import StringIO
diff --git a/gracedb/view_logic.py b/gracedb/view_logic.py
index bd752977b9b48d1b71ed63dc17ae1307e9fcaed1..e8e4a1641eecf57f1b39a0c8fdc174f5dbad58eb 100644
--- a/gracedb/view_logic.py
+++ b/gracedb/view_logic.py
@@ -14,7 +14,7 @@ from alert import issueAlert, issueAlertForLabel, issueAlertForUpdate, \
     issueXMPPAlert
 from translator import handle_uploaded_data
 
-from utils.vfile import VersionedFile
+from core.vfile import VersionedFile
 from view_utils import _saveUploadedFile
 from view_utils import eventToDict, eventLogToDict, emObservationToDict
 from permission_utils import assign_default_event_perms
diff --git a/gracedb/view_utils.py b/gracedb/view_utils.py
index 96a68e82da8973b843dc3e0d40de14fea5527259..f4c131b3e2ae7c7a7cddc236ab71e20baba6442a 100644
--- a/gracedb/view_utils.py
+++ b/gracedb/view_utils.py
@@ -8,7 +8,7 @@ from django.utils.safestring import mark_safe
 
 from gracedb.models import SingleInspiral, Event, Search, Group
 
-from utils.vfile import VersionedFile
+from core.vfile import VersionedFile
 from permission_utils import is_external
 from django.db.models import Q
 
diff --git a/gracedb/views.py b/gracedb/views.py
index 89df60bfe5a7858bf8ded443f5fbffe89c95cf72..da5560aa6348a0d50ac8207d241f498f88e8ae36 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -37,7 +37,7 @@ import os
 from django.conf import settings
 
 from buildVOEvent import buildVOEvent, VOEventBuilderException
-from utils.vfile import VersionedFile
+from core.vfile import VersionedFile
 
 # XXX This should be configurable / moddable or something
 MAX_QUERY_RESULTS = 1000