diff --git a/beat/web/backend/api.py b/beat/web/backend/api.py
index 45373e109c1003994036a7d727ebc713819fcc3e..363bbf2b6aebba0c9720e123fc87b17d9b7d1e1d 100644
--- a/beat/web/backend/api.py
+++ b/beat/web/backend/api.py
@@ -29,34 +29,17 @@ from rest_framework.decorators import api_view, permission_classes
 from rest_framework.response import Response
 from rest_framework import permissions
 
-from ..common.permissions import IsSuperuser
-
 from ..utils.api import send_email_to_administrators
 from ..utils import scheduler as scheduler_api
 
 from .models import Environment
 
-from ..experiments.models import Experiment
-
 import simplejson as json
 
 
 #----------------------------------------------------------
 
 
-@api_view(['POST'])
-@permission_classes([IsSuperuser])
-def cancel_all_experiments(request):
-
-    for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)):
-        q.cancel()
-
-    return Response(status=200)
-
-
-#----------------------------------------------------------
-
-
 @api_view(['GET'])
 @permission_classes([permissions.AllowAny])
 def accessible_environments_list(request):
diff --git a/beat/web/backend/api_urls.py b/beat/web/backend/api_urls.py
index d7b2197695b90bd3d89efc8af8745206c5619c3c..e5faf3d8cf06d313978ed12103d6347416d398a5 100644
--- a/beat/web/backend/api_urls.py
+++ b/beat/web/backend/api_urls.py
@@ -30,12 +30,6 @@ from . import api
 
 urlpatterns = [
 
-    url(
-        r'^cancel-all-experiments/$',
-        api.cancel_all_experiments,
-        name='backend-api-cancel-all-experiments',
-        ),
-
     url(
         r'^environments/$',
         api.accessible_environments_list,
diff --git a/beat/web/backend/urls.py b/beat/web/backend/urls.py
index 7fbbf79db02cd8da6e4cee59d1d9ba3bf650c346..33c58bc66f3b8695e3d2ac437825667a95a5e066 100644
--- a/beat/web/backend/urls.py
+++ b/beat/web/backend/urls.py
@@ -36,6 +36,12 @@ urlpatterns = [
       name='scheduler',
       ),
 
+    url(
+      r'^cancel-experiments/$',
+      views.cancel_all_experiments,
+      name='cancel-experiments',
+      ),
+
     url(
         r'^environments/(?P<name>[-\.\w\s]+)/(?P<version>[-\.\w]+)/$',
         views.environment,
diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py
index b4dd5c7d96a4e61fc5a1f1bc13c478a3f521e25f..d94c6f927820ad0436990aa94494b90863fc0ce8 100644
--- a/beat/web/backend/views.py
+++ b/beat/web/backend/views.py
@@ -28,8 +28,9 @@
 import collections
 import simplejson
 
-from django.http import Http404
+from django.http import Http404, HttpResponseRedirect
 from django.conf import settings
+from django.core.urlresolvers import reverse
 from django.shortcuts import get_object_or_404
 from django.shortcuts import render_to_response
 from django.template import RequestContext
@@ -38,6 +39,7 @@ from django.http import HttpResponseForbidden
 from django.contrib import messages
 
 from .models import Environment, Worker, Queue
+from ..experiments.models import Experiment
 from . import state
 
 
@@ -68,9 +70,6 @@ def scheduler(request):
 
     cache_gb = int(cache['capacity-in-megabytes'] / 1024.0)
 
-    # Organize the data a bit
-    response.data['workers'] = collections.OrderedDict(sorted([(k,v) for k,v in response.data['workers'].items()], key=lambda x: (not x[1].has_key('active'), x[1]['db_status']!='Active', x[0])))
-
     return render_to_response('backend/scheduler.html',
             dict(
                 jobs=state.jobs(),
@@ -119,3 +118,18 @@ def list_environments(request):
                 ),
             context_instance=RequestContext(request),
             )
+
+
+
+#----------------------------------------------------------
+
+
+@login_required
+def cancel_all_experiments(request):
+
+    if not(request.user.is_superuser): return HttpResponseForbidden()
+
+    for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)):
+        q.cancel()
+
+    return HttpResponseRedirect(reverse('backend:scheduler'))