diff --git a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
index b7a15daccb3e06c7a9450a1644b990a74ab7d3f4..eafd327e11b931aceaed5097b791c392bf2d20d3 100644
--- a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
@@ -1,5 +1,7 @@
 "use strict";
 
+var $ = require('jquery');
+
 /* exported logger */
 /* exported Promise*/
 
@@ -85,6 +87,29 @@ AbstractAdminPanel.prototype.bindUserGuiPreference = function (params) {
 
 };
 
+/**
+ *
+ * @param {Object} param
+ * @param {HTMLElement} param.element
+ * @param {string} param.preferenceName
+ */
+AbstractAdminPanel.prototype.bindDataTablePageLengthToUserPreference = function (param) {
+  var jQueryObject = $(param.element);
+  return this.bindUserGuiPreference({
+    jQueryObject: jQueryObject,
+    event: 'length.dt',
+    preferenceName: param.preferenceName,
+    defaultValue: '10',
+    getter: function () {
+      return jQueryObject.DataTable().page.len() + '';
+    },
+    setter: function (value) {
+      return jQueryObject.DataTable().page.len(value).draw();
+    }
+  })
+};
+
+
 /**
  *
  * @returns {Promise}
diff --git a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
index 58752e135caa6bd6472aacef9c4bf4799425889c..8bd3770e96aba57610057a280837638f860a3f6c 100644
--- a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
@@ -141,17 +141,9 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type)
 
   self.getGuiUtils().addTab(self, {name: type, content: configurationDiv});
 
-  return Promise.all([self.bindUserGuiPreference({
-    jQueryObject: $(configurationTable),
-    event: 'length.dt',
-    preferenceName: 'admin-configuration-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(configurationTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(configurationTable).DataTable().page.len(value).draw();
-    }
+  return Promise.all([self.bindDataTablePageLengthToUserPreference({
+    element: configurationTable,
+    preferenceName: 'admin-configuration-datatable-length'
   }), self.bindUserGuiPreference({
     jQueryObject: $(configurationTable),
     event: 'order.dt',
diff --git a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
index e9c725637036de01df906a0b67b61992af86d43f..f2f57eb863473005c4be73bf13f9ae3c1a001bb8 100644
--- a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
@@ -90,17 +90,9 @@ GenomeAdminPanel.prototype._createGui = function () {
     }],
     order: [[1, "asc"], [4, "asc"]]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(genomesTable),
-    event: 'length.dt',
-    preferenceName: 'admin-genome-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(genomesTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(genomesTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: genomesTable,
+    preferenceName: 'admin-genome-datatable-length'
   });
 
   $(genomesTable).on("click", "[name='removeGenome']", function () {
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index 89dd2ebe50e22d55ddd35059ce1fe5a4b0311366..80e60bbc8a4890ccdffd8037ce6337f80ed55fb0 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -142,22 +142,14 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
     }, {
       title: 'Remove'
     }],
-    order: [[ 0, "asc" ]],
+    order: [[0, "asc"]],
     columnDefs: [
       {"orderable": false, "targets": [7, 8]}
     ]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(projectsTable),
-    event: 'length.dt',
-    preferenceName: 'admin-projects-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(projectsTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(projectsTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: projectsTable,
+    preferenceName: 'admin-projects-datatable-length'
   });
 
   $(projectsTable).on("click", "[name='removeProject']", function () {
@@ -191,7 +183,7 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
  */
 MapsAdminPanel.prototype.init = function () {
   var self = this;
-  return AbstractAdminPanel.prototype.init.call(self).then(function() {
+  return AbstractAdminPanel.prototype.init.call(self).then(function () {
     return self.getServerConnector().getProjects();
   }).then(function (projects) {
     return self.setProjects(projects);
diff --git a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
index 82e6b0dacbbadf75a20174a3c0911fa07677b2f1..57dbefbbd66b259a96a4b508dde220936dcd3af2 100644
--- a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
@@ -69,17 +69,9 @@ PluginAdminPanel.prototype._createGui = function () {
     }],
     order: [[1, "asc"]]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(pluginsTable),
-    event: 'length.dt',
-    preferenceName: 'admin-plugins-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(pluginsTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(pluginsTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: pluginsTable,
+    preferenceName: 'admin-plugins-datatable-length'
   });
 
   $(pluginsTable).on("click", "[name='removePlugin']", function () {
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
index 34bc6cec1f9cec1559788f77be3c54c746343119..4d82ff4b552e613db865ca9439fa7b9911199bf8 100644
--- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -137,17 +137,9 @@ UsersAdminPanel.prototype._createUsersTableRow = function () {
     ]
   });
 
-  self.bindUserGuiPreference({
-    jQueryObject: $(usersTable),
-    event: 'length.dt',
-    preferenceName: 'admin-users-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(usersTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(usersTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: usersTable,
+    preferenceName: 'admin-users-datatable-length'
   });
 
   $(usersTable).on("click", "[name='removeUser']", function () {