diff --git a/frontend/src/activity/activity.services.js b/frontend/src/activity/activity.services.js
deleted file mode 100644
index 6e9c7e735b713052b7266ec2553986b6cf2130ce..0000000000000000000000000000000000000000
--- a/frontend/src/activity/activity.services.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var ActivityServices = angular.module('metabase.activity.services', ['ngResource', 'ngCookies']);
-
-ActivityServices.factory('Activity', ['$resource', '$cookies', function($resource, $cookies) {
-    return $resource('/api/activity', {}, {
-        list: {
-            method: 'GET',
-            isArray: true
-        },
-
-        recent_views: {
-            url: '/api/activity/recent_views',
-            method: 'GET',
-            isArray: true
-        }
-    });
-}]);
diff --git a/frontend/src/admin/databases/databases.controllers.js b/frontend/src/admin/databases/databases.controllers.js
index b92706071081ef2bbd8b2604b6bf2c560bf13306..a00fdc25b384060f447e8762958fdcaf39d075bd 100644
--- a/frontend/src/admin/databases/databases.controllers.js
+++ b/frontend/src/admin/databases/databases.controllers.js
@@ -5,7 +5,7 @@ import DatabaseList from "./components/DatabaseList.jsx";
 import DatabaseEdit from "./components/DatabaseEdit.jsx";
 
 
-var DatabasesControllers = angular.module('metabaseadmin.databases.controllers', ['metabase.metabase.services']);
+var DatabasesControllers = angular.module('metabaseadmin.databases.controllers', ['metabase.services']);
 
 DatabasesControllers.controller('DatabaseList', ['$scope', '$routeParams', 'Metabase', function($scope, $routeParams, Metabase) {
 
diff --git a/frontend/src/app.js b/frontend/src/app.js
index 47906c94bcaef820b3ce2e6972d7ee94ab591586..8bccc0487b5c5184113fd6aed3357e506f20df40 100644
--- a/frontend/src/app.js
+++ b/frontend/src/app.js
@@ -3,7 +3,6 @@ var Metabase = angular.module('metabase', [
     'ngRoute',
     'ngCookies',
     'ui.bootstrap', // bootstrap LIKE widgets via angular directives
-    'metabase.activity.services',
     'metabase.auth',
     'metabase.filters',
     'metabase.directives',
diff --git a/frontend/src/card/card.services.js b/frontend/src/card/card.services.js
index d69e850f86ceede870d935e2ff141224b5ec23c0..537e0fb8566f089aef32f7735cffad02b48bd806 100644
--- a/frontend/src/card/card.services.js
+++ b/frontend/src/card/card.services.js
@@ -5,84 +5,6 @@ import { normal, harmony } from 'metabase/lib/colors'
 // Card Services
 var CardServices = angular.module('metabase.card.services', ['ngResource', 'ngCookies']);
 
-CardServices.factory('Card', ['$resource', '$cookies', function($resource, $cookies) {
-    return $resource('/api/card/:cardId', {}, {
-        list: {
-            url: '/api/card/?f=:filterMode',
-            method: 'GET',
-            isArray: true
-        },
-        create: {
-            url: '/api/card',
-            method: 'POST',
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        get: {
-            method: 'GET',
-            params: {
-                cardId: '@cardId'
-            }
-        },
-        update: {
-            method: 'PUT',
-            params: {
-                cardId: '@id'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        delete: {
-            method: 'DELETE',
-            params: {
-                cardId: '@cardId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        isfavorite: {
-            url: '/api/card/:cardId/favorite',
-            method: 'GET',
-            params: {
-                cardId: '@cardId'
-            }
-        },
-        favorite: {
-            url: '/api/card/:cardId/favorite',
-            method: 'POST',
-            params: {
-                cardId: '@cardId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        unfavorite: {
-            url: '/api/card/:cardId/favorite',
-            method: 'DELETE',
-            params: {
-                cardId: '@cardId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        }
-    });
-}]);
-
 CardServices.service('VisualizationUtils', [function() {
     this.visualizationTypes = {
         scalar: {
diff --git a/frontend/src/dashboard/dashboard.module.js b/frontend/src/dashboard/dashboard.module.js
index 1f2b6ec3fd8481a0f7a79527fe8c02dcca6d4271..2f543640283a2dae68800079070a0710f27ff7a2 100644
--- a/frontend/src/dashboard/dashboard.module.js
+++ b/frontend/src/dashboard/dashboard.module.js
@@ -3,7 +3,6 @@ var Dashboard = angular.module('metabase.dashboard', [
     'ngRoute',
     'metabase.directives',
     'metabase.services',
-    'metabase.dashboard.services',
     'metabase.dashboard.controllers',
     'metabase.card.services'
 ]);
diff --git a/frontend/src/dashboard/dashboard.services.js b/frontend/src/dashboard/dashboard.services.js
deleted file mode 100644
index a573847f7eac5bf122c01aeb6f6aae9e17752ac9..0000000000000000000000000000000000000000
--- a/frontend/src/dashboard/dashboard.services.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Dashboard Services
-var DashboardServices = angular.module('metabase.dashboard.services', ['ngResource', 'ngCookies']);
-
-DashboardServices.factory('Dashboard', ['$resource', '$cookies', function($resource, $cookies) {
-    return $resource('/api/dashboard/:dashId', {}, {
-        list: {
-            url:'/api/dashboard?org=:orgId&f=:filterMode',
-            method:'GET',
-            isArray:true
-        },
-        create: {
-            url:'/api/dashboard',
-            method:'POST',
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        },
-        get: {
-            method:'GET',
-            params:{dashId:'@dashId'},
-        },
-        update: {
-            method:'PUT',
-            params:{dashId:'@id'},
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        },
-        delete: {
-            method:'DELETE',
-            params:{dashId:'@dashId'},
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        },
-        addcard: {
-            url:'/api/dashboard/:dashId/cards',
-            method:'POST',
-            params:{dashId:'@dashId'},
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        },
-        removecard: {
-            url:'/api/dashboard/:dashId/cards',
-            method:'DELETE',
-            params:{dashId:'@dashId'},
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        },
-        reposition_cards: {
-            url:'/api/dashboard/:dashId/reposition',
-            method:'POST',
-            params:{dashId:'@dashId'},
-            headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }},
-        }
-    });
-}]);
diff --git a/frontend/src/metabase/metabase.services.js b/frontend/src/metabase/metabase.services.js
deleted file mode 100644
index a63c4b147078e483b3c734ca61cce7add3c8bd8e..0000000000000000000000000000000000000000
--- a/frontend/src/metabase/metabase.services.js
+++ /dev/null
@@ -1,280 +0,0 @@
-// Metabase Services
-var MetabaseServices = angular.module('metabase.metabase.services', [
-    'ngResource',
-    'ngCookies',
-    'metabase.services'
-]);
-
-MetabaseServices.factory('Metabase', ['$resource', '$cookies', 'MetabaseCore', function($resource, $cookies, MetabaseCore) {
-    return $resource('/api/meta', {}, {
-        db_list: {
-            url: '/api/database/?org=:orgId',
-            method: 'GET',
-            isArray: true
-        },
-        db_create: {
-            url: '/api/database/',
-            method: 'POST',
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        validate_connection: {
-            url: '/api/database/validate/',
-            method: 'POST',
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        db_add_sample_dataset: {
-            url: '/api/database/sample_dataset',
-            method: 'POST'
-        },
-        db_get: {
-            url: '/api/database/:dbId',
-            method: 'GET',
-            params: {
-                dbId: '@dbId'
-            }
-        },
-        db_update: {
-            url: '/api/database/:dbId',
-            method: 'PUT',
-            params: {
-                dbId: '@id'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        db_delete: {
-            url: '/api/database/:dbId',
-            method: 'DELETE',
-            params: {
-                dbId: '@dbId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        db_metadata: {
-            url: '/api/database/:dbId/metadata',
-            method: 'GET',
-            params: {
-                dbId: '@dbId'
-            }
-        },
-        db_tables: {
-            url: '/api/database/:dbId/tables',
-            method: 'GET',
-            params: {
-                dbId: '@dbId'
-            },
-            isArray: true
-        },
-        db_idfields: {
-            url: '/api/database/:dbId/idfields',
-            method: 'GET',
-            params: {
-                dbId: '@dbId'
-            },
-            isArray: true
-        },
-        db_autocomplete_suggestions: {
-            url: '/api/database/:dbId/autocomplete_suggestions?prefix=:prefix',
-            method: 'GET',
-            params: {
-                dbId: '@dbId'
-            },
-            isArray: true
-        },
-        db_sync_metadata: {
-            url: '/api/database/:dbId/sync',
-            method: 'POST',
-            params: {
-                dbId: '@dbId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        table_list: {
-            url: '/api/table/',
-            method: 'GET',
-            params: {
-                tableId: '@tableId'
-            },
-            isArray: true
-        },
-        table_get: {
-            url: '/api/table/:tableId',
-            method: 'GET',
-            params: {
-                tableId: '@tableId'
-            }
-        },
-        table_update: {
-            url: '/api/table/:tableId',
-            method: 'PUT',
-            params: {
-                tableId: '@id'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        table_fields: {
-            url: '/api/table/:tableId/fields',
-            method: 'GET',
-            params: {
-                tableId: '@tableId'
-            },
-            isArray: true
-        },
-        table_fks: {
-            url: '/api/table/:tableId/fks',
-            method: 'GET',
-            params: {
-                tableId: '@tableId'
-            },
-            isArray: true
-        },
-        table_reorder_fields: {
-            url: '/api/table/:tableId/reorder',
-            method: 'POST',
-            params: {
-                tableId: '@tableId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            },
-        },
-        table_query_metadata: {
-            url: '/api/table/:tableId/query_metadata',
-            method: 'GET',
-            params: {
-                dbId: '@tableId'
-            }
-        },
-        table_sync_metadata: {
-            url: '/api/table/:tableId/sync',
-            method: 'POST',
-            params: {
-                tableId: '@tableId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        field_get: {
-            url: '/api/field/:fieldId',
-            method: 'GET',
-            params: {
-                fieldId: '@fieldId'
-            }
-        },
-        field_summary: {
-            url: '/api/field/:fieldId/summary',
-            method: 'GET',
-            params: {
-                fieldId: '@fieldId'
-            },
-            isArray: true
-        },
-        field_values: {
-            url: '/api/field/:fieldId/values',
-            method: 'GET',
-            params: {
-                fieldId: '@fieldId'
-            }
-        },
-        field_value_map_update: {
-            url: '/api/field/:fieldId/value_map_update',
-            method: 'POST',
-            params: {
-                fieldId: '@fieldId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        field_update: {
-            url: '/api/field/:fieldId',
-            method: 'PUT',
-            params: {
-                fieldId: '@id'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        field_foreignkeys: {
-            url: '/api/field/:fieldId/foreignkeys',
-            method: 'GET',
-            params: {
-                fieldId: '@fieldId'
-            },
-            isArray: true
-        },
-        field_addfk: {
-            url: '/api/field/:fieldId/foreignkeys',
-            method: 'POST',
-            params: {
-                fieldId: '@fieldId'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        },
-        dataset: {
-            url: '/api/dataset',
-            method: 'POST',
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            }
-        }
-    });
-}]);
-
-
-
-MetabaseServices.factory('ForeignKey', ['$resource', '$cookies', function($resource, $cookies) {
-    return $resource('/api/foreignkey/:fkID', {}, {
-        delete: {
-            method: 'DELETE',
-            params: {
-                fkID: '@fkID'
-            },
-            headers: {
-                'X-CSRFToken': function() {
-                    return $cookies.csrftoken;
-                }
-            },
-        },
-
-    });
-}]);
diff --git a/frontend/src/services.js b/frontend/src/services.js
index 4d8bc5626b7fb8de203dc849666de224985450ba..e96564f3dd8495dd884219ebc6101095da82461f 100644
--- a/frontend/src/services.js
+++ b/frontend/src/services.js
@@ -259,9 +259,346 @@ MetabaseServices.service('MetabaseCore', ['User', function(User) {
 }]);
 
 
-// User Services
+// API Services
 var CoreServices = angular.module('metabase.core.services', ['ngResource', 'ngCookies']);
 
+CoreServices.factory('Activity', ['$resource', '$cookies', function($resource, $cookies) {
+    return $resource('/api/activity', {}, {
+        list: {
+            method: 'GET',
+            isArray: true
+        },
+        recent_views: {
+            url: '/api/activity/recent_views',
+            method: 'GET',
+            isArray: true
+        }
+    });
+}]);
+
+CoreServices.factory('Card', ['$resource', '$cookies', function($resource, $cookies) {
+    return $resource('/api/card/:cardId', {}, {
+        list: {
+            url: '/api/card/?f=:filterMode',
+            method: 'GET',
+            isArray: true
+        },
+        create: {
+            url: '/api/card',
+            method: 'POST'
+        },
+        get: {
+            method: 'GET',
+            params: {
+                cardId: '@cardId'
+            }
+        },
+        update: {
+            method: 'PUT',
+            params: {
+                cardId: '@id'
+            }
+        },
+        delete: {
+            method: 'DELETE',
+            params: {
+                cardId: '@cardId'
+            }
+        },
+        isfavorite: {
+            url: '/api/card/:cardId/favorite',
+            method: 'GET',
+            params: {
+                cardId: '@cardId'
+            }
+        },
+        favorite: {
+            url: '/api/card/:cardId/favorite',
+            method: 'POST',
+            params: {
+                cardId: '@cardId'
+            }
+        },
+        unfavorite: {
+            url: '/api/card/:cardId/favorite',
+            method: 'DELETE',
+            params: {
+                cardId: '@cardId'
+            }
+        }
+    });
+}]);
+
+CoreServices.factory('Dashboard', ['$resource', '$cookies', function($resource, $cookies) {
+    return $resource('/api/dashboard/:dashId', {}, {
+        list: {
+            url:'/api/dashboard?org=:orgId&f=:filterMode',
+            method:'GET',
+            isArray:true
+        },
+        create: {
+            url:'/api/dashboard',
+            method:'POST'
+        },
+        get: {
+            method:'GET',
+            params:{dashId:'@dashId'},
+        },
+        update: {
+            method:'PUT',
+            params:{dashId:'@id'}
+        },
+        delete: {
+            method:'DELETE',
+            params:{dashId:'@dashId'}
+        },
+        addcard: {
+            url:'/api/dashboard/:dashId/cards',
+            method:'POST',
+            params:{dashId:'@dashId'}
+        },
+        removecard: {
+            url:'/api/dashboard/:dashId/cards',
+            method:'DELETE',
+            params:{dashId:'@dashId'}
+        },
+        reposition_cards: {
+            url:'/api/dashboard/:dashId/reposition',
+            method:'POST',
+            params:{dashId:'@dashId'}
+        }
+    });
+}]);
+
+CoreServices.factory('ForeignKey', ['$resource', '$cookies', function($resource, $cookies) {
+    return $resource('/api/foreignkey/:fkID', {}, {
+        delete: {
+            method: 'DELETE',
+            params: {
+                fkID: '@fkID'
+            }
+        }
+    });
+}]);
+
+CoreServices.factory('Metabase', ['$resource', '$cookies', 'MetabaseCore', function($resource, $cookies, MetabaseCore) {
+    return $resource('/api/meta', {}, {
+        db_list: {
+            url: '/api/database/?org=:orgId',
+            method: 'GET',
+            isArray: true
+        },
+        db_create: {
+            url: '/api/database/',
+            method: 'POST'
+        },
+        validate_connection: {
+            url: '/api/database/validate/',
+            method: 'POST'
+        },
+        db_add_sample_dataset: {
+            url: '/api/database/sample_dataset',
+            method: 'POST'
+        },
+        db_get: {
+            url: '/api/database/:dbId',
+            method: 'GET',
+            params: {
+                dbId: '@dbId'
+            }
+        },
+        db_update: {
+            url: '/api/database/:dbId',
+            method: 'PUT',
+            params: {
+                dbId: '@id'
+            }
+        },
+        db_delete: {
+            url: '/api/database/:dbId',
+            method: 'DELETE',
+            params: {
+                dbId: '@dbId'
+            }
+        },
+        db_metadata: {
+            url: '/api/database/:dbId/metadata',
+            method: 'GET',
+            params: {
+                dbId: '@dbId'
+            }
+        },
+        db_tables: {
+            url: '/api/database/:dbId/tables',
+            method: 'GET',
+            params: {
+                dbId: '@dbId'
+            },
+            isArray: true
+        },
+        db_idfields: {
+            url: '/api/database/:dbId/idfields',
+            method: 'GET',
+            params: {
+                dbId: '@dbId'
+            },
+            isArray: true
+        },
+        db_autocomplete_suggestions: {
+            url: '/api/database/:dbId/autocomplete_suggestions?prefix=:prefix',
+            method: 'GET',
+            params: {
+                dbId: '@dbId'
+            },
+            isArray: true
+        },
+        db_sync_metadata: {
+            url: '/api/database/:dbId/sync',
+            method: 'POST',
+            params: {
+                dbId: '@dbId'
+            }
+        },
+        table_list: {
+            url: '/api/table/',
+            method: 'GET',
+            params: {
+                tableId: '@tableId'
+            },
+            isArray: true
+        },
+        table_get: {
+            url: '/api/table/:tableId',
+            method: 'GET',
+            params: {
+                tableId: '@tableId'
+            }
+        },
+        table_update: {
+            url: '/api/table/:tableId',
+            method: 'PUT',
+            params: {
+                tableId: '@id'
+            }
+        },
+        table_fields: {
+            url: '/api/table/:tableId/fields',
+            method: 'GET',
+            params: {
+                tableId: '@tableId'
+            },
+            isArray: true
+        },
+        table_fks: {
+            url: '/api/table/:tableId/fks',
+            method: 'GET',
+            params: {
+                tableId: '@tableId'
+            },
+            isArray: true
+        },
+        table_reorder_fields: {
+            url: '/api/table/:tableId/reorder',
+            method: 'POST',
+            params: {
+                tableId: '@tableId'
+            }
+        },
+        table_query_metadata: {
+            url: '/api/table/:tableId/query_metadata',
+            method: 'GET',
+            params: {
+                dbId: '@tableId'
+            }
+        },
+        table_sync_metadata: {
+            url: '/api/table/:tableId/sync',
+            method: 'POST',
+            params: {
+                tableId: '@tableId'
+            }
+        },
+        field_get: {
+            url: '/api/field/:fieldId',
+            method: 'GET',
+            params: {
+                fieldId: '@fieldId'
+            }
+        },
+        field_summary: {
+            url: '/api/field/:fieldId/summary',
+            method: 'GET',
+            params: {
+                fieldId: '@fieldId'
+            },
+            isArray: true
+        },
+        field_values: {
+            url: '/api/field/:fieldId/values',
+            method: 'GET',
+            params: {
+                fieldId: '@fieldId'
+            }
+        },
+        field_value_map_update: {
+            url: '/api/field/:fieldId/value_map_update',
+            method: 'POST',
+            params: {
+                fieldId: '@fieldId'
+            }
+        },
+        field_update: {
+            url: '/api/field/:fieldId',
+            method: 'PUT',
+            params: {
+                fieldId: '@id'
+            }
+        },
+        field_foreignkeys: {
+            url: '/api/field/:fieldId/foreignkeys',
+            method: 'GET',
+            params: {
+                fieldId: '@fieldId'
+            },
+            isArray: true
+        },
+        field_addfk: {
+            url: '/api/field/:fieldId/foreignkeys',
+            method: 'POST',
+            params: {
+                fieldId: '@fieldId'
+            }
+        },
+        dataset: {
+            url: '/api/dataset',
+            method: 'POST'
+        }
+    });
+}]);
+
+CoreServices.factory('Revision', ['$resource', function($resource) {
+    return $resource('/api/revision', {}, {
+        list: {
+            url: '/api/revision',
+            method: 'GET',
+            isArray: true,
+            params: {
+                'entity': '@entity',
+                'id': '@id'
+            }
+        },
+        revert: {
+            url: '/api/revision/revert',
+            method: 'POST',
+            params: {
+                'entity': '@entity',
+                'id': '@id',
+                'revision_id': '@revision_id'
+            }
+        }
+    });
+}]);
+
 CoreServices.factory('Session', ['$resource', '$cookies', function($resource, $cookies) {
     return $resource('/api/session/', {}, {
         create: {
@@ -290,6 +627,43 @@ CoreServices.factory('Session', ['$resource', '$cookies', function($resource, $c
     });
 }]);
 
+CoreServices.factory('Settings', ['$resource', function($resource) {
+    return $resource('/api/setting', {}, {
+        list: {
+            url: '/api/setting',
+            method: 'GET',
+            isArray: true,
+        },
+        // POST endpoint handles create + update in this case
+        put: {
+            url: '/api/setting/:key',
+            method: 'PUT',
+            params: {
+                key: '@key'
+            }
+        },
+        delete: {
+            url: '/api/setting/:key',
+            method: 'DELETE',
+            params: {
+                key: '@key'
+            }
+        }
+    });
+}]);
+
+CoreServices.factory('Setup', ['$resource', '$cookies', function($resource, $cookies) {
+    return $resource('/api/setup/', {}, {
+        create: {
+            method: 'POST'
+        },
+        validate_db: {
+            url: '/api/setup/validate',
+            method: 'POST'
+        }
+    });
+}]);
+
 CoreServices.factory('User', ['$resource', '$cookies', function($resource, $cookies) {
     return $resource('/api/user/:userId', {}, {
         create: {
@@ -343,57 +717,6 @@ CoreServices.factory('User', ['$resource', '$cookies', function($resource, $cook
     });
 }]);
 
-CoreServices.factory('Settings', ['$resource', function($resource) {
-    return $resource('/api/setting', {}, {
-        list: {
-            url: '/api/setting',
-            method: 'GET',
-            isArray: true,
-        },
-
-        // POST endpoint handles create + update in this case
-        put: {
-            url: '/api/setting/:key',
-            method: 'PUT',
-            params: {
-                key: '@key'
-            }
-        },
-
-        delete: {
-            url: '/api/setting/:key',
-            method: 'DELETE',
-            params: {
-                key: '@key'
-            }
-        }
-    });
-}]);
-
-CoreServices.factory('Revision', ['$resource', function($resource) {
-    return $resource('/api/revision', {}, {
-        list: {
-            url: '/api/revision',
-            method: 'GET',
-            isArray: true,
-            params: {
-                'entity': '@entity',
-                'id': '@id'
-            }
-        },
-
-        revert: {
-            url: '/api/revision/revert',
-            method: 'POST',
-            params: {
-                'entity': '@entity',
-                'id': '@id',
-                'revision_id': '@revision_id'
-            }
-        }
-    });
-}]);
-
 CoreServices.factory('Util', ['$resource', '$cookies', function($resource, $cookies) {
     return $resource('/api/util/', {}, {
         password_check: {
diff --git a/frontend/src/setup/setup.controllers.js b/frontend/src/setup/setup.controllers.js
index d3e68ff42ac1d3ac276a862bdb9b708fb03a38b1..f1e5a4dde42a59222bceeaa3a0d3c42443be1a35 100644
--- a/frontend/src/setup/setup.controllers.js
+++ b/frontend/src/setup/setup.controllers.js
@@ -16,7 +16,7 @@ const finalCreateStore = compose(
 const reducer = combineReducers(reducers);
 
 
-var SetupControllers = angular.module('metabase.setup.controllers', ['metabase.setup.services']);
+var SetupControllers = angular.module('metabase.setup.controllers', ['metabase.services']);
 SetupControllers.controller('SetupController', ['$scope', '$location', '$timeout', 'ipCookie', function($scope, $location, $timeout, ipCookie) {
     $scope.Component = SetupApp;
     $scope.props = {
diff --git a/frontend/src/setup/setup.services.js b/frontend/src/setup/setup.services.js
deleted file mode 100644
index d5e5297614f63061841ea1f978da5c99cbe456f8..0000000000000000000000000000000000000000
--- a/frontend/src/setup/setup.services.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var SetupServices = angular.module('metabase.setup.services', ['ngResource', 'ngCookies']);
-
-SetupServices.factory('Setup', ['$resource', '$cookies', function($resource, $cookies) {
-    return $resource('/api/setup/', {}, {
-        create: {
-            method: 'POST'
-        },
-
-        validate_db: {
-            url: '/api/setup/validate',
-            method: 'POST'
-        }
-    });
-}]);
-
diff --git a/frontend/test/unit/services.spec.js b/frontend/test/unit/services.spec.js
index 940edfdd053cfcf82adefaec9ff75aaecb5b6201..a62fbb60749b120022a044140259d4d80cbb3dc8 100644
--- a/frontend/test/unit/services.spec.js
+++ b/frontend/test/unit/services.spec.js
@@ -1,8 +1,7 @@
 import 'metabase/services';
-import 'metabase/metabase/metabase.services';
 
-describe('metabase.metabase.services', function() {
-    beforeEach(angular.mock.module('metabase.metabase.services'));
+describe('metabase.services', function() {
+    beforeEach(angular.mock.module('metabase.services'));
 
     describe('Metabase', function() {
         it('should return empty list of databases', inject(function(Metabase, $httpBackend) {