diff --git a/gracedb/alert.py b/gracedb/alert.py
index 3399ed91266481586b87476cdbba17802dadb737..10dc7791fb6ced2a158913a27767deea394a7e17 100644
--- a/gracedb/alert.py
+++ b/gracedb/alert.py
@@ -9,7 +9,7 @@ from django.conf import settings
 from django.contrib.sites.models import Site
 from django.core.urlresolvers import reverse, get_script_prefix
 
-from gracedb.userprofile.models import Trigger, AnalysisType
+from userprofile.models import Trigger, AnalysisType
 
 import glue.ligolw.utils
 import glue.lvalert.utils
diff --git a/gracedb/buildVOEvent.py b/gracedb/buildVOEvent.py
index 5305db2fa4909c16e831dbb256575abfb81304df..e83a2145bcd304a8f6adb7f008e17c292bea0a64 100755
--- a/gracedb/buildVOEvent.py
+++ b/gracedb/buildVOEvent.py
@@ -8,11 +8,12 @@ See the VOEvent specification for details
 http://www.ivoa.net/Documents/latest/VOEvent.html
 """
 
-from gracedb.VOEventLib.VOEvent import *
-from gracedb.VOEventLib.Vutil import *
+from VOEventLib.VOEvent import *
+from VOEventLib.Vutil import *
 import sys, os
 
-from gracedb.utils import gpsToUtc
+# XXX ER2.utils.  utils is in project directory.  ugh.
+from utils import gpsToUtc
 from django.conf import settings
 
 def buildVOEvent(gevent):
diff --git a/gracedb/middleware/__init__.py b/gracedb/middleware/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/middleware/auth.py b/gracedb/middleware/auth.py
similarity index 99%
rename from middleware/auth.py
rename to gracedb/middleware/auth.py
index f9b0ef0ae8dafc12f3baff33907450612bb11d6a..e2d85da63db6ec3f760bb67dee7e003d08b4d727 100644
--- a/middleware/auth.py
+++ b/gracedb/middleware/auth.py
@@ -1,7 +1,7 @@
 
 from django.contrib.auth import authenticate
 
-from gracedb.gracedb.models import User
+from gracedb.models import User
 from django.contrib.auth.models import User as DjangoUser
 
 import re
diff --git a/gracedb/models.py b/gracedb/models.py
index feea692884a3c38b89d9cbb208dc12fb1553bf56..0eae6c9287693d1d9b364fd5efee707f5d73ed55 100644
--- a/gracedb/models.py
+++ b/gracedb/models.py
@@ -5,7 +5,8 @@ import string
 import os
 
 
-from gracedb.utils import posixToGpsTime
+# XXX ER2.utils.  utils is in project directory.  ugh.
+from utils import posixToGpsTime
 
 from django.conf import settings
 import pytz, time
diff --git a/gracedb/templatetags/timeutil.py b/gracedb/templatetags/timeutil.py
index a3d5da3d4a010d85dd4efc464dea288f9651c7e4..0938dc542ad1a3b3895b4ca60a22390c69fa816c 100644
--- a/gracedb/templatetags/timeutil.py
+++ b/gracedb/templatetags/timeutil.py
@@ -6,7 +6,8 @@ from django.utils import dateformat
 from django.utils.html import conditional_escape
 from django.utils.safestring import mark_safe
 
-from gracedb.utils import posixToGpsTime, gpsToUtc
+# XXX utils is in the project root.  this is not right. ER2.utils
+from utils import posixToGpsTime, gpsToUtc
 
 import pytz
 import time
diff --git a/gracedb/urls.py b/gracedb/urls.py
index 8344a9cf500574cd23b59d38793c4476ec8d20a2..7a2046701d5ad3322e183e7ddb93590143cd486f 100644
--- a/gracedb/urls.py
+++ b/gracedb/urls.py
@@ -3,7 +3,7 @@ from django.conf.urls.defaults import *
 
 #import django.views.generic.list_detail
 
-urlpatterns = patterns('gracedb.gracedb.views',
+urlpatterns = patterns('gracedb.views',
     url (r'^$', 'index', name="home"),
     url (r'^create/$', 'create', name="create"),
     url (r'^search/(?P<format>(json|flex))?$', 'search', name="search"),
diff --git a/gracedb/views.py b/gracedb/views.py
index 487cb53563cd3433cbaa4191a98f735a273caba5..9530093dd7a2de2b5cfc17f0ccadbec089d3ab8e 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -720,7 +720,7 @@ def oldsearch(request):
             context_instance=RequestContext(request))
 
 def timeline(request):
-    from gracedb.utils import gpsToUtc
+    from utils import gpsToUtc
     from django.utils import dateformat
 
     response = HttpResponse(mimetype='application/javascript')
diff --git a/manage.py b/manage.py
index b6f360910e283c1fd569f0703857fba8b22f6b60..aac8ce41ae98f7da6909119e6499ac247408d994 100755
--- a/manage.py
+++ b/manage.py
@@ -1,12 +1,6 @@
 #!/usr/bin/env python
 from django.core.management import execute_manager
 
-# THIS IS TERRIBLE, but some idiot named the project AND application gracedb.
-# Things looking for gracedb.settings fail because they find the app not the proj.
-# This also causes things wanting the app having to do gracedb.gracedb.whatever
-# all the time, but that mess has already been made.
-import sys, os
-sys.path.insert(0, os.path.join(os.path.dirname(__file__),'..'))
 
 try:
     import settings # Assumed to be in the same directory.
diff --git a/settings/__init__.py b/settings/__init__.py
index 62596fd562c4fec9cda10c5e0219ab347e6e05bc..b5a9d97d9e449f34bf84a569a02b205b428017e8 100644
--- a/settings/__init__.py
+++ b/settings/__init__.py
@@ -17,6 +17,9 @@ ROOT_PATH = os.path.abspath( os.path.join( os.path.dirname(__file__), os.pardir
 configs = {
     '/home/bmoe/ER2': 'development_er2',
     '/home/bmoe/er2box/lib/python2.6/site-packages/gracedb' : 'development_er2',
+
+    '/home/bmoe/er2box/lib/python2.6/site-packages/ER2' : 'development_er2',
+
     '/home/bmoe/gracedb': 'development',
     '/home/gracedb/gracedb': 'production',
 }
diff --git a/settings/default.py b/settings/default.py
index a4a9f3e8908a601656e0debda13b6a45becddc67..1fb9c0f39314a9657c86ca709ed6ffef56d72457 100644
--- a/settings/default.py
+++ b/settings/default.py
@@ -150,21 +150,21 @@ TEMPLATE_CONTEXT_PROCESSORS = (
     "django.core.context_processors.media",
     "django.core.context_processors.request",
     "gracedb.middleware.auth.LigoAuthContext",
-    'gracedb.middleware.debug.LigoDebugContext',
+    'middleware.debug.LigoDebugContext',
 )
 
 AUTHENTICATION_BACKENDS = ('gracedb.middleware.auth.LigoAuthBackend',)
 
 MIDDLEWARE_CLASSES = [
-    'gracedb.middleware.accept.AcceptMiddleware',
+    'middleware.accept.AcceptMiddleware',
     'gracedb.middleware.auth.LigoAuthMiddleware',
-    'gracedb.middleware.cli.CliExceptionMiddleware',
+    'middleware.cli.CliExceptionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
 ]
 
-ROOT_URLCONF = 'gracedb.urls'
+ROOT_URLCONF = 'urls'
 
 TEMPLATE_DIRS = (
     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
@@ -179,6 +179,6 @@ INSTALLED_APPS = (
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
-    'gracedb.gracedb',
-    'gracedb.userprofile',
+    'gracedb',
+    'userprofile',
 )
diff --git a/urls.py b/urls.py
index 9d2d04ede91e9c537502d343a1dd9bfe09874a1b..021b2905cc1d3bf4377a8382784b68c6d89dc4f4 100644
--- a/urls.py
+++ b/urls.py
@@ -14,20 +14,20 @@ feeds = {
 
 urlpatterns = patterns('',
 
-    url (r'^$', 'gracedb.gracedb.views.index', name="home"),
-    (r'^events/', include('gracedb.gracedb.urls')),
-    (r'^options/', include('gracedb.userprofile.urls')),
-    (r'^cli/create', 'gracedb.gracedb.views.create'),
-    (r'^cli/ping', 'gracedb.gracedb.views.ping'),
-    (r'^cli/log', 'gracedb.gracedb.views.log'),
-    (r'^cli/upload', 'gracedb.gracedb.views.upload'),
-    (r'^cli/tag', 'gracedb.gracedb.views.cli_tag'),
-    (r'^cli/label', 'gracedb.gracedb.views.cli_label'),
-    (r'^cli/search', 'gracedb.gracedb.views.cli_search'),
+    url (r'^$', 'gracedb.views.index', name="home"),
+    (r'^events/', include('gracedb.urls')),
+    (r'^options/', include('userprofile.urls')),
+    (r'^cli/create', 'gracedb.views.create'),
+    (r'^cli/ping', 'gracedb.views.ping'),
+    (r'^cli/log', 'gracedb.views.log'),
+    (r'^cli/upload', 'gracedb.views.upload'),
+    (r'^cli/tag', 'gracedb.views.cli_tag'),
+    (r'^cli/label', 'gracedb.views.cli_label'),
+    (r'^cli/search', 'gracedb.views.cli_search'),
     (r'^feeds/(?P<url>.*)/$', EventFeed()),
     url (r'^feeds/$', feedview, name="feeds"),
 
-    url (r'^reports/$', 'gracedb.gracedb.reports.histo', name="reports"),
+    url (r'^reports/$', 'gracedb.reports.histo', name="reports"),
     (r'^reports/(?P<path>.+)$', 'django.views.static.serve',
             {'document_root': settings.LATENCY_REPORT_DEST_DIR}),
 
diff --git a/userprofile/models.py b/userprofile/models.py
index ba3ad70dc252d95089456da71cc6bfb4555448cd..dbabd67bfff5550932a19c270ef7ca62adc0e9b5 100644
--- a/userprofile/models.py
+++ b/userprofile/models.py
@@ -1,7 +1,7 @@
 
 from django.db import models
 
-from gracedb.gracedb.models import User, Label, Event
+from gracedb.models import User, Label, Event
 
 
 #class Notification(models.Model):
diff --git a/userprofile/urls.py b/userprofile/urls.py
index 00f08d595c897fa9100432953622e35bfc7a7550..e531245f3ca2cebb1a177dfa79f7d0dd2e3f20ff 100644
--- a/userprofile/urls.py
+++ b/userprofile/urls.py
@@ -2,7 +2,7 @@
 from django.conf.urls.defaults import *
 
 
-urlpatterns = patterns('gracedb.userprofile.views',
+urlpatterns = patterns('userprofile.views',
     url (r'^$', 'index', name="userprofile-home"),
     url (r'^contact/create$', 'createContact', name="userprofile-create-contact"),
     url (r'^contact/delete/(?P<id>[\d]+)$', 'deleteContact', name="userprofile-delete-contact"),
diff --git a/userprofile/views.py b/userprofile/views.py
index 25f8c3d871e8cfd18326d770cbcd9b75f88dbdfd..d2d3ddea758702ff3a9c22a6d0fe8f6042f97b19 100644
--- a/userprofile/views.py
+++ b/userprofile/views.py
@@ -8,7 +8,7 @@ from django.core.urlresolvers import reverse
 from django.template import RequestContext
 from django.shortcuts import render_to_response
 
-from gracedb.userprofile.models import Trigger, Contact
+from models import Trigger, Contact
 
 from forms import ContactForm, triggerFormFactory