diff --git a/frontend-js/src/main/js/Export.js b/frontend-js/src/main/js/Export.js
index 1c15300edfe892e8aa5db2ea2a45a822aecc45a9..bd24cffcb9dd4c0f36b6cf618303ce2d64c65afa 100644
--- a/frontend-js/src/main/js/Export.js
+++ b/frontend-js/src/main/js/Export.js
@@ -4,27 +4,29 @@
 
 var Promise = require("bluebird");
 
+
+var AbstractGuiElement = require('./gui/AbstractGuiElement');
 var CustomMapOptions = require('./map/CustomMapOptions');
 var ElementExportPanel = require('./gui/export/ElementExportPanel');
 var GraphicsExportPanel = require('./gui/export/GraphicsExportPanel');
 var NetworkExportPanel = require('./gui/export/NetworkExportPanel');
 var Header = require('./gui/Header');
-var ObjectWithListeners = require('./ObjectWithListeners');
 
+// noinspection JSUnusedLocalSymbols
 var logger = require('./logger');
 var Functions = require('./Functions');
+var GuiUtils = require('./gui/leftPanel/GuiUtils');
 
 /**
  * Default constructor.
- * 
- * @param options
+ *
+ * @param {CustomMapOptions} options
  *          CustomMapOptions object representing all parameters needed for map
  *          creation
+ * @constructor
  */
 function Export(options) {
   var self = this;
-  self._panels = [];
-  self._tabIdCount = 0;
   if (!(options instanceof CustomMapOptions)) {
     options = new CustomMapOptions(options);
   }
@@ -32,124 +34,53 @@ function Export(options) {
   self.setElement(options.getElement());
 
   self.setConfiguration(options.getConfiguration());
+  self.setServerConnector(options.getServerConnector());
   self._createGui();
 }
 
-Export.prototype = Object.create(ObjectWithListeners.prototype);
-Export.prototype.constructor = ObjectWithListeners;
+Export.prototype = Object.create(AbstractGuiElement.prototype);
+Export.prototype.constructor = AbstractGuiElement;
 
-Export.prototype._createGui = function() {
+/**
+ *
+ * @private
+ */
+Export.prototype._createGui = function () {
   var self = this;
   self.getElement().innerHTML = "";
   var headerDiv = Functions.createElement({
-    type : "div"
+    type: "div"
   });
   new Header({
-    element : headerDiv,
-    customMap : null,
-    project : self.getProject()
+    element: headerDiv,
+    customMap: null,
+    project: self.getProject()
   });
   self.getElement().appendChild(headerDiv);
 
-  var panels = [ {
-    name : "ELEMENTS",
-    panelClass : ElementExportPanel
+  var panels = [{
+    name: "ELEMENTS",
+    panelClass: ElementExportPanel
   }, {
-    name : "NETWORK",
-    panelClass : NetworkExportPanel
+    name: "NETWORK",
+    panelClass: NetworkExportPanel
   }, {
-    name : "GRAPHICS",
-    panelClass : GraphicsExportPanel
-  } ];
+    name: "GRAPHICS",
+    panelClass: GraphicsExportPanel
+  }];
 
-  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);
+  self.getGuiUtils().initTabContent(self);
 
   for (var i = 0; i < panels.length; i++) {
-    self.addTab(panels[i], tabMenuDiv, tabContentDiv);
-  }
-};
-
-Export.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;
+    self.getGuiUtils().addTab(self, panels[i]);
   }
-  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()
-  }));
-};
-
-Export.prototype.setProject = function(project) {
-  this._project = project;
-};
-Export.prototype.getProject = function() {
-  return this._project;
-};
-
-Export.prototype.setElement = function(element) {
-  this._element = element;
-};
-Export.prototype.getElement = function() {
-  return this._element;
 };
 
-Export.prototype.init = function() {
+/**
+ *
+ * @returns {Promise}
+ */
+Export.prototype.init = function () {
   var promises = [];
   for (var i = 0; i < this._panels.length; i++) {
     promises.push(this._panels[i].init());
@@ -157,12 +88,15 @@ Export.prototype.init = function() {
   return Promise.all(promises);
 };
 
-Export.prototype.setConfiguration = function(configuration) {
-  this._configuration = configuration;
-};
-
-Export.prototype.getConfiguration = function() {
-  return this._configuration;
+/**
+ * @returns {GuiUtils}
+ */
+Export.prototype.getGuiUtils = function () {
+  var self = this;
+  if (self._guiUtils === undefined) {
+    self._guiUtils = new GuiUtils(self.getConfiguration());
+  }
+  return self._guiUtils;
 };
 
 module.exports = Export;
diff --git a/frontend-js/src/test/js/Export-test.js b/frontend-js/src/test/js/Export-test.js
index 2ba754019637bf75fdd5ef2c5abdb18e8b3b0d30..bb1a4b025ad8901dde239a50a443f5a190d681a3 100644
--- a/frontend-js/src/test/js/Export-test.js
+++ b/frontend-js/src/test/js/Export-test.js
@@ -23,7 +23,8 @@ describe('Export', function () {
         exportObject = new Export({
           element: testDiv,
           project: project,
-          configuration: configuration
+          configuration: configuration,
+          serverConnector: ServerConnector
         });
         return exportObject.init();
       }).then(function () {