diff --git a/xos/api/service/hpc/hpc_config.py b/xos/api/service/hpc/hpc_config.py
index a181a1c..7cb60c0 100644
--- a/xos/api/service/hpc/hpc_config.py
+++ b/xos/api/service/hpc/hpc_config.py
@@ -1,7 +1,7 @@
 from django.http import HttpResponse, HttpResponseServerError
 from core.models import *
 from services.hpc.models import *
-from services.requestrouter.models import *
+#from services.requestrouter.models import *
 import xos.settings
 import json
 import os
@@ -66,25 +66,25 @@
     if not hpcSlice:
         return HttpResponseServerError("Error: no HPC slice")
 
-    if (redirSlice==None) or (demuxSlice==None):
-        # The HPC Service didn't have a dnsredir or a dnsdemux, so try looking
-        # in the RequestRouterService for one.
-
-        rr = RequestRouterService.objects.all()
-        if not (rr):
-            return HttpResponseServerError("Error: no RR service")
-
-        rr = rr[0]
-        try:
-           slices = rr.slices.all()
-        except:
-           # this field used to be improperly named, and makemigrations won't fix it
-           slices = rr.service.all()
-        for slice in slices:
-            if "redir" in slice.name:
-                redirSlice = slice
-            elif "demux" in slice.name:
-                demuxSlice = slice
+#    if (redirSlice==None) or (demuxSlice==None):
+#        # The HPC Service didn't have a dnsredir or a dnsdemux, so try looking
+#        # in the RequestRouterService for one.
+#
+#        rr = RequestRouterService.objects.all()
+#        if not (rr):
+#            return HttpResponseServerError("Error: no RR service")
+#
+#        rr = rr[0]
+#        try:
+#           slices = rr.slices.all()
+#        except:
+#           # this field used to be improperly named, and makemigrations won't fix it
+#           slices = rr.service.all()
+#        for slice in slices:
+#            if "redir" in slice.name:
+#                redirSlice = slice
+#            elif "demux" in slice.name:
+#                demuxSlice = slice
 
     if not redirSlice:
         return HttpResponseServerError("Error: no dnsredir slice")
diff --git a/xos/api/service/hpc/hpcview.py b/xos/api/service/hpc/hpcview.py
index 3e31e73..9e82aec 100644
--- a/xos/api/service/hpc/hpcview.py
+++ b/xos/api/service/hpc/hpcview.py
@@ -6,7 +6,7 @@
 from rest_framework.views import APIView
 from core.models import *
 from services.hpc.models import *
-from services.requestrouter.models import *
+#from services.requestrouter.models import *
 from django.forms import widgets
 from django.core.exceptions import PermissionDenied
 from django.contrib.contenttypes.models import ContentType
@@ -98,18 +98,18 @@
             hpc_service = hpc
             hpc_slice = slice
 
-    if not dnsdemux_slice:
-        rr = RequestRouterService.objects.all()
-        if rr:
-            rr=rr[0]
-            slices = rr.slices.all()
-            for slice in slices:
-                if "dnsdemux" in slice.name:
-                    dnsdemux_service = rr
-                    dnsdemux_slice = slice
-                if "dnsredir" in slice.name:
-                    dnsredir_service = rr
-                    dnsredir_slice = slice
+#    if not dnsdemux_slice:
+#        rr = RequestRouterService.objects.all()
+#        if rr:
+#            rr=rr[0]
+#            slices = rr.slices.all()
+#            for slice in slices:
+#                if "dnsdemux" in slice.name:
+#                    dnsdemux_service = rr
+#                    dnsdemux_slice = slice
+#                if "dnsredir" in slice.name:
+#                    dnsredir_service = rr
+#                    dnsredir_slice = slice
 
     if not dnsredir_slice:
         print "no dnsredir slice"
