diff --git a/dbrepo-ui/api/container.mapper.js b/dbrepo-ui/api/container.mapper.js
deleted file mode 100644
index 828a5fbc931ef11047aeb82c5f2d7b2efdaa8722..0000000000000000000000000000000000000000
--- a/dbrepo-ui/api/container.mapper.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import UserMapper from '@/api/user.mapper'
-import DatabaseMapper from '@/api/database.mapper'
-
-class ContainerMapper {
-  containerToCreator (container) {
-    if (!container) {
-      return null
-    }
-    if (container.database) {
-      return DatabaseMapper.databaseToOwner(container.database)
-    }
-    return UserMapper.userToFullName(container.creator)
-  }
-}
-
-export default new ContainerMapper()
diff --git a/dbrepo-ui/api/container.service.js b/dbrepo-ui/api/container.service.js
index c24ffbd9d57aebc5d31f872d982e81b60e169727..97d0fc7164efb1c783a52b60614547f17171dfe5 100644
--- a/dbrepo-ui/api/container.service.js
+++ b/dbrepo-ui/api/container.service.js
@@ -19,23 +19,6 @@ class ContainerService {
     })
   }
 
-  findAllImages () {
-    return new Promise((resolve, reject) => {
-      api.get('/api/image', { headers: { Accept: 'application/json' } })
-        .then((response) => {
-          const images = response.data
-          console.debug('response images', images)
-          resolve(images)
-        })
-        .catch((error) => {
-          const { code, message } = error
-          console.error('Failed to load images', error)
-          Vue.$toast.error(`[${code}] Failed to load images: ${message}`)
-          reject(error)
-        })
-    })
-  }
-
   findOne (id) {
     return new Promise((resolve, reject) => {
       api.get(`/api/container/${id}`, { headers: { Accept: 'application/json' } })
@@ -69,46 +52,6 @@ class ContainerService {
         })
     })
   }
-
-  create (data) {
-    return new Promise((resolve, reject) => {
-      api.post('/api/container', data, { headers: { Accept: 'application/json' } })
-        .then((response) => {
-          const container = response.data
-          console.debug('response container', container)
-          resolve(container)
-        })
-        .catch((error) => {
-          const { code, message } = error
-          console.error('Failed to create container', error)
-          Vue.$toast.error(`[${code}] Failed to create container: ${message}`)
-          reject(error)
-        })
-    })
-  }
-
-  modify (id, action) {
-    return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}`, { action }, { headers: { Accept: 'application/json' } })
-        .then((response) => {
-          const container = response.data
-          console.debug('response container', container)
-          resolve(container)
-        })
-        .catch((error) => {
-          const { code, message, response } = error
-          const { status } = response
-          if (status === 409) {
-            console.warn('Failed to modify container', error)
-            reject(error)
-          } else {
-            console.error('Failed to modify container', error)
-            Vue.$toast.error(`[${code}] Failed to modify container: ${message}`)
-            reject(error)
-          }
-        })
-    })
-  }
 }
 
 export default new ContainerService()
diff --git a/dbrepo-ui/api/database.service.js b/dbrepo-ui/api/database.service.js
index db440028953514abb7b97869dc1c21dac64a7109..241f7400317026877c7975ae77c5bfabe4927436 100644
--- a/dbrepo-ui/api/database.service.js
+++ b/dbrepo-ui/api/database.service.js
@@ -2,9 +2,9 @@ import Vue from 'vue'
 import api from '@/api'
 
 class DatabaseService {
-  findAll (id) {
+  findAll () {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database`, { headers: { Accept: 'application/json' } })
+      api.get('/api/database', { headers: { Accept: 'application/json' } })
         .then((response) => {
           const databases = response.data
           console.debug('response databases', databases)
@@ -19,9 +19,9 @@ class DatabaseService {
     })
   }
 
-  findOne (id, databaseId) {
+  findOne (databaseId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const database = response.data
           console.debug('response database', database)
@@ -35,9 +35,9 @@ class DatabaseService {
     })
   }
 
-  create (id, data) {
+  create (data) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database`, data, { headers: { Accept: 'application/json' } })
+      api.post('/api/database', data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const database = response.data
           console.debug('response database', database)
@@ -51,9 +51,9 @@ class DatabaseService {
     })
   }
 
-  delete (id, databaseId) {
+  delete (databaseId) {
     return new Promise((resolve, reject) => {
-      api.delete(`/api/container/${id}/database/${databaseId}`, { headers: { Accept: 'application/json' } })
+      api.delete(`/api/database/${databaseId}`, { headers: { Accept: 'application/json' } })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
@@ -64,9 +64,9 @@ class DatabaseService {
     })
   }
 
-  modifyVisibility (id, databaseId, isPublic) {
+  modifyVisibility (databaseId, isPublic) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/visibility`, { is_public: isPublic }, { headers: { Accept: 'application/json' } })
+      api.put(`/api/database/${databaseId}/visibility`, { is_public: isPublic }, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const database = response.data
           console.debug('response database', database)
@@ -80,9 +80,9 @@ class DatabaseService {
     })
   }
 
-  modifyOwner (id, databaseId, username) {
+  modifyOwner (databaseId, username) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/transfer`, { username }, { headers: { Accept: 'application/json' } })
+      api.put(`/api/database/${databaseId}/transfer`, { username }, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const database = response.data
           console.debug('response database', database)
@@ -96,9 +96,9 @@ class DatabaseService {
     })
   }
 
-  checkAccess (id, databaseId) {
+  checkAccess (databaseId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/access`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/access`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const databases = response.data
           console.debug('response databases', databases)
@@ -116,9 +116,9 @@ class DatabaseService {
     })
   }
 
-  modifyAccess (id, databaseId, username, type) {
+  modifyAccess (databaseId, username, type) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/access/${username}`, { type }, { headers: { Accept: 'application/json' } })
+      api.put(`/api/database/${databaseId}/access/${username}`, { type }, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const database = response.data
           console.debug('response database', database)
@@ -133,9 +133,9 @@ class DatabaseService {
     })
   }
 
-  revokeAccess (id, databaseId, username) {
+  revokeAccess (databaseId, username) {
     return new Promise((resolve, reject) => {
-      api.delete(`/api/container/${id}/database/${databaseId}/access/${username}`, { headers: { Accept: 'application/json' } })
+      api.delete(`/api/database/${databaseId}/access/${username}`, { headers: { Accept: 'application/json' } })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
@@ -146,9 +146,9 @@ class DatabaseService {
     })
   }
 
-  giveAccess (id, databaseId, username, type) {
+  giveAccess (databaseId, username, type) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/access`, { username, type }, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/access`, { username, type }, { headers: { Accept: 'application/json' } })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
@@ -159,9 +159,9 @@ class DatabaseService {
     })
   }
 
-  findAllLicenses (id) {
+  findAllLicenses () {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/license`, { headers: { Accept: 'application/json' } })
+      api.get('/api/database/license', { headers: { Accept: 'application/json' } })
         .then((response) => {
           const licenses = response.data
           console.debug('response licenses', licenses)
@@ -176,9 +176,9 @@ class DatabaseService {
     })
   }
 
-  findView (id, databaseId, viewId) {
+  findView (databaseId, viewId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/view/${viewId}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/view/${viewId}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const view = response.data
           console.debug('response view', view)
@@ -193,9 +193,9 @@ class DatabaseService {
     })
   }
 
-  createView (id, databaseId, data) {
+  createView (databaseId, data) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/view`, data, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/view`, data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const view = response.data
           console.debug('response view', view)
@@ -210,9 +210,9 @@ class DatabaseService {
     })
   }
 
-  deleteView (id, databaseId, viewId) {
+  deleteView (databaseId, viewId) {
     return new Promise((resolve, reject) => {
-      api.delete(`/api/container/${id}/database/${databaseId}/view/${viewId}`, { headers: { Accept: 'application/json' } })
+      api.delete(`/api/database/${databaseId}/view/${viewId}`, { headers: { Accept: 'application/json' } })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
diff --git a/dbrepo-ui/api/query.service.js b/dbrepo-ui/api/query.service.js
index db1bc16f3a4c9fd21b125a56182a0e1cc048595a..bfb9be785b24b571a9c2fb3ef9b5bb69e3a10c32 100644
--- a/dbrepo-ui/api/query.service.js
+++ b/dbrepo-ui/api/query.service.js
@@ -2,9 +2,9 @@ import Vue from 'vue'
 import api from '@/api'
 
 class QueryService {
-  findAll (id, databaseId, persisted) {
+  findAll (databaseId, persisted) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/query${persisted === null ? '' : `?persisted=${persisted}`}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/query${persisted === null ? '' : `?persisted=${persisted}`}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const queries = response.data
           console.debug('response queries', queries)
@@ -19,9 +19,9 @@ class QueryService {
     })
   }
 
-  findOne (id, databaseId, queryId) {
+  findOne (databaseId, queryId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/query/${queryId}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/query/${queryId}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const query = response.data
           console.debug('response query', query)
@@ -35,9 +35,9 @@ class QueryService {
     })
   }
 
-  persist (id, databaseId, queryId) {
+  persist (databaseId, queryId) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/query/${queryId}`, {}, { headers: { Accept: 'application/json' } })
+      api.put(`/api/database/${databaseId}/query/${queryId}`, {}, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const query = response.data
           console.debug('response query', query)
@@ -52,9 +52,9 @@ class QueryService {
     })
   }
 
-  importCsv (id, databaseId, tableId, data) {
+  importCsv (databaseId, tableId, data) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/table/${tableId}/data/import`, data, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/table/${tableId}/data/import`, data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const table = response.data
           console.debug('response table', table)
@@ -69,9 +69,9 @@ class QueryService {
     })
   }
 
-  insertTuple (id, databaseId, tableId, data) {
+  insertTuple (databaseId, tableId, data) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/table/${tableId}/data`, data, { headers: { Accept: 'text/csv' } })
+      api.post(`/api/database/${databaseId}/table/${tableId}/data`, data, { headers: { Accept: 'text/csv' } })
         .then((response) => {
           const tuple = response.data
           console.debug('response insert tuple', tuple)
@@ -92,9 +92,9 @@ class QueryService {
     })
   }
 
-  updateTuple (id, databaseId, tableId, data) {
+  updateTuple (databaseId, tableId, data) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/table/${tableId}/data`, data, { headers: { Accept: 'text/csv' } })
+      api.put(`/api/database/${databaseId}/table/${tableId}/data`, data, { headers: { Accept: 'text/csv' } })
         .then((response) => {
           const tuple = response.data
           console.debug('response update tuple', tuple)
@@ -115,9 +115,9 @@ class QueryService {
     })
   }
 
-  exportSubset (id, databaseId, queryId) {
+  exportSubset (databaseId, queryId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/query/${queryId}/export`, { headers: { Accept: 'text/csv' } })
+      api.get(`/api/database/${databaseId}/query/${queryId}/export`, { headers: { Accept: 'text/csv' } })
         .then((response) => {
           const subset = response.data
           console.debug('response subset', subset)
@@ -132,9 +132,9 @@ class QueryService {
     })
   }
 
-  exportMetadata (id, mime) {
+  exportMetadata (pid, mime) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/pid/${id}`, { headers: { Accept: mime } })
+      api.get(`/api/pid/${pid}`, { headers: { Accept: mime } })
         .then((response) => {
           const metadata = response.data
           console.debug('response metadata', metadata)
@@ -149,9 +149,9 @@ class QueryService {
     })
   }
 
-  execute (id, databaseId, data, page, size) {
+  execute (databaseId, data, page, size) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/query?page=${page}&size=${size}`, data, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/query?page=${page}&size=${size}`, data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const result = response.data
           console.debug('response result', result)
@@ -166,9 +166,9 @@ class QueryService {
     })
   }
 
-  reExecuteQuery (id, databaseId, queryId, page, size) {
+  reExecuteQuery (databaseId, queryId, page, size) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/query/${queryId}/data?page=${page}&size=${size}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/query/${queryId}/data?page=${page}&size=${size}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const result = response.data
           console.debug('response result', result)
@@ -183,9 +183,9 @@ class QueryService {
     })
   }
 
-  reExecuteQueryCount (id, databaseId, queryId) {
+  reExecuteQueryCount (databaseId, queryId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/query/${queryId}/data/count`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/query/${queryId}/data/count`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const count = response.data
           console.debug('response count', count)
@@ -200,9 +200,9 @@ class QueryService {
     })
   }
 
-  reExecuteView (id, databaseId, viewId, page, size) {
+  reExecuteView (databaseId, viewId, page, size) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/view/${viewId}/data?page=${page}&size=${size}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/view/${viewId}/data?page=${page}&size=${size}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const result = response.data
           console.debug('response result', result)
@@ -217,9 +217,9 @@ class QueryService {
     })
   }
 
-  reExecuteViewCount (id, databaseId, viewId) {
+  reExecuteViewCount (databaseId, viewId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/view/${viewId}/data/count`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/view/${viewId}/data/count`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const count = response.data
           console.debug('response count', count)
diff --git a/dbrepo-ui/api/table.service.js b/dbrepo-ui/api/table.service.js
index 4ec9769323546338efc608303750468b90232d56..457b014ab676324eb8eafa5e1eb215468628f08f 100644
--- a/dbrepo-ui/api/table.service.js
+++ b/dbrepo-ui/api/table.service.js
@@ -7,9 +7,9 @@ import api from '@/api'
  * @author Martin Weise
  */
 class TableService {
-  findAll (id, databaseId) {
+  findAll (databaseId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/table`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const tables = response.data
           console.debug('response tables', tables)
@@ -24,9 +24,9 @@ class TableService {
     })
   }
 
-  findOne (id, databaseId, tableId) {
+  findOne (databaseId, tableId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table/${tableId}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/table/${tableId}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const table = response.data
           console.debug('response table', table)
@@ -41,9 +41,9 @@ class TableService {
     })
   }
 
-  updateColumn (id, databaseId, tableId, columnId, data) {
+  updateColumn (databaseId, tableId, columnId, data) {
     return new Promise((resolve, reject) => {
-      api.put(`/api/container/${id}/database/${databaseId}/table/${tableId}/column/${columnId}`, data, { headers: { Accept: 'application/json' } })
+      api.put(`/api/database/${databaseId}/table/${tableId}/column/${columnId}`, data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const column = response.data
           console.debug('response column', column)
@@ -58,9 +58,9 @@ class TableService {
     })
   }
 
-  importCsv (id, databaseId, tableId, data) {
+  importCsv (databaseId, tableId, data) {
     return new Promise((resolve, reject) => {
-      api.post(`/api/container/${id}/database/${databaseId}/table/${tableId}/data/import`, data, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/table/${tableId}/data/import`, data, { headers: { Accept: 'application/json' } })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
@@ -71,9 +71,9 @@ class TableService {
     })
   }
 
-  data (id, databaseId, tableId, page, size, timestamp) {
+  data (databaseId, tableId, page, size, timestamp) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table/${tableId}/data?page=${page}&size=${size}&timestamp=${timestamp}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/table/${tableId}/data?page=${page}&size=${size}&timestamp=${timestamp}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const data = response.data
           console.debug('response data', data)
@@ -88,9 +88,9 @@ class TableService {
     })
   }
 
-  dataCount (id, databaseId, tableId, timestamp) {
+  dataCount (databaseId, tableId, timestamp) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table/${tableId}/data/count?timestamp=${timestamp}`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/table/${tableId}/data/count?timestamp=${timestamp}`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const count = response.data
           console.debug('response count', count)
@@ -105,9 +105,9 @@ class TableService {
     })
   }
 
-  findHistory (id, databaseId, tableId) {
+  findHistory (databaseId, tableId) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table/${tableId}/history`, { headers: { Accept: 'application/json' } })
+      api.get(`/api/database/${databaseId}/table/${tableId}/history`, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const history = response.data
           console.debug('response history', history)
@@ -122,13 +122,13 @@ class TableService {
     })
   }
 
-  exportData (id, databaseId, tableId) {
-    return this.exportDataTimestamp(id, databaseId, tableId, null)
+  exportData (databaseId, tableId) {
+    return this.exportDataTimestamp(databaseId, tableId, null)
   }
 
-  exportDataTimestamp (id, databaseId, tableId, timestamp) {
+  exportDataTimestamp (databaseId, tableId, timestamp) {
     return new Promise((resolve, reject) => {
-      api.get(`/api/container/${id}/database/${databaseId}/table/${tableId}/export?timestamp=${timestamp}`, { responseType: 'text' })
+      api.get(`/api/database/${databaseId}/table/${tableId}/export?timestamp=${timestamp}`, { responseType: 'text' })
         .then((response) => {
           const data = response.data
           console.debug('response data', data)
@@ -143,10 +143,10 @@ class TableService {
     })
   }
 
-  create (id, databaseId, data) {
+  create (databaseId, data) {
     return new Promise((resolve, reject) => {
       console.debug('====>', data)
-      api.post(`/api/container/${id}/database/${databaseId}/table`, data, { headers: { Accept: 'application/json' } })
+      api.post(`/api/database/${databaseId}/table`, data, { headers: { Accept: 'application/json' } })
         .then((response) => {
           const table = response.data
           console.debug('response table', table)
@@ -161,9 +161,9 @@ class TableService {
     })
   }
 
-  deleteTuple (id, databaseId, tableId, data) {
+  deleteTuple (databaseId, tableId, data) {
     return new Promise((resolve, reject) => {
-      api.delete(`/api/container/${id}/database/${databaseId}/table/${tableId}/data`, { headers: { Accept: 'application/json' }, data })
+      api.delete(`/api/database/${databaseId}/table/${tableId}/data`, { headers: { Accept: 'application/json' }, data })
         .then(() => resolve())
         .catch((error) => {
           const { code, message } = error
diff --git a/dbrepo-ui/components/DBToolbar.vue b/dbrepo-ui/components/DBToolbar.vue
index c899ab03eb0afde4713b7b5b77a6a2b70727c021..b815c6850a875627e4e896b5f6edd07fa4056059 100644
--- a/dbrepo-ui/components/DBToolbar.vue
+++ b/dbrepo-ui/components/DBToolbar.vue
@@ -28,7 +28,7 @@
       </v-toolbar-title>
       <v-spacer />
       <v-toolbar-title>
-        <v-btn v-if="canImportCsv" class="mr-2 mb-1" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/import`">
+        <v-btn v-if="canImportCsv" class="mr-2 mb-1" :to="`/database/${$route.params.database_id}/table/import`">
           <v-icon left>mdi-cloud-upload</v-icon> Import .csv
         </v-btn>
         <DownloadButton
@@ -37,31 +37,31 @@
           class="mr-2 mb-1">
           <v-icon left>mdi-code-tags</v-icon> Identifier .xml
         </DownloadButton>
-        <v-btn v-if="canCreateSubset" color="secondary" class="mb-1 white--text" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/query/create`">
+        <v-btn v-if="canCreateSubset" color="secondary" class="mb-1 white--text" :to="`/database/${$route.params.database_id}/query/create`">
           <v-icon left>mdi-wrench</v-icon> Create Subset
         </v-btn>
-        <v-btn v-if="canCreateView" color="secondary" class="ml-2 mr-2 mb-1 white--text" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/view/create`">
+        <v-btn v-if="canCreateView" color="secondary" class="ml-2 mr-2 mb-1 white--text" :to="`/database/${$route.params.database_id}/view/create`">
           <v-icon left>mdi-view-carousel-outline</v-icon> Create View
         </v-btn>
-        <v-btn v-if="canCreateTable" color="primary" class="mb-1" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/create`">
+        <v-btn v-if="canCreateTable" color="primary" class="mb-1" :to="`/database/${$route.params.database_id}/table/create`">
           <v-icon left>mdi-table-large-plus</v-icon> Create Table
         </v-btn>
       </v-toolbar-title>
       <template v-slot:extension>
         <v-tabs v-model="tab" color="primary">
-          <v-tab :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/info`">
+          <v-tab :to="`/database/${$route.params.database_id}/info`">
             {{ $t('databases.toolbar.info', { name: 'vue-i18n' }) }}
           </v-tab>
-          <v-tab :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`">
+          <v-tab :to="`/database/${$route.params.database_id}/table`">
             {{ $t('databases.toolbar.tables', { name: 'vue-i18n' }) }}
           </v-tab>
-          <v-tab v-if="canViewQueries" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/query`">
+          <v-tab v-if="canViewQueries" :to="`/database/${$route.params.database_id}/query`">
             {{ $t('databases.toolbar.subsets', { name: 'vue-i18n' }) }}
           </v-tab>
-          <v-tab :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/view`">
+          <v-tab :to="`/database/${$route.params.database_id}/view`">
             {{ $t('databases.toolbar.views', { name: 'vue-i18n' }) }}
           </v-tab>
-          <v-tab v-if="isOwner" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/settings`">
+          <v-tab v-if="isOwner" :to="`/database/${$route.params.database_id}/settings`">
             {{ $t('databases.toolbar.settings', { name: 'vue-i18n' }) }}
           </v-tab>
         </v-tabs>
diff --git a/dbrepo-ui/components/DatabaseList.vue b/dbrepo-ui/components/DatabaseList.vue
index aefcbfb70d12897469d4ceaf9b596fe3ed0c5308..1fd05770e5d11a275df7b56813271965a1ebeead 100644
--- a/dbrepo-ui/components/DatabaseList.vue
+++ b/dbrepo-ui/components/DatabaseList.vue
@@ -1,45 +1,36 @@
 <template>
   <div>
-    <v-progress-linear v-if="loadingContainers || loadingDatabases" :indeterminate="!error" />
+    <v-progress-linear v-if="loadingDatabases" :indeterminate="!error" />
     <v-card v-if="!$vuetify.theme.dark && containers.length> 0" flat tile>
       <v-divider class="mx-4" />
     </v-card>
     <v-card
-      v-for="(container, idx) in containers"
+      v-for="(database, idx) in databases"
       :key="idx"
-      :to="link(container)"
+      :to="link(database)"
       flat
       tile>
       <v-divider v-if="idx !== 0" class="mx-4" />
-      <v-card-title v-if="!hasDatabase(container)" v-text="container.name" />
-      <v-card-title v-if="hasDatabase(container)">
-        <a :href="`/container/${container.id}/database/${container.database.id}`">{{ container.name }}</a>
+      <v-card-title>
+        <a :href="`/database/${database.id}`">{{ database.name }}</a>
       </v-card-title>
-      <v-card-subtitle class="db-subtitle" v-text="formatCreators(container)" />
-      <v-card-text v-if="hasDatabase(container)" class="db-description">
+      <v-card-subtitle class="db-subtitle" v-text="formatCreators(database)" />
+      <v-card-text class="db-description">
         <div class="db-tags">
-          <v-chip v-if="hasDatabase(container) && container.database.is_public" small color="green" outlined>Public</v-chip>
-          <v-chip v-if="hasDatabase(container) && !container.database.is_public" small color="red" outlined>Private</v-chip>
+          <v-chip v-if="database.is_public" small color="green" outlined>Public</v-chip>
+          <v-chip v-if="!database.is_public" small color="red" outlined>Private</v-chip>
           <v-chip
-            v-if="identifierYear(container)"
+            v-if="identifierYear(database)"
             small
             outlined
-            v-text="identifierYear(container)" />
+            v-text="identifierYear(database)" />
           <v-chip
-            v-if="hasIdentifier(container)"
+            v-if="hasIdentifier(database)"
             small
             outlined
-            v-text="container.database.identifier.publisher" />
+            v-text="database.identifier.publisher" />
         </div>
-        <div v-text="identifierDescription(container)" />
-        <v-btn
-          v-if="needsDatabase(container)"
-          small
-          secondary
-          :loading="container?.loading"
-          @click.stop="createDatabase(container)">
-          Create Database
-        </v-btn>
+        <div v-text="identifierDescription(database)" />
       </v-card-text>
     </v-card>
     <v-toolbar v-if="false" flat>
@@ -56,23 +47,20 @@
 
 <script>
 import DatabaseService from '@/api/database.service'
-import ContainerService from '@/api/container.service'
-import ContainerMapper from '@/api/container.mapper'
+import DatabaseMapper from '@/api/database.mapper'
 
 export default {
   data () {
     return {
-      loadingContainers: false,
+      loadingDatabases: false,
       loadingCreate: false,
       createDbDialog: false,
       databases: [],
-      containers: [],
       searchQuery: null,
       limit: 100,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' }
       ],
-      loadingDatabases: false,
       error: false
     }
   },
@@ -85,64 +73,42 @@ export default {
     }
   },
   mounted () {
-    this.loadContainers()
+    this.loadDatabases()
   },
   methods: {
-    formatCreators (container) {
-      return ContainerMapper.containerToCreator(container)
-    },
-    needsDatabase (container) {
-      if (!this.user) {
-        return false
-      }
-      if (container.creator.username !== this.user.username) {
-        return false
-      }
-      return !container.database
-    },
-    hasDatabase (container) {
-      return container.database
+    formatCreators (database) {
+      return DatabaseMapper.databaseToOwner(database)
     },
-    hasIdentifier (container) {
-      return container.database && container.database.identifier
+    hasIdentifier (database) {
+      return database && database.identifier
     },
-    identifierYear (container) {
-      if (!container || !container.database || !container.database.identifier || !container.database.identifier.publication_year) {
+    identifierYear (database) {
+      if (!database || !database.identifier || !database.identifier.publication_year) {
         return null
       }
-      return container.database.identifier.publication_year
+      return database.identifier.publication_year
     },
-    identifierDescription (container) {
-      if (!container || !container.database || !container.database.identifier) {
+    identifierDescription (database) {
+      if (!database || !database.identifier) {
         return null
       }
-      return container.database.identifier.description
+      return database.identifier.description
     },
-    loadContainers () {
+    loadDatabases () {
       this.createDbDialog = false
-      this.loadingContainers = true
-      ContainerService.findAll(this.limit)
-        .then((containers) => {
-          this.containers = containers
-          console.info('Found', this.containers.length, 'container(s)')
-        })
-        .finally(() => {
-          this.loadingContainers = false
-        })
-    },
-    createDatabase (container) {
-      container.loading = true
-      DatabaseService.create(container.id, { name: container.name, is_public: true })
-        .then((database) => {
-          container.loading = false
-          this.$router.push(`/container/${container.id}/database/${database.id}`)
+      this.loadingDatabases = true
+      DatabaseService.findAll() // TODO: write a findAllDatabases method
+        .then((databases) => {
+          this.databases = databases
+          console.info('Found', this.databases.length, 'container(s)')
         })
+      this.loadingDatabases = false
     },
-    link (container) {
-      if (!container.database || !container.database.id) {
+    link (database) {
+      if (!database || !database.container) {
         return null
       }
-      return `/container/${container.id}/database/${container.database.id}`
+      return `/database/${database.id}`
     }
   }
 }
diff --git a/dbrepo-ui/components/QueryList.vue b/dbrepo-ui/components/QueryList.vue
index 4485e3494518a7b1e0f23b4053025358d8edbcd1..2a7e2a9f9fdc7066e30e79301affc3faddbe38b2 100644
--- a/dbrepo-ui/components/QueryList.vue
+++ b/dbrepo-ui/components/QueryList.vue
@@ -147,7 +147,7 @@ export default {
     },
     loadQueries () {
       this.loadingQueries = true
-      QueryService.findAll(this.$route.params.container_id, this.$route.params.database_id, true)
+      QueryService.findAll(this.$route.params.database_id, true)
         .then((queries) => {
           this.queries = queries
         })
@@ -166,7 +166,7 @@ export default {
     },
     link (queryOrIdentifier) {
       if (queryOrIdentifier.identifier === null) {
-        return `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query/${queryOrIdentifier.id}`
+        return `/database/${this.$route.params.database_id}/query/${queryOrIdentifier.id}`
       }
       if ('query_id' in queryOrIdentifier) {
         return null
diff --git a/dbrepo-ui/components/TableList.vue b/dbrepo-ui/components/TableList.vue
index f627f9387e4e329e73c7ff922e55fe2387c26c0a..790e98a2093b516643ac321578d9e736f8f6d57f 100644
--- a/dbrepo-ui/components/TableList.vue
+++ b/dbrepo-ui/components/TableList.vue
@@ -11,7 +11,7 @@
       <v-list-item-group>
         <v-list-item
           two-line
-          :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${item.id}`">
+          :to="`/database/${$route.params.database_id}/table/${item.id}`">
           <v-list-item-content>
             <v-list-item-title v-text="item.name" />
             <v-list-item-subtitle class="mt-2" v-text="item.description" />
diff --git a/dbrepo-ui/components/TableSchema.vue b/dbrepo-ui/components/TableSchema.vue
index a70d6c7563534f8b6361b7cf00d9cf63201edfae..2db4e4821344e8b39bba92b4ad2f5aaa0a76fe65 100644
--- a/dbrepo-ui/components/TableSchema.vue
+++ b/dbrepo-ui/components/TableSchema.vue
@@ -99,7 +99,7 @@
 </template>
 
 <script>
-import ContainerService from '@/api/container.service'
+import DatabaseService from '@/api/database.service'
 export default {
   props: {
     columns: {
@@ -134,11 +134,6 @@ export default {
       valid: true,
       finished: false,
       tableColumns: [],
-      container: {
-        image: {
-          id: null
-        }
-      },
       columnTypes: [
         // { value: 'ENUM', text: 'Enumeration' }, // Disabled for now, not implemented, #145
         { value: 'boolean', text: 'Boolean' },
@@ -165,7 +160,7 @@ export default {
   },
   mounted () {
     this.localLoading = this.loading
-    this.loadContainer()
+    this.loadDateFormats()
   },
   methods: {
     needsShift (column) {
@@ -174,19 +169,13 @@ export default {
       }
       return this.columns.filter(c => c.type === 'date' || c.type === 'timestamp').length > 0
     },
-    loadContainer () {
-      this.localLoading = true
-      ContainerService.findOne(this.$route.params.container_id)
-        .then((container) => {
-          this.container = container
-          ContainerService.findImage(container.image.id)
-            .then((image) => {
-              this.dateFormats = image.date_formats
-            })
-        })
-        .finally(() => {
-          this.localLoading = false
-        })
+    async loadDateFormats () {
+      try {
+        const database = await DatabaseService.findOne(this.$route.params.database_id)
+        this.dateFormats = database.container.image.date_formats
+      } finally {
+        this.localLoading = false
+      }
     },
     submit () {
       this.finished = true
diff --git a/dbrepo-ui/components/TableToolbar.vue b/dbrepo-ui/components/TableToolbar.vue
index 69351b3121ea40023089d48934d99fa77ad74d9e..0db2e9f3c8922361fda12c6d04ff05c6cd382501 100644
--- a/dbrepo-ui/components/TableToolbar.vue
+++ b/dbrepo-ui/components/TableToolbar.vue
@@ -2,7 +2,7 @@
   <div v-if="table">
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" plain class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`">
+        <v-btn id="back-btn" plain class="mr-2" :to="`/database/${$route.params.database_id}/table`">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
@@ -20,25 +20,25 @@
         <v-btn v-if="canDeleteTuple" color="error" class="mr-2 mb-1" :loading="loadingDelete" @click="deleteItems">
           <v-icon left>mdi-delete</v-icon> Delete <span v-if="selection.length > 1">&nbsp;{{ selection.length }}</span>
         </v-btn>
-        <v-btn v-if="canExecuteQuery" class="mb-1" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/query/create?tid=${$route.params.table_id}`" color="secondary">
+        <v-btn v-if="canExecuteQuery" class="mb-1" :to="`/database/${$route.params.database_id}/query/create?tid=${$route.params.table_id}`" color="secondary">
           <v-icon left>mdi-wrench</v-icon> Create Subset
         </v-btn>
-        <v-btn v-if="canCreateView" class="ml-2 mb-1" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/view/create?tid=${$route.params.table_id}`" color="secondary">
+        <v-btn v-if="canCreateView" class="ml-2 mb-1" :to="`/database/${$route.params.database_id}/view/create?tid=${$route.params.table_id}`" color="secondary">
           <v-icon left>mdi-view-carousel</v-icon> Create View
         </v-btn>
-        <v-btn v-if="canImportCsv" class="ml-2 mb-1" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${$route.params.table_id}/import`">
+        <v-btn v-if="canImportCsv" class="ml-2 mb-1" :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/import`">
           <v-icon left>mdi-cloud-upload</v-icon> Import .csv
         </v-btn>
       </v-toolbar-title>
     </v-toolbar>
     <v-tabs v-model="tab" color="primary">
-      <v-tab :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${$route.params.table_id}/info`">
+      <v-tab :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/info`">
         Info
       </v-tab>
-      <v-tab v-if="canViewTableData" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${$route.params.table_id}/data`">
+      <v-tab v-if="canViewTableData" :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/data`">
         Data
       </v-tab>
-      <v-tab :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${$route.params.table_id}/schema`">
+      <v-tab :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/schema`">
         Schema
       </v-tab>
     </v-tabs>
@@ -203,7 +203,7 @@ export default {
           .forEach((c) => {
             constraints[c.internal_name] = select[c.internal_name]
           })
-        TableService.deleteTuple(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, { keys: constraints })
+        TableService.deleteTuple(this.$route.params.database_id, this.$route.params.table_id, { keys: constraints })
           .then(() => {
             this.$toast.success(`Deleted ${this.selection.length} row${this.selection.length !== 1 ? 's' : ''}`)
             this.$emit('modified', { success: true, action: 'delete' })
diff --git a/dbrepo-ui/components/ViewList.vue b/dbrepo-ui/components/ViewList.vue
index 340a624c57a952d7884e8d4940bae1d45249840b..4f28e1a718af0f5fa356fe3c4faa665f531658c4 100644
--- a/dbrepo-ui/components/ViewList.vue
+++ b/dbrepo-ui/components/ViewList.vue
@@ -9,7 +9,7 @@
     <div v-for="(item,i) in views" :key="i">
       <v-divider v-if="i !== 0" class="mx-4" />
       <v-list-item-group>
-        <v-list-item two-line :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/view/${item.id}`">
+        <v-list-item two-line :to="`/database/${$route.params.database_id}/view/${item.id}`">
           <v-list-item-content>
             <v-list-item-title v-text="item.name" />
             <v-list-item-subtitle class="mt-2">
@@ -91,7 +91,7 @@ export default {
   methods: {
     deleteView (view) {
       this.loading = true
-      DatabaseService.deleteView(this.$route.params.container_id, this.$route.params.database_id, view.id)
+      DatabaseService.deleteView(this.$route.params.database_id, view.id)
         .then(() => {
           this.$toast.success(`Successfully deleted view with id ${view.id}`)
         })
diff --git a/dbrepo-ui/components/dialogs/CreateDB.vue b/dbrepo-ui/components/dialogs/CreateDB.vue
index 0259ba127e6470ca28562c0c97536d3ba7cfc263..19d5bbef1c9d9dfca4368bfd5e5b07bd45dd18fe 100644
--- a/dbrepo-ui/components/dialogs/CreateDB.vue
+++ b/dbrepo-ui/components/dialogs/CreateDB.vue
@@ -9,7 +9,7 @@
             <v-col>
               <v-text-field
                 id="database"
-                v-model="createContainerDto.name"
+                v-model="createDatabaseDto.name"
                 name="database"
                 label="Name *"
                 autofocus
@@ -25,7 +25,7 @@
                 name="engine"
                 label="Engine *"
                 :items="engines"
-                :item-text="item => `${item.repository}:${item.tag}`"
+                :item-text="item => `${item.name}`"
                 :rules="[v => !!v || $t('Required')]"
                 return-object
                 required />
@@ -70,19 +70,10 @@ export default {
         tag: null
       },
       engines: [],
-      createContainerDto: {
-        name: null,
-        repository: null,
-        tag: null
-      },
       createDatabaseDto: {
         name: null,
         is_public: true
       },
-      container: {
-        id: null,
-        name: null
-      },
       database: {
         id: null
       }
@@ -108,9 +99,9 @@ export default {
     },
     getImages () {
       this.loading = true
-      ContainerService.findAllImages()
-        .then((images) => {
-          this.engines = images
+      ContainerService.findAll()
+        .then((containers) => {
+          this.engines = containers
           if (this.engines.length > 0) {
             this.engine = this.engines[0]
           }
@@ -120,45 +111,17 @@ export default {
         })
     },
     async create () {
-      await this.createContainer()
-        .then(() => this.startContainer(this.container)
-          .then(() => this.createDatabase(this.container)))
-    },
-    createContainer () {
-      this.createContainerDto.repository = this.engine.repository
-      this.createContainerDto.tag = this.engine.tag
-      this.loading = true
-      return new Promise((resolve, reject) => {
-        ContainerService.create(this.createContainerDto)
-          .then((container) => {
-            this.container = container
-            this.loading = false
-            resolve(container)
-          })
-          .catch(error => reject(error))
-      })
+      await this.createDatabase(this.engine)
     },
-    startContainer (container) {
+    async createDatabase (container) {
       this.loading = true
-      return new Promise((resolve, reject) => {
-        ContainerService.modify(container.id, 'start')
-          .then(() => {
-            this.loading = false
-            resolve()
-          })
-          .catch(error => reject(error))
-      })
-    },
-    createDatabase (container) {
-      this.loading = true
-      DatabaseService.create(container.id, { name: container.name, is_public: true })
-        .then((database) => {
-          container.database = database
-          this.$emit('close', { success: true })
-        })
-        .finally(() => {
-          this.loading = false
-        })
+      try {
+        this.database = await DatabaseService.create({ container_id: this.engine.id, name: this.createDatabaseDto.name, is_public: true })
+        this.$emit('close', { success: true })
+        return this.database
+      } finally {
+        this.loading = false
+      }
     },
     notEmpty
   }
diff --git a/dbrepo-ui/components/dialogs/EditAccess.vue b/dbrepo-ui/components/dialogs/EditAccess.vue
index 6048006744ea2c0b19a1ffa55e8669fedf7cfa87..d6c761f0299e094737ed5a8b4c01e283abe64b8f 100644
--- a/dbrepo-ui/components/dialogs/EditAccess.vue
+++ b/dbrepo-ui/components/dialogs/EditAccess.vue
@@ -201,7 +201,7 @@ export default {
     },
     revokeAccess () {
       this.loading = true
-      DatabaseService.revokeAccess(this.$route.params.container_id, this.$route.params.database_id, this.modify.username)
+      DatabaseService.revokeAccess(this.$route.params.database_id, this.modify.username)
         .then(() => {
           this.$toast.success(`Successfully revoked access of ${this.modify.username}`)
           this.$emit('close-dialog', { success: true })
@@ -212,7 +212,7 @@ export default {
     },
     modifyAccess () {
       this.loading = true
-      DatabaseService.modifyAccess(this.$route.params.container_id, this.$route.params.database_id, this.modify.username, this.modify.type)
+      DatabaseService.modifyAccess(this.$route.params.database_id, this.modify.username, this.modify.type)
         .then(() => {
           this.$toast.success(`Successfully modified access of ${this.modify.username}`)
           this.$emit('close-dialog', { success: true })
@@ -223,7 +223,7 @@ export default {
     },
     giveAccess () {
       this.loading = true
-      DatabaseService.giveAccess(this.$route.params.container_id, this.$route.params.database_id, this.modify.username, this.modify.type)
+      DatabaseService.giveAccess(this.$route.params.database_id, this.modify.username, this.modify.type)
         .then(() => {
           this.$toast.success(`Successfully gave ${this.modify.username} access`)
           this.$emit('close-dialog', { success: true })
diff --git a/dbrepo-ui/components/dialogs/EditTuple.vue b/dbrepo-ui/components/dialogs/EditTuple.vue
index 8527fa95b5136e09c7264bfea10146a62fb8dc5f..da01223f23fb4da55df0263544eaf926aa04df26 100644
--- a/dbrepo-ui/components/dialogs/EditTuple.vue
+++ b/dbrepo-ui/components/dialogs/EditTuple.vue
@@ -198,7 +198,7 @@ export default {
         data: this.localTuple,
         keys: constraints
       }
-      QueryService.updateTuple(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, data)
+      QueryService.updateTuple(this.$route.params.database_id, this.$route.params.table_id, data)
         .then(() => {
           this.$toast.success('Successfully updated tuple!')
           this.$emit('close', { success: true })
@@ -216,7 +216,7 @@ export default {
           this.localTuple[column.internal_name] = null
         }
       })
-      QueryService.insertTuple(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, { data: this.localTuple })
+      QueryService.insertTuple(this.$route.params.database_id, this.$route.params.table_id, { data: this.localTuple })
         .then(() => {
           this.$toast.success('Successfully added tuple!')
           this.$emit('close', { success: true })
diff --git a/dbrepo-ui/components/dialogs/Persist.vue b/dbrepo-ui/components/dialogs/Persist.vue
index bcc3068d66cdf52477d57b2ff0360a06c6ee42e4..90946d8164ab24a2ca791d36c4c6bfde8cd5f2b7 100644
--- a/dbrepo-ui/components/dialogs/Persist.vue
+++ b/dbrepo-ui/components/dialogs/Persist.vue
@@ -238,7 +238,6 @@ export default {
         { name: 'Private', value: 'self' }
       ],
       identifier: {
-        cid: parseInt(this.$route.params.container_id),
         dbid: parseInt(this.$route.params.database_id),
         qid: parseInt(this.$route.params.query_id),
         title: null,
@@ -420,7 +419,6 @@ export default {
     update () {
       this.loading = true
       const payload = {
-        cid: parseInt(this.$route.params.container_id),
         dbid: parseInt(this.$route.params.database_id),
         qid: parseInt(this.$route.params.query_id),
         title: this.identifier.title,
@@ -448,7 +446,7 @@ export default {
         return
       }
       this.loading = true
-      DatabaseService.findAllLicenses(this.$route.params.container_id)
+      DatabaseService.findAllLicenses()
         .then((licenses) => {
           this.licenses = licenses
         })
diff --git a/dbrepo-ui/components/dialogs/TimeTravel.vue b/dbrepo-ui/components/dialogs/TimeTravel.vue
index 1007db8b50784920d627063bc05db023c86b9d4f..6dece28569b74550474c882e2424f4625f01da39 100644
--- a/dbrepo-ui/components/dialogs/TimeTravel.vue
+++ b/dbrepo-ui/components/dialogs/TimeTravel.vue
@@ -115,7 +115,7 @@ export default {
     },
     loadHistory () {
       this.loading = true
-      TableService.findHistory(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id)
+      TableService.findHistory(this.$route.params.database_id, this.$route.params.table_id)
         .then((history) => {
           this.chartData.labels = history.map(function (d, idx) {
             if (idx === 0) {
diff --git a/dbrepo-ui/components/query/Builder.vue b/dbrepo-ui/components/query/Builder.vue
index 9acae34636ade73f1e78f7ec69b443bad2386197..3a15a3aceab29c10ae90b294cae7462757a3ae1c 100644
--- a/dbrepo-ui/components/query/Builder.vue
+++ b/dbrepo-ui/components/query/Builder.vue
@@ -234,7 +234,7 @@ export default {
       return this.$store.state.database
     },
     viewLink () {
-      return `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}` + (this.isView ? '/view' : '/query') + `/${this.resultId}`
+      return `/database/${this.$route.params.database_id}` + (this.isView ? '/view' : '/query') + `/${this.resultId}`
     },
     token () {
       return this.$store.state.token
@@ -261,7 +261,7 @@ export default {
       return !(!this.sql || this.sql.length === 0)
     },
     backTo () {
-      return `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/` + (this.isView ? 'view' : 'query')
+      return `/database/${this.$route.params.database_id}/` + (this.isView ? 'view' : 'query')
     },
     isView () {
       return this.mode === 'view'
@@ -322,7 +322,7 @@ export default {
     createView () {
       this.loadingQuery = true
       this.view.query = this.sql
-      DatabaseService.createView(this.$route.params.container_id, this.$route.params.database_id, this.view)
+      DatabaseService.createView(this.$route.params.database_id, this.view)
         .then(async (view) => {
           this.resultId = view.id
           await this.$store.dispatch('reloadDatabase')
diff --git a/dbrepo-ui/components/query/Results.vue b/dbrepo-ui/components/query/Results.vue
index 74a06f23e8b17e70409aac780278adcc3c100425..26bb001c9640f0340cfb7b33353f4f194019994c 100644
--- a/dbrepo-ui/components/query/Results.vue
+++ b/dbrepo-ui/components/query/Results.vue
@@ -48,7 +48,7 @@ export default {
         statement: sql,
         timestamp
       }
-      QueryService.execute(this.$route.params.container_id, this.$route.params.database_id, payload, 0, this.options.itemsPerPage)
+      QueryService.execute(this.$route.params.database_id, payload, 0, this.options.itemsPerPage)
         .then((result) => {
           this.mapResults(result)
           parent.resultId = result.id
@@ -70,7 +70,7 @@ export default {
       }
       this.loading++
       if (this.type === 'query') {
-        QueryService.reExecuteQuery(this.$route.params.container_id, this.$route.params.database_id, id, 0, this.options.itemsPerPage)
+        QueryService.reExecuteQuery(this.$route.params.database_id, id, 0, this.options.itemsPerPage)
           .then((result) => {
             this.mapResults(result)
             this.id = id
@@ -79,7 +79,7 @@ export default {
             this.loading--
           })
       } else {
-        QueryService.reExecuteView(this.$route.params.container_id, this.$route.params.database_id, id, 0, this.options.itemsPerPage)
+        QueryService.reExecuteView(this.$route.params.database_id, id, 0, this.options.itemsPerPage)
           .then((result) => {
             this.mapResults(result)
             this.id = id
@@ -95,7 +95,7 @@ export default {
       }
       this.loading++
       if (this.type === 'query') {
-        QueryService.reExecuteQueryCount(this.$route.params.container_id, this.$route.params.database_id, id)
+        QueryService.reExecuteQueryCount(this.$route.params.database_id, id)
           .then((count) => {
             this.total = count
           })
@@ -103,7 +103,7 @@ export default {
             this.loading--
           })
       } else {
-        QueryService.reExecuteViewCount(this.$route.params.container_id, this.$route.params.database_id, id)
+        QueryService.reExecuteViewCount(this.$route.params.database_id, id)
           .then((count) => {
             this.total = count
           })
diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue
index bbc3bdc862de2bc7999460e717243736750625d7..dc4fe88be2533bac050eb9ca2c516550c34fac9d 100644
--- a/dbrepo-ui/layouts/default.vue
+++ b/dbrepo-ui/layouts/default.vue
@@ -29,7 +29,7 @@
           </v-list-item-content>
         </v-list-item>
         <v-list-item
-          to="/container"
+          to="/database"
           router>
           <v-list-item-action>
             <v-icon>mdi-database</v-icon>
@@ -105,12 +105,14 @@
               </v-btn>
             </template>
             <v-list>
+              <!--
               <v-list-item
                 v-for="locale in []"
                 :key="locale.code"
                 :to="switchLocalePath(locale.code)">
                 <v-list-item-title>{{ locale.name }}</v-list-item-title>
               </v-list-item>
+              -->
               <v-list-item
                 v-if="user"
                 @click="logout">
@@ -162,9 +164,6 @@ export default {
     user () {
       return this.$store.state.user
     },
-    container () {
-      return this.$store.state.container
-    },
     locale () {
       return this.$store.state.locale
     },
@@ -257,15 +256,15 @@ export default {
       this.$store.commit('SET_USER', null)
       this.$store.commit('SET_ACCESS', null)
       this.$vuetify.theme.dark = false
-      this.$router.push('/container')
+      this.$router.push('/database')
     },
     loadDatabase () {
-      if (!this.$route.params.container_id || !this.$route.params.database_id) {
+      if (!this.$route.params.database_id) {
         this.$store.commit('SET_DATABASE', null)
         return
       }
       this.loading = true
-      DatabaseService.findOne(this.$route.params.container_id, this.$route.params.database_id)
+      DatabaseService.findOne(this.$route.params.database_id)
         .then((database) => {
           this.$store.commit('SET_DATABASE', database)
           this.loading = false
@@ -276,11 +275,11 @@ export default {
         })
     },
     loadTable () {
-      if (!this.$route.params.container_id || !this.$route.params.database_id || !this.$route.params.table_id) {
+      if (!this.$route.params.database_id || !this.$route.params.table_id) {
         return
       }
       this.loading = true
-      TableService.findOne(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id)
+      TableService.findOne(this.$route.params.database_id, this.$route.params.table_id)
         .then((table) => {
           this.$store.commit('SET_TABLE', table)
         })
@@ -289,14 +288,14 @@ export default {
         })
     },
     loadAccess () {
-      if (!this.$route.params.container_id || !this.$route.params.database_id) {
+      if (!this.$route.params.database_id) {
         return
       }
       if (!this.token) {
         return
       }
       this.loading = true
-      DatabaseService.checkAccess(this.$route.params.container_id, this.$route.params.database_id)
+      DatabaseService.checkAccess(this.$route.params.database_id)
         .then((access) => {
           this.$store.commit('SET_ACCESS', access)
           this.loading = false
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/index.vue b/dbrepo-ui/pages/container/_container_id/database/_database_id/index.vue
deleted file mode 100644
index e39d3d7b62049773de5edcbde3dabf7d92e6c7c6..0000000000000000000000000000000000000000
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<template>
-  <div />
-</template>
-
-<script>
-export default {
-  mounted () {
-    this.$router.push(`/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`)
-  }
-}
-</script>
-<style>
-</style>
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue b/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue
deleted file mode 100644
index 6d0e9b5002cb424a1ee5861deaf678b87966018e..0000000000000000000000000000000000000000
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue
+++ /dev/null
@@ -1,10 +0,0 @@
-<template>
-  <div />
-</template>
-<script>
-export default {
-  mounted () {
-    this.$router.push(`/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}/info`)
-  }
-}
-</script>
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/admin.vue b/dbrepo-ui/pages/database/_database_id/admin.vue
similarity index 86%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/admin.vue
rename to dbrepo-ui/pages/database/_database_id/admin.vue
index c3d1f0f47fedc994be074e05d0d3d6c5fa3f88c8..6cd364777737544fd36ae6989a2d8c8a4d47dd9b 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/admin.vue
+++ b/dbrepo-ui/pages/database/_database_id/admin.vue
@@ -37,7 +37,7 @@
 </template>
 
 <script>
-import DBToolbar from '@/components/DBToolbar'
+import DBToolbar from '@/components/DBToolbar.vue'
 import DatabaseService from '@/api/database.service'
 
 export default {
@@ -49,10 +49,10 @@ export default {
       dialogDelete: false,
       confirm: null,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         }
       ]
@@ -74,7 +74,7 @@ export default {
   },
   methods: {
     deleteDatabase () {
-      DatabaseService.delete(this.$route.params.container_id, this.$route.params.database_id)
+      DatabaseService.delete(this.$route.params.database_id)
         .then(async () => {
           this.$toast.success(`Database "${this.db.name}" deleted.`)
           await this.$router.push({ path: '/databases' })
diff --git a/dbrepo-ui/pages/database/_database_id/index.vue b/dbrepo-ui/pages/database/_database_id/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..185b5d49613f45ba45e137fba7ba9a42a49c55cc
--- /dev/null
+++ b/dbrepo-ui/pages/database/_database_id/index.vue
@@ -0,0 +1,13 @@
+<template>
+  <div />
+</template>
+
+<script>
+export default {
+  mounted () {
+    this.$router.push(`/database/${this.$route.params.database_id}/info`)
+  }
+}
+</script>
+<style>
+</style>
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue b/dbrepo-ui/pages/database/_database_id/info.vue
similarity index 97%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue
rename to dbrepo-ui/pages/database/_database_id/info.vue
index 3abeb30d7c7cc34d070b973cddabe068e015a335..543b0c8d57785ff8d783cbbcf3bfd9a4593b52be 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue
+++ b/dbrepo-ui/pages/database/_database_id/info.vue
@@ -271,12 +271,12 @@
 </template>
 
 <script>
-import DBToolbar from '@/components/DBToolbar'
-import Persist from '@/components/dialogs/Persist'
-import OrcidIcon from '@/components/icons/OrcidIcon'
-import Citation from '@/components/identifier/Citation'
+import DBToolbar from '@/components/DBToolbar.vue'
+import Persist from '@/components/dialogs/Persist.vue'
+import OrcidIcon from '@/components/icons/OrcidIcon.vue'
+import Citation from '@/components/identifier/Citation.vue'
 import { formatTimestampUTCLabel } from '@/utils'
-import Banner from '@/components/identifier/Banner'
+import Banner from '@/components/identifier/Banner.vue'
 import DatabaseMapper from '@/api/database.mapper'
 import DeleteIdentifier from '@/components/dialogs/DeleteIdentifier.vue'
 import ContainerService from '@/api/container.service'
@@ -300,10 +300,10 @@ export default {
       deleteDialog: false,
       persistDialog: false,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         }
       ]
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/_query_id/index.vue b/dbrepo-ui/pages/database/_database_id/query/_query_id/index.vue
similarity index 92%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/query/_query_id/index.vue
rename to dbrepo-ui/pages/database/_database_id/query/_query_id/index.vue
index b2a84bcc320c3b181e217bdc6fbcbb6802f9c126..21b02e5a05f3e747e93ad0f2febf1dd2cc7ffe30 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/_query_id/index.vue
+++ b/dbrepo-ui/pages/database/_database_id/query/_query_id/index.vue
@@ -219,10 +219,10 @@
   </div>
 </template>
 <script>
-import Persist from '@/components/dialogs/Persist'
-import Citation from '@/components/identifier/Citation'
-import Banner from '@/components/identifier/Banner'
-import DownloadButton from '@/components/identifier/DownloadButton'
+import Persist from '@/components/dialogs/Persist.vue'
+import Citation from '@/components/identifier/Citation.vue'
+import Banner from '@/components/identifier/Banner.vue'
+import DownloadButton from '@/components/identifier/DownloadButton.vue'
 import { formatTimestampUTCLabel, formatDateUTC } from '@/utils'
 import QueryService from '@/api/query.service'
 import UserUtils from '@/api/user.utils'
@@ -238,10 +238,10 @@ export default {
   data () {
     return {
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}`, activeClass: '' },
-        { text: 'Queries', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query`, activeClass: '' },
-        { text: `${this.$route.params.query_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query/${this.$route.params.query_id}`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}`, activeClass: '' },
+        { text: 'Queries', to: `/database/${this.$route.params.database_id}/query`, activeClass: '' },
+        { text: `${this.$route.params.query_id}`, to: `/database/${this.$route.params.database_id}/query/${this.$route.params.query_id}`, activeClass: '' }
       ],
       query: {
         id: parseInt(this.$route.params.query_id),
@@ -318,7 +318,7 @@ export default {
       return this.database.publisher
     },
     backTo () {
-      return `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query`
+      return `/database/${this.$route.params.database_id}/query`
     },
     result_visibility () {
       if (!this.database || this.database.is_public === null) {
@@ -365,7 +365,7 @@ export default {
     },
     downloadSubset () {
       this.downloadLoading = true
-      QueryService.exportSubset(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.query_id)
+      QueryService.exportSubset(this.$route.params.database_id, this.$route.params.query_id)
         .then((data) => {
           const url = window.URL.createObjectURL(new Blob([data]))
           const link = document.createElement('a')
@@ -381,7 +381,7 @@ export default {
     loadQuery () {
       this.loadingQuery = true
       return new Promise((resolve, reject) => {
-        QueryService.findOne(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.query_id)
+        QueryService.findOne(this.$route.params.database_id, this.$route.params.query_id)
           .then((query) => {
             this.query = query
             resolve(query)
@@ -394,7 +394,7 @@ export default {
     },
     save () {
       this.loadingSave = true
-      QueryService.persist(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.query_id)
+      QueryService.persist(this.$route.params.database_id, this.$route.params.query_id)
         .then((query) => {
           this.query = query
         })
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/create.vue b/dbrepo-ui/pages/database/_database_id/query/create.vue
similarity index 74%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/query/create.vue
rename to dbrepo-ui/pages/database/_database_id/query/create.vue
index f6864c8b031ed621d25b20b6b83cc6e6fc295680..5b24d2f136e51211f7ab8016b3118025c4e292ec 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/create.vue
+++ b/dbrepo-ui/pages/database/_database_id/query/create.vue
@@ -12,15 +12,15 @@ export default {
   data () {
     return {
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         },
         {
           text: 'Queries',
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query`,
+          to: `/database/${this.$route.params.database_id}/query`,
           activeClass: ''
         }
       ]
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/index.vue b/dbrepo-ui/pages/database/_database_id/query/index.vue
similarity index 70%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/query/index.vue
rename to dbrepo-ui/pages/database/_database_id/query/index.vue
index 0a8bb9111fc310c3f0322ec13b5231f4aa6b9f36..8b2f7103ad08fa27fe9ed8b7f4c87c0d78a01310 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/query/index.vue
+++ b/dbrepo-ui/pages/database/_database_id/query/index.vue
@@ -12,10 +12,10 @@ export default {
   data () {
     return {
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/query`,
+          to: `/database/${this.$route.params.database_id}/query`,
           activeClass: ''
         }
       ]
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/settings.vue b/dbrepo-ui/pages/database/_database_id/settings.vue
similarity index 93%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/settings.vue
rename to dbrepo-ui/pages/database/_database_id/settings.vue
index 28cf44a2158a2bbf6cc6c25691ce528d2e5728a4..c53b66b17da339c0fcb03e52b68d59b329bcf1d2 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/settings.vue
+++ b/dbrepo-ui/pages/database/_database_id/settings.vue
@@ -94,8 +94,8 @@
 </template>
 
 <script>
-import DBToolbar from '@/components/DBToolbar'
-import EditAccess from '@/components/dialogs/EditAccess'
+import DBToolbar from '@/components/DBToolbar.vue'
+import EditAccess from '@/components/dialogs/EditAccess.vue'
 import DatabaseService from '@/api/database.service'
 import UserService from '@/api/user.service'
 
@@ -135,7 +135,7 @@ export default {
         { text: 'Databases', to: '/container', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         }
       ]
@@ -226,7 +226,7 @@ export default {
     },
     updateDatabaseVisibility () {
       this.loading = true
-      DatabaseService.modifyVisibility(this.$route.params.container_id, this.$route.params.database_id, this.modifyVisibility.is_public)
+      DatabaseService.modifyVisibility(this.$route.params.database_id, this.modifyVisibility.is_public)
         .then(() => {
           this.$toast.success('Successfully updated the database visibility')
           location.reload()
@@ -237,7 +237,7 @@ export default {
     },
     updateDatabaseOwner () {
       this.loading = true
-      DatabaseService.modifyOwner(this.$route.params.container_id, this.$route.params.database_id, this.modifyOwner.username)
+      DatabaseService.modifyOwner(this.$route.params.database_id, this.modifyOwner.username)
         .then(() => {
           this.$toast.success('Successfully updated the database owner')
           location.reload()
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/data.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue
similarity index 86%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/data.vue
rename to dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue
index 925403b70d519a406a8353fc407225bc663a9f40..a628cd17866759fa3979f4bc3d57c5a554915870 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/data.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/data.vue
@@ -45,8 +45,8 @@
   </div>
 </template>
 <script>
-import TimeTravel from '@/components/dialogs/TimeTravel'
-import TableToolbar from '@/components/TableToolbar'
+import TimeTravel from '@/components/dialogs/TimeTravel.vue'
+import TableToolbar from '@/components/TableToolbar.vue'
 import TableService from '@/api/table.service'
 import { formatTimestampUTC, formatDateUTC, formatTimestamp } from '@/utils'
 
@@ -80,10 +80,10 @@ export default {
       },
       dateColumns: [],
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`, activeClass: '' },
-        { text: 'Tables', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' },
-        { text: `${this.$route.params.table_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}/info`, activeClass: '' },
+        { text: 'Tables', to: `/database/${this.$route.params.database_id}/table`, activeClass: '' },
+        { text: `${this.$route.params.table_id}`, to: `/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
       ],
       headers: [],
       rows: []
@@ -180,7 +180,7 @@ export default {
     download () {
       this.downloadLoading = true
       if (!this.version) {
-        TableService.exportData(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id)
+        TableService.exportData(this.$route.params.database_id, this.$route.params.table_id)
           .then((data) => {
             const url = window.URL.createObjectURL(new Blob([data]))
             const link = document.createElement('a')
@@ -193,7 +193,7 @@ export default {
             this.downloadLoading = false
           })
       } else {
-        TableService.exportData(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, this.versionISO)
+        TableService.exportData(this.$route.params.database_id, this.$route.params.table_id, this.versionISO)
           .then((data) => {
             const url = window.URL.createObjectURL(new Blob([data]))
             const link = document.createElement('a')
@@ -266,7 +266,7 @@ export default {
     },
     loadData () {
       this.loadingData++
-      TableService.data(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, (this.options.page - 1), this.options.itemsPerPage, (this.versionISO || this.lastReload.toISOString()))
+      TableService.data(this.$route.params.database_id, this.$route.params.table_id, (this.options.page - 1), this.options.itemsPerPage, (this.versionISO || this.lastReload.toISOString()))
         .then((data) => {
           this.rows = data.result.map((row) => {
             for (const col in row) {
@@ -291,7 +291,7 @@ export default {
     },
     loadCount () {
       this.loadingData++
-      TableService.dataCount(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, (this.versionISO || this.lastReload.toISOString()))
+      TableService.dataCount(this.$route.params.database_id, this.$route.params.table_id, (this.versionISO || this.lastReload.toISOString()))
         .then((count) => {
           this.total = count
         })
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/import.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/import.vue
similarity index 89%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/import.vue
rename to dbrepo-ui/pages/database/_database_id/table/_table_id/import.vue
index d2caacbd0d4240577285a4f82f76e9db4e88e703..2a1a53d73c657c54bba05144aca290c4f8360b94 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/import.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/import.vue
@@ -2,7 +2,7 @@
   <div v-if="canInsertTableData">
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`">
+        <v-btn id="back-btn" class="mr-2" :to="`/database/${$route.params.database_id}/table`">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
@@ -144,10 +144,10 @@ export default {
       },
       fileModel: null,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         }
       ]
@@ -189,10 +189,10 @@ export default {
         .then((file) => {
           this.file = file
           this.tableImport.location = `/tmp/${this.file.filename}`
-          QueryService.importCsv(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id, this.tableImport)
+          QueryService.importCsv(this.$route.params.database_id, this.$route.params.table_id, this.tableImport)
             .then(() => {
               this.$toast.success('Successfully imported data')
-              this.$router.push(`/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`)
+              this.$router.push(`/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`)
             })
             .finally(() => {
               this.loading = false
@@ -207,7 +207,7 @@ export default {
     },
     loadTableMetadata () {
       this.loading = true
-      TableService.findOne(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id)
+      TableService.findOne(this.$route.params.database_id, this.$route.params.table_id)
         .then((table) => {
           this.table = table
         })
diff --git a/dbrepo-ui/pages/database/_database_id/table/_table_id/index.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..21e09b79c055c97599484c4f1ad02cc71f789480
--- /dev/null
+++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/index.vue
@@ -0,0 +1,10 @@
+<template>
+  <div />
+</template>
+<script>
+export default {
+  mounted () {
+    this.$router.push(`/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}/info`)
+  }
+}
+</script>
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/info.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue
similarity index 91%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/info.vue
rename to dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue
index 13fd4569163b0a6d08979ba84c2e660c654c80bd..4f57d6130a78d8b80572dfb6e501656a14b768f4 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/info.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue
@@ -93,7 +93,7 @@
   </div>
 </template>
 <script>
-import TableToolbar from '@/components/TableToolbar'
+import TableToolbar from '@/components/TableToolbar.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import BrokerService from '@/api/broker.service'
 import UserMapper from '@/api/user.mapper'
@@ -107,10 +107,10 @@ export default {
       selection: [],
       consumers: [],
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`, activeClass: '' },
-        { text: 'Tables', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' },
-        { text: `${this.$route.params.table_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}/info`, activeClass: '' },
+        { text: 'Tables', to: `/database/${this.$route.params.database_id}/table`, activeClass: '' },
+        { text: `${this.$route.params.table_id}`, to: `/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
       ],
       headers: [],
       dateColumns: []
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/schema.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/schema.vue
similarity index 88%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/schema.vue
rename to dbrepo-ui/pages/database/_database_id/table/_table_id/schema.vue
index 54d91815591affdff3feea672bc6a1d478725dbb..9c2551938da01952a6cb92648c50d46880c5ebcf 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/_table_id/schema.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/schema.vue
@@ -76,7 +76,7 @@
   </div>
 </template>
 <script>
-import TableToolbar from '@/components/TableToolbar'
+import TableToolbar from '@/components/TableToolbar.vue'
 import TableService from '@/api/table.service'
 
 export default {
@@ -90,10 +90,10 @@ export default {
       mode: null,
       dialogSemantic: false,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`, activeClass: '' },
-        { text: 'Tables', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' },
-        { text: `${this.$route.params.table_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}/info`, activeClass: '' },
+        { text: 'Tables', to: `/database/${this.$route.params.database_id}/table`, activeClass: '' },
+        { text: `${this.$route.params.table_id}`, to: `/database/${this.$route.params.database_id}/table/${this.$route.params.table_id}`, activeClass: '' }
       ],
       headers: [
         { value: 'internal_name', text: 'Column Name' },
@@ -207,11 +207,11 @@ export default {
       this.dialogSemantic = false
     },
     loadTable () {
-      if (!this.$route.params.container_id || !this.$route.params.database_id || !this.$route.params.table_id) {
+      if (!this.$route.params.database_id || !this.$route.params.table_id) {
         return
       }
       this.loading = true
-      TableService.findOne(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.table_id)
+      TableService.findOne(this.$route.params.database_id, this.$route.params.table_id)
         .then((table) => {
           this.$store.commit('SET_TABLE', table)
         })
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/create.vue b/dbrepo-ui/pages/database/_database_id/table/create.vue
similarity index 88%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/create.vue
rename to dbrepo-ui/pages/database/_database_id/table/create.vue
index 728b71f7da98533038eacc60818a209c104cbda4..9ae7e955cd2547f34ddc9c4d73a9990eb20d2cda 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/create.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/create.vue
@@ -2,7 +2,7 @@
   <div v-if="canCreateTable">
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`">
+        <v-btn id="back-btn" class="mr-2" :to="`/database/${$route.params.database_id}/table`">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
@@ -59,7 +59,7 @@
 </template>
 
 <script>
-import TableSchema from '@/components/TableSchema'
+import TableSchema from '@/components/TableSchema.vue'
 import { notEmpty } from '@/utils'
 import TableService from '@/api/table.service'
 
@@ -82,13 +82,13 @@ export default {
         columns: []
       },
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         },
-        { text: 'Tables', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' }
+        { text: 'Tables', to: `/database/${this.$route.params.database_id}/table`, activeClass: '' }
       ]
     }
   },
@@ -186,11 +186,11 @@ export default {
           checks: []
         }
       })
-      TableService.create(this.$route.params.container_id, this.$route.params.database_id, table)
+      TableService.create(this.$route.params.database_id, table)
         .then(async (table) => {
           this.$toast.success('Table created')
           await this.$store.dispatch('reloadDatabase')
-          await this.$router.push(`/container/${this.$route.params.container_id}/database/${this.databaseId}/table/${table.id}`)
+          await this.$router.push(`/database/${this.databaseId}/table/${table.id}`)
         })
     },
     schemaClose (event) {
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue b/dbrepo-ui/pages/database/_database_id/table/import.vue
similarity index 90%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue
rename to dbrepo-ui/pages/database/_database_id/table/import.vue
index d3358405f24c508851ee038966de1f6260329d9f..ce7e0951b4ab6690acad620501122343fc410785 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/import.vue
@@ -2,7 +2,7 @@
   <div v-if="canInsertTableData">
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`">
+        <v-btn id="back-btn" class="mr-2" :to="`/database/${$route.params.database_id}/table`">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
@@ -183,7 +183,7 @@
       </v-stepper-step>
       <v-stepper-content step="5">
         <div class="mt-2">
-          <v-btn class="mb-1" color="primary" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table/${newTableId}`">
+          <v-btn class="mb-1" color="primary" :to="`/database/${$route.params.database_id}/table/${newTableId}`">
             View Table
           </v-btn>
         </div>
@@ -194,11 +194,11 @@
 </template>
 <script>
 import { notEmpty, isNonNegativeInteger } from '@/utils'
-import TableSchema from '@/components/TableSchema'
-import ContainerService from '@/api/container.service'
+import TableSchema from '@/components/TableSchema.vue'
 import TableService from '@/api/table.service'
 import MiddlewareService from '@/api/middleware.service'
 import AnalyseService from '@/api/analyse.service'
+import DatabaseService from '@/api/database.service'
 
 export default {
   name: 'TableFromCSV',
@@ -228,13 +228,13 @@ export default {
         { key: 'Single \'', value: '\'' }
       ],
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         },
-        { text: 'Tables', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' }
+        { text: 'Tables', to: `/database/${this.$route.params.database_id}/table`, activeClass: '' }
       ],
       rules: {
         required: value => !!value || 'Required'
@@ -358,7 +358,7 @@ export default {
     },
     listTables () {
       this.loading = true
-      TableService.findAll(this.$route.params.container_id, this.$route.params.database_id)
+      TableService.findAll(this.$route.params.database_id)
         .then((tables) => {
           this.tableNames = tables.map(t => t.internal_name)
         })
@@ -375,18 +375,14 @@ export default {
       this.validStep4 = true
       this.createTable()
     },
-    loadDateFormats () {
+    async loadDateFormats () {
       this.loadingImage = true
-      ContainerService.findOne(this.$route.params.container_id)
-        .then((container) => {
-          ContainerService.findImage(container.image.id)
-            .then((image) => {
-              this.dateFormats = image.date_formats
-            })
-        })
-        .finally(() => {
-          this.loadingImage = true
-        })
+      try {
+        const database = await DatabaseService.findOne(this.$route.params.database_id)
+        this.dateFormats = database.container.image.date_formats
+      } finally {
+        this.localLoading = false
+      }
     },
     createTable () {
       /* make enum values to array */
@@ -441,10 +437,10 @@ export default {
           checks: []
         }
       })
-      TableService.create(this.$route.params.container_id, this.$route.params.database_id, table)
+      TableService.create(this.$route.params.database_id, table)
         .then((table) => {
           this.newTableId = table.id
-          TableService.importCsv(this.$route.params.container_id, this.$route.params.database_id, table.id, this.tableImport)
+          TableService.importCsv(this.$route.params.database_id, table.id, this.tableImport)
             .then(async () => {
               this.$toast.success('Successfully created table from import!')
               await this.$store.dispatch('reloadDatabase')
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/index.vue b/dbrepo-ui/pages/database/_database_id/table/index.vue
similarity index 61%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/table/index.vue
rename to dbrepo-ui/pages/database/_database_id/table/index.vue
index 04026449a9340b394bc3f7e37e2210b2e9db71da..eefef940365e7ab8793d9964716d968de8676633 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/index.vue
+++ b/dbrepo-ui/pages/database/_database_id/table/index.vue
@@ -8,8 +8,8 @@
   </div>
 </template>
 <script>
-import TableList from '@/components/TableList'
-import DBToolbar from '@/components/DBToolbar'
+import TableList from '@/components/TableList.vue'
+import DBToolbar from '@/components/DBToolbar.vue'
 
 export default {
   name: 'Tables',
@@ -21,8 +21,8 @@ export default {
     return {
       db: null,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}/table`, activeClass: '' }
       ]
     }
   },
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/_view_id/index.vue b/dbrepo-ui/pages/database/_database_id/view/_view_id/index.vue
similarity index 88%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/view/_view_id/index.vue
rename to dbrepo-ui/pages/database/_database_id/view/_view_id/index.vue
index 9d95d70e3df1c8fdf6bbdd1d11e97379f4cd8ae8..8cd7fbee4321f507e5216870a3b9023aef70b0cd 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/_view_id/index.vue
+++ b/dbrepo-ui/pages/database/_database_id/view/_view_id/index.vue
@@ -2,7 +2,7 @@
   <div>
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/view`">
+        <v-btn id="back-btn" class="mr-2" :to="`/database/${$route.params.database_id}/view`">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
@@ -111,10 +111,10 @@ export default {
   data () {
     return {
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}`, activeClass: '' },
-        { text: 'Views', to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/view`, activeClass: '' },
-        { text: `${this.$route.params.view_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/view/${this.$route.params.view_id}`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}`, activeClass: '' },
+        { text: 'Views', to: `/database/${this.$route.params.database_id}/view`, activeClass: '' },
+        { text: `${this.$route.params.view_id}`, to: `/database/${this.$route.params.database_id}/view/${this.$route.params.view_id}`, activeClass: '' }
       ],
       view: {
         id: null /* only loaded if user has access to view */
@@ -175,7 +175,7 @@ export default {
   methods: {
     loadView () {
       this.loadingView = true
-      DatabaseService.findView(this.$route.params.container_id, this.$route.params.database_id, this.$route.params.view_id)
+      DatabaseService.findView(this.$route.params.database_id, this.$route.params.view_id)
         .then((view) => {
           this.view = view
         })
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/create.vue b/dbrepo-ui/pages/database/_database_id/view/create.vue
similarity index 70%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/view/create.vue
rename to dbrepo-ui/pages/database/_database_id/view/create.vue
index 7c06ccead7615ab69747ccfed5d5c9def86514b0..18da418db83a36c58c0e8811470b77538c4840e8 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/create.vue
+++ b/dbrepo-ui/pages/database/_database_id/view/create.vue
@@ -10,15 +10,15 @@ export default {
   data () {
     return {
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
+        { text: 'Databases', to: '/database', activeClass: '' },
         {
           text: `${this.$route.params.database_id}`,
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/info`,
+          to: `/database/${this.$route.params.database_id}/info`,
           activeClass: ''
         },
         {
           text: 'Views',
-          to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/view`,
+          to: `/database/${this.$route.params.database_id}/view`,
           activeClass: ''
         }
       ]
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/index.vue b/dbrepo-ui/pages/database/_database_id/view/index.vue
similarity index 59%
rename from dbrepo-ui/pages/container/_container_id/database/_database_id/view/index.vue
rename to dbrepo-ui/pages/database/_database_id/view/index.vue
index 3001dc4adc2649aed8718cd56f2904eb51571a79..9c53dd3fe2c6b91f981ed209e67f0a76feb2f847 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/view/index.vue
+++ b/dbrepo-ui/pages/database/_database_id/view/index.vue
@@ -8,8 +8,8 @@
   </div>
 </template>
 <script>
-import DBToolbar from '@/components/DBToolbar'
-import ViewList from '@/components/ViewList'
+import DBToolbar from '@/components/DBToolbar.vue'
+import ViewList from '@/components/ViewList.vue'
 
 export default {
   name: 'Views',
@@ -21,8 +21,8 @@ export default {
     return {
       db: null,
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' },
-        { text: `${this.$route.params.database_id}`, to: `/container/${this.$route.params.container_id}/database/${this.$route.params.database_id}/table`, activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' },
+        { text: `${this.$route.params.database_id}`, to: `/database/${this.$route.params.database_id}/table`, activeClass: '' }
       ]
     }
   },
diff --git a/dbrepo-ui/pages/container/index.vue b/dbrepo-ui/pages/database/index.vue
similarity index 88%
rename from dbrepo-ui/pages/container/index.vue
rename to dbrepo-ui/pages/database/index.vue
index 1c1735c6818bdbe5addb6556e483ba36a9e9e9f2..b8287a1821831da3c2511f92d3a83124912171a9 100644
--- a/dbrepo-ui/pages/container/index.vue
+++ b/dbrepo-ui/pages/database/index.vue
@@ -23,8 +23,8 @@
 </template>
 <script>
 import { mdiDatabaseArrowRightOutline } from '@mdi/js'
-import CreateDB from '@/components/dialogs/CreateDB'
-import DatabaseList from '@/components/DatabaseList'
+import CreateDB from '@/components/dialogs/CreateDB.vue'
+import DatabaseList from '@/components/DatabaseList.vue'
 
 export default {
   components: {
@@ -41,7 +41,7 @@ export default {
         is_public: true
       },
       items: [
-        { text: 'Databases', to: '/container', activeClass: '' }
+        { text: 'Databases', to: '/database', activeClass: '' }
       ],
       loadingDatabases: false,
       error: false,
@@ -77,7 +77,7 @@ export default {
     closed (event) {
       this.createDbDialog = false
       if (event.success) {
-        this.$refs.databases.loadContainers()
+        this.$refs.databases.loadDatabases()
       }
     }
   }
diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue
index bbe24a3a338e1dd36ce6155b7b37a4c668ab3930..46d3e3626b0547a6f95fdd3e08707f81921848fb 100644
--- a/dbrepo-ui/pages/index.vue
+++ b/dbrepo-ui/pages/index.vue
@@ -28,7 +28,7 @@
         <v-btn
           class="ml-2 mb-2"
           color="primary"
-          to="/container">
+          to="/database">
           Get Started
         </v-btn>
       </v-card-actions>
diff --git a/dbrepo-ui/pages/login.vue b/dbrepo-ui/pages/login.vue
index 23944a38039347ecd81d7cb6834750c4785c6a7c..1da06f2f51cf96803ff8e5c498e054fd49eac708 100644
--- a/dbrepo-ui/pages/login.vue
+++ b/dbrepo-ui/pages/login.vue
@@ -83,7 +83,7 @@ export default {
   },
   mounted () {
     if (this.token) {
-      this.$router.push('/container')
+      this.$router.push('/database')
     }
   },
   methods: {
@@ -99,7 +99,7 @@ export default {
             .then(async (user) => {
               this.$store.commit('SET_USER', user)
               this.$vuetify.theme.dark = user.attributes.theme_dark
-              await this.$router.push('/container')
+              await this.$router.push('/database')
             })
         })
         .catch(() => {
diff --git a/dbrepo-ui/pages/search/index.vue b/dbrepo-ui/pages/search/index.vue
index b812900945a5d81897cddc251086bebdc311db9c..4ba9babe4872bd6bb56af7703831d14f8124b98b 100644
--- a/dbrepo-ui/pages/search/index.vue
+++ b/dbrepo-ui/pages/search/index.vue
@@ -179,16 +179,16 @@ export default {
     },
     link (item) {
       if (this.isDatabase(item)) {
-        return `/container/${item.id}/database/${item.id}`
+        return `/database/${item.id}`
       }
       if (this.isTable(item)) {
-        return `/container/${item.containerId}/database/${item.databaseId}/table/${item.id}`
+        return `/database/${item.databaseId}/table/${item.id}`
       }
       if (this.isView(item)) {
-        return `/container/${item.vdbid}/database/${item.vdbid}/view/${item.id}`
+        return `/database/${item.vdbid}/view/${item.id}`
       }
       if (this.isColumn(item)) {
-        return `/container/${item.cdbid}/database/${item.cdbid}/table/${item.tid}`
+        return `/database/${item.cdbid}/table/${item.tid}`
       }
       if (this.isIdentifier(item)) {
         return `/pid/${item.id}`
diff --git a/dbrepo-ui/store/index.js b/dbrepo-ui/store/index.js
index b1d9ebfa36c83b2c94b91b2466b054f9cfdc7c6e..cd3b41bdda5f2e77cabbfd109efe8787f28d04b5 100644
--- a/dbrepo-ui/store/index.js
+++ b/dbrepo-ui/store/index.js
@@ -74,19 +74,19 @@ const store = new Store({
         })
     },
     reloadAccess ({ state, commit }) {
-      DatabaseService.checkAccess(state.container.id, state.database.id)
+      DatabaseService.checkAccess(state.database.id)
         .then((access) => {
           commit('SET_ACCESS', access)
         })
     },
     reloadDatabase ({ state, commit }) {
-      DatabaseService.findOne(state.database.container.id, state.database.id)
+      DatabaseService.findOne(state.database.id)
         .then((database) => {
           commit('SET_DATABASE', database)
         })
     },
     reloadTable ({ state, commit }) {
-      TableService.findOne(state.database.container.id, state.database.id, state.table.id)
+      TableService.findOne(state.database.id, state.table.id)
         .then((table) => {
           commit('SET_TABLE', table)
         })