diff --git a/frontend-js/src/main/js/Admin.js b/frontend-js/src/main/js/Admin.js
new file mode 100644
index 0000000000000000000000000000000000000000..e0fc04712c39710da93c5c7e08c72afa666aec5a
--- /dev/null
+++ b/frontend-js/src/main/js/Admin.js
@@ -0,0 +1,178 @@
+"use strict";
+
+/* exported logger */
+
+var Promise = require("bluebird");
+
+var CustomMapOptions = require('./map/CustomMapOptions');
+var Header = require('./gui/Header');
+var ObjectWithListeners = require('./ObjectWithListeners');
+
+var CommentsAdminPanel = require('./gui/admin/CommentsAdminPanel');
+var ConfigurationAdminPanel = require('./gui/admin/ConfigurationAdminPanel');
+var MapsAdminPanel = require('./gui/admin/MapsAdminPanel');
+var ServicesAdminPanel = require('./gui/admin/ServicesAdminPanel');
+var UsersAdminPanel = require('./gui/admin/UsersAdminPanel');
+
+
+var logger = require('./logger');
+var Functions = require('./Functions');
+
+/**
+ * Default constructor.
+ * 
+ * @param options
+ *          CustomMapOptions object representing all parameters needed for map
+ *          creation
+ */
+function Admin(options) {
+  var self = this;
+  self._panels = [];
+  self._tabIdCount = 0;
+  if (!(options instanceof CustomMapOptions)) {
+    options = new CustomMapOptions(options);
+  }
+  self.setProject(options.getProject());
+  self.setElement(options.getElement());
+
+  self.setConfiguration(options.getConfiguration());
+  self._createGui();
+}
+
+Admin.prototype = Object.create(ObjectWithListeners.prototype);
+Admin.prototype.constructor = ObjectWithListeners;
+
+Admin.prototype._createGui = function() {
+  var self = this;
+  self.getElement().innerHTML = "";
+  var headerDiv = Functions.createElement({
+    type : "div"
+  });
+  new Header({
+    element : headerDiv,
+    customMap : null,
+    project : self.getProject(),
+  });
+  self.getElement().appendChild(headerDiv);
+
+  var panels = [ {
+    name : "COMMENTS",
+    panelClass : CommentsAdminPanel,
+  }, {
+    name : "MAPS",
+    panelClass : MapsAdminPanel,
+  }, {
+    name : "USERS",
+    panelClass : UsersAdminPanel,
+  }, {
+    name : "SERVICES",
+    panelClass : ServicesAdminPanel,
+  }, {
+    name : "CONFIGURATION",
+    panelClass : ConfigurationAdminPanel,
+  } ];
+
+  var tabDiv = Functions.createElement({
+    type : "div",
+    name : "tabView",
+    className : "tabbable boxed parentTabs"
+  });
+  self.getElement().appendChild(tabDiv);
+
+  var tabMenuDiv = Functions.createElement({
+    type : "ul",
+    className : "nav nav-tabs"
+  });
+  tabDiv.appendChild(tabMenuDiv);
+
+  var tabContentDiv = Functions.createElement({
+    type : "div",
+    className : "tab-content"
+  });
+  tabDiv.appendChild(tabContentDiv);
+
+  for (var i = 0; i < panels.length; i++) {
+    self.addTab(panels[i], tabMenuDiv, tabContentDiv);
+  }
+};
+
+Admin.prototype.addTab = function(params, navElement, contentElement) {
+  var self = this;
+
+  var name = params.name;
+
+  var tabId = "export_panel_tab_" + this._tabIdCount;
+  self._tabIdCount++;
+
+  var navClass = '';
+  var contentClass = 'tab-pane';
+  if (navElement.children.length === 0) {
+    navClass = "active";
+    contentClass = "tab-pane active";
+  }
+
+  var navLi = document.createElement("li");
+  navLi.className = navClass;
+
+  var navLink = document.createElement("a");
+  navLink.href = "#" + tabId;
+  if (name !== undefined) {
+    if (name.length > 12) {
+      name = name.substring(0, 10) + "...";
+    }
+    navLink.innerHTML = name;
+  }
+  navLink.onclick = function() {
+    $(this).tab('show');
+  };
+  navLi.appendChild(navLink);
+  if (name !== undefined) {
+    navLink.innerHTML = name;
+  }
+  navElement.appendChild(navLi);
+
+  var contentDiv = document.createElement("div");
+  contentDiv.style.height = "100%";
+  contentDiv.className = contentClass;
+  contentDiv.id = tabId;
+
+  contentElement.appendChild(contentDiv);
+
+  this._panels.push(new params.panelClass({
+    element : contentDiv,
+    project : self.getProject(),
+    configuration : self.getConfiguration(),
+  }));
+};
+
+Admin.prototype.setProject = function(project) {
+  this._project = project;
+};
+Admin.prototype.getProject = function() {
+  return this._project;
+};
+
+Admin.prototype.setElement = function(element) {
+  this._element = element;
+};
+Admin.prototype.getElement = function() {
+  return this._element;
+};
+
+Admin.prototype.init = function() {
+  var promises = [];
+  for (var i = 0; i < this._panels.length; i++) {
+    promises.push(this._panels[i].init());
+  }
+  return Promise.all(promises);
+};
+
+Admin.prototype.setConfiguration = function(configuration) {
+  this._configuration = configuration;
+};
+
+Admin.prototype.getConfiguration = function() {
+  return this._configuration;
+};
+
+module.exports = Admin;
diff --git a/frontend-js/src/main/js/gui/admin/CommentsAdminPanel.js b/frontend-js/src/main/js/gui/admin/CommentsAdminPanel.js
new file mode 100644
index 0000000000000000000000000000000000000000..722dfeaea27a53cadbe9d24c9bd8f84f81f47515
--- /dev/null
+++ b/frontend-js/src/main/js/gui/admin/CommentsAdminPanel.js
@@ -0,0 +1,22 @@
+"use strict";
+
+/* exported logger */
+
+var Panel = require('../Panel');
+
+var Promise = require("bluebird");
+
+function CommentsAdminPanel(params) {
+  params.scrollable = true;
+  Panel.call(this, params);
+
+}
+
+CommentsAdminPanel.prototype = Object.create(Panel.prototype);
+CommentsAdminPanel.prototype.constructor = CommentsAdminPanel;
+
+CommentsAdminPanel.prototype.init = function() {
+
+};
+
+module.exports = CommentsAdminPanel;
diff --git a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
new file mode 100644
index 0000000000000000000000000000000000000000..43f8ec6a08d919f4695f31e6209894ef56867bc9
--- /dev/null
+++ b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
@@ -0,0 +1,22 @@
+"use strict";
+
+/* exported logger */
+
+var Panel = require('../Panel');
+
+var Promise = require("bluebird");
+
+function ConfigurationAdminPanel(params) {
+  params.scrollable = true;
+  Panel.call(this, params);
+
+}
+
+ConfigurationAdminPanel.prototype = Object.create(Panel.prototype);
+ConfigurationAdminPanel.prototype.constructor = ConfigurationAdminPanel;
+
+ConfigurationAdminPanel.prototype.init = function() {
+
+};
+
+module.exports = ConfigurationAdminPanel;
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
new file mode 100644
index 0000000000000000000000000000000000000000..32afe0ce966c341775cef682c7c3a589846e8413
--- /dev/null
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -0,0 +1,22 @@
+"use strict";
+
+/* exported logger */
+
+var Panel = require('../Panel');
+
+var Promise = require("bluebird");
+
+function MapsAdminPanel(params) {
+  params.scrollable = true;
+  Panel.call(this, params);
+
+}
+
+MapsAdminPanel.prototype = Object.create(Panel.prototype);
+MapsAdminPanel.prototype.constructor = MapsAdminPanel;
+
+MapsAdminPanel.prototype.init = function() {
+
+};
+
+module.exports = MapsAdminPanel;
diff --git a/frontend-js/src/main/js/gui/admin/ServicesAdminPanel.js b/frontend-js/src/main/js/gui/admin/ServicesAdminPanel.js
new file mode 100644
index 0000000000000000000000000000000000000000..a13151a7223b4431fc443c87d91a472017cd6e1e
--- /dev/null
+++ b/frontend-js/src/main/js/gui/admin/ServicesAdminPanel.js
@@ -0,0 +1,22 @@
+"use strict";
+
+/* exported logger */
+
+var Panel = require('../Panel');
+
+var Promise = require("bluebird");
+
+function ServicesAdminPanel(params) {
+  params.scrollable = true;
+  Panel.call(this, params);
+
+}
+
+ServicesAdminPanel.prototype = Object.create(Panel.prototype);
+ServicesAdminPanel.prototype.constructor = ServicesAdminPanel;
+
+ServicesAdminPanel.prototype.init = function() {
+
+};
+
+module.exports = ServicesAdminPanel;
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
new file mode 100644
index 0000000000000000000000000000000000000000..16277062e1cad1783b2fbc4a815143d7fbd5cc76
--- /dev/null
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -0,0 +1,22 @@
+"use strict";
+
+/* exported logger */
+
+var Panel = require('../Panel');
+
+var Promise = require("bluebird");
+
+function UsersAdminPanel(params) {
+  params.scrollable = true;
+  Panel.call(this, params);
+
+}
+
+UsersAdminPanel.prototype = Object.create(Panel.prototype);
+UsersAdminPanel.prototype.constructor = UsersAdminPanel;
+
+UsersAdminPanel.prototype.init = function() {
+
+};
+
+module.exports = UsersAdminPanel;
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 933be3de49a330565fa38e3298f98c7345015ebe..b05b7afac513ea1a7074f59db4b9469bd269332e 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -5,6 +5,7 @@ var functions = require('./Functions');
 var IdentifiedElement = require('./map/data/IdentifiedElement');
 
 var AbstractDbOverlay = require('./map/overlay/AbstractDbOverlay');
+var Admin = require('./Admin');
 var DbOverlayCollection = require('./map/overlay/DbOverlayCollection');
 var ConfigurationType = require('./ConfigurationType');
 var CustomMap = require('./map/CustomMap');
@@ -586,9 +587,36 @@ function createExport(params) {
   });
 }
 
+function createAdmin(params) {
+  params = modifyParamsForTouchInterface(params);
+  if (!(params instanceof CustomMapOptions)) {
+    params = new CustomMapOptions(params);
+  }
+  initGlobals(params);
+  params.getElement().style.display = "table";
+  params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
+      + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
+
+  var result;
+  // make sure that we are logged in
+  return ServerConnector.getToken().then(function() {
+    return ServerConnector.getConfiguration();
+  }).then(function(configuration) {
+    params.setConfiguration(configuration);
+    return getProject(params);
+  }).then(function(project) {
+    params.setProject(project);
+    result = new Admin(params);
+    return result.init();
+  }).then(function() {
+    return result;
+  });
+}
+
 var minerva = {
   create : create,
   createExport : createExport,
+  createAdmin: createAdmin,
   ServerConnector : OriginalServerConnector,
   GuiConnector : OriginalGuiConnector,
   DualListbox : require('dual-listbox').DualListbox,
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 9425790ab9708720eff2d41940ace5093fffc956..e456807931a2a974c718051a3457ae4e85b2b7a2 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -496,4 +496,16 @@ describe('minerva global', function() {
     });
   });
 
+  it('create Admin', function() {
+    var options = null;
+    return ServerConnectorMock.getProject().then(function(project) {
+      options = helper.createCustomMapOptions(project);
+
+      return minerva.createAdmin(options);
+    }).then(function(result) {
+      assert.ok(result);
+      assert.equal(logger.getWarnings().length, 0);
+    });
+  });
+
 });
diff --git a/web/src/main/webapp/WEB-INF/security-context.xml b/web/src/main/webapp/WEB-INF/security-context.xml
index c1378aa39af79cc4c024ae85f1c9fbb4a63df063..e152ccd84870449b60082b2beddd3014c3e0c54a 100644
--- a/web/src/main/webapp/WEB-INF/security-context.xml
+++ b/web/src/main/webapp/WEB-INF/security-context.xml
@@ -23,9 +23,7 @@
 		
 	 	<security:intercept-url pattern="/login**" access="permitAll"/>
 	 	<security:intercept-url pattern="/index**" access="permitAll"/>
-	 	<security:intercept-url pattern="/miriam**" access="permitAll"/>
 	 	<security:intercept-url pattern="/export**" access="permitAll"/>
-	 	<security:intercept-url pattern="/expire**" access="permitAll"/>
 	 	<security:intercept-url pattern="/galaxy**" access="permitAll"/>
 	 	<security:intercept-url pattern="/map**" access="permitAll"/>
 		<security:intercept-url pattern="/map/**" access="permitAll"/>
diff --git a/web/src/main/webapp/admin-new.xhtml b/web/src/main/webapp/admin-new.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7805363de34c76de86e07b44d9ff59179d4da8
--- /dev/null
+++ b/web/src/main/webapp/admin-new.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:p="http://primefaces.org/ui">
+
+<f:view contentType="text/html">
+<h:head>
+	<script src="https://maps.google.com/maps/api/js?libraries=drawing&amp;v=3.26" type="text/javascript"/>
+
+	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"/>
+	<script src="https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.min.js" type="text/javascript"/>
+
+  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
+  <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
+
+
+	<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"/>	
+	<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"/>
+	
+	<link rel="shortcut icon" href="./resources/images/favicon.png" type="image/png" />
+
+	<h:outputScript library="js" name="minerva.js"  />
+	
+	<script type="text/javascript">
+//<![CDATA[
+
+function initMap(){
+	var element = document.getElementById('minervaAppDiv');
+  return minerva.createAdmin({
+		element : element, 
+	}).then(function(result){
+		customMap = result;
+		document.title = result.getProject().getName();
+	}).catch(function(rejectReason){
+		minerva.GuiConnector.alert(rejectReason);
+	});
+}
+
+//]]>
+		</script>
+</h:head>
+<h:body onload="initMap();" >
+<h:outputStylesheet library="css" name="style.css"/>
+<h:outputStylesheet library="css" name="minerva.css"	/>
+<h:outputStylesheet library="css" name="pileup.css"/>
+<h:outputStylesheet library="css" name="bootstrap.min.css"/>
+
+	<h:outputScript library="primefaces" name="jquery/jquery.js" target="head"	/>
+	<div id="minervaAppDiv" style="height: 100%;width: 100%;margin: 0;"/>
+
+</h:body>
+</f:view>
+</html>