diff --git a/contrib/smarty/plugins/function.iconPath.php b/contrib/smarty/plugins/function.iconPath.php
index 31ae49ef26fd0c785823f05b1bdb49ae8961be28..1d6e4db015f2e2e23851b9b7117cda45b4b4e1e4 100644
--- a/contrib/smarty/plugins/function.iconPath.php
+++ b/contrib/smarty/plugins/function.iconPath.php
@@ -5,14 +5,11 @@ function smarty_function_iconPath($params, &$smarty)
   $config = session::global_get('config');
 
   /* Set theme */
-  $theme = "default";
+  $theme = IconTheme::$default_theme;
   if (isset ($config)) {
-    $theme = $config->get_cfg_value("theme", "default");
-    if (!isset(IconTheme::$themes[$theme])) {
-      $theme = 'default';
-    }
+    $theme = $config->get_cfg_value("theme");
   }
 
-  return IconTheme::$themes[$theme]->FindIcon($params['context'], $params['icon'], $params['size']);
+  return IconTheme::findThemeIcon($theme, $params['context'], $params['icon'], $params['size']);
 }
 ?>
diff --git a/html/class_passwordRecovery.inc b/html/class_passwordRecovery.inc
index a83770aa9ac06a0169f3005ac0d714798d6d4aa3..ada3ee65a5af4403ead4f751fde3afdc78043497 100644
--- a/html/class_passwordRecovery.inc
+++ b/html/class_passwordRecovery.inc
@@ -307,7 +307,7 @@ class passwordRecovery {
     /* Check for old files in compile directory */
     clean_smarty_compile_dir($smarty->compile_dir);
 
-    $smarty->assign('password_img', get_template_path('images/password.png'));
+    $smarty->assign('password_img', 'geticon.php?context=status&icon=dialog-password&size=48');
     $smarty->assign('date', gmdate("D, d M Y H:i:s"));
     $smarty->assign('params', "");
     $smarty->assign('message', "");
diff --git a/html/geticon.php b/html/geticon.php
new file mode 100644
index 0000000000000000000000000000000000000000..4ab377021b9ceadd7a2e9ebbc5ff45ef2f5031dd
--- /dev/null
+++ b/html/geticon.php
@@ -0,0 +1,39 @@
+<?php
+/*
+  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
+  Copyright (C) 2013  FusionDirectory
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+/* Basic setup, remove eventually registered sessions */
+@require_once("../include/php_setup.inc");
+@require_once("functions.inc");
+@require_once("variables.inc");
+
+session_cache_limiter("private");
+session::start();
+session::global_set('errorsAlreadyPosted', array());
+
+$theme = '';
+if (session::global_is_set('config')) {
+  $config = session::global_get('config');
+  $theme  = $config->get_cfg_value('theme');
+}
+$src    = IconTheme::findThemeIcon($theme, $_GET['context'], $_GET['icon'], $_GET['size']);
+$size   = getimagesize($src);
+header("Content-Type: ".$size['mime']);
+echo readfile($src);
+?>
diff --git a/html/images/info_small.png b/html/images/info_small.png
deleted file mode 100644
index 0d826bbf3ce4cfa5fa6bbbd1a926b6897af14c35..0000000000000000000000000000000000000000
Binary files a/html/images/info_small.png and /dev/null differ
diff --git a/html/images/lists/up.png b/html/images/lists/up.png
deleted file mode 100644
index f258c112f9ce54bfc898fa5e4a48b19a64f93a29..0000000000000000000000000000000000000000
Binary files a/html/images/lists/up.png and /dev/null differ
diff --git a/html/images/login-head.png b/html/images/login-head.png
deleted file mode 100644
index 45e3c35289c964c4ff770145f16da92f2518fc6d..0000000000000000000000000000000000000000
Binary files a/html/images/login-head.png and /dev/null differ
diff --git a/html/images/login.png b/html/images/login.png
deleted file mode 100644
index 52aed85eae886380d5545431f36613a205e4658b..0000000000000000000000000000000000000000
Binary files a/html/images/login.png and /dev/null differ
diff --git a/html/index.php b/html/index.php
index 6444932c936d88c0cb32fc1729d803e0058f2377..d57fb5617be59c323ac29f0151f825391591d9c0 100644
--- a/html/index.php
+++ b/html/index.php
@@ -43,9 +43,9 @@ function displayLogin()
   }
   $smarty->assign ('date', gmdate("D, d M Y H:i:s"));
   $smarty->assign ('username', $username);
-  $smarty->assign ('personal_img', get_template_path('images/login-head.png'));
-  $smarty->assign ('password_img', get_template_path('images/password.png'));
-  $smarty->assign ('directory_img', get_template_path('images/ldapserver.png'));
+  $smarty->assign ('personal_img', "geticon.php?context=places&icon=user-identity&size=48");
+  $smarty->assign ('password_img', "geticon.php?context=status&icon=dialog-password&size=48");
+  $smarty->assign ('directory_img', "geticon.php?context=places&icon=network-server&size=48");
   $smarty->append ('css_files',  get_template_path('login.css'));
 
   /* Some error to display? */
diff --git a/html/main.php b/html/main.php
index 31eef91df3da5742e449349214a64ae83f48f788..65cbfc268e76ef6686864a44919f7d4c347285b8 100644
--- a/html/main.php
+++ b/html/main.php
@@ -62,7 +62,6 @@ if ($_SERVER['REMOTE_ADDR'] != $ui->ip) {
   exit;
 }
 $config = session::global_get('config');
-IconTheme::loadThemes('themes');
 
 /* If SSL is forced, just forward to the SSL enabled site */
 if (($config->get_cfg_value("forcessl") == "TRUE") && ($ssl != '')) {
@@ -299,13 +298,6 @@ if ($ui->ignore_acl_for_current_user()) {
 } else {
   $smarty->assign ("username", $ui->username);
 }
-$smarty->assign ("go_base", get_template_path('images/dtree.png'));
-$smarty->assign ("go_home", get_template_path('images/gohome.png'));
-$smarty->assign ("go_out", get_template_path('images/logout.png'));
-$smarty->assign ("go_top", get_template_path('images/go_top.png'));
-$smarty->assign ("go_corner", get_template_path('images/go_corner.png'));
-$smarty->assign ("go_left", get_template_path('images/go_left.png'));
-
 $smarty->assign ("menu", $plist->menu);
 $smarty->assign ("plug", "$plug");
 
diff --git a/html/themes/default/icons/16/actions/document-export.png b/html/themes/default/icons/16/actions/document-export.png
new file mode 120000
index 0000000000000000000000000000000000000000..9675ffeeb95c71648d35a6d712a576364d01e20d
--- /dev/null
+++ b/html/themes/default/icons/16/actions/document-export.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/16/actions/export.png
\ No newline at end of file
diff --git a/html/images/lists/new.png b/html/themes/default/icons/16/actions/document-new.png
similarity index 100%
rename from html/images/lists/new.png
rename to html/themes/default/icons/16/actions/document-new.png
diff --git a/html/themes/default/icons/16/actions/document-save.png b/html/themes/default/icons/16/actions/document-save.png
new file mode 120000
index 0000000000000000000000000000000000000000..f814fc19cd4d72431535f3b2adc8144be4ed1387
--- /dev/null
+++ b/html/themes/default/icons/16/actions/document-save.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/16/actions/save.png
\ No newline at end of file
diff --git a/html/images/lists/copy.png b/html/themes/default/icons/16/actions/edit-copy.png
similarity index 100%
rename from html/images/lists/copy.png
rename to html/themes/default/icons/16/actions/edit-copy.png
diff --git a/html/images/lists/cut.png b/html/themes/default/icons/16/actions/edit-cut.png
similarity index 100%
rename from html/images/lists/cut.png
rename to html/themes/default/icons/16/actions/edit-cut.png
diff --git a/html/images/lists/trash.png b/html/themes/default/icons/16/actions/edit-delete.png
similarity index 100%
rename from html/images/lists/trash.png
rename to html/themes/default/icons/16/actions/edit-delete.png
diff --git a/html/images/lists/paste.png b/html/themes/default/icons/16/actions/edit-paste.png
similarity index 100%
rename from html/images/lists/paste.png
rename to html/themes/default/icons/16/actions/edit-paste.png
diff --git a/html/images/lists/export.png b/html/themes/default/icons/16/actions/export.png
similarity index 100%
rename from html/images/lists/export.png
rename to html/themes/default/icons/16/actions/export.png
diff --git a/html/images/lists/root.png b/html/themes/default/icons/16/actions/go-first.png
similarity index 100%
rename from html/images/lists/root.png
rename to html/themes/default/icons/16/actions/go-first.png
diff --git a/html/images/lists/home.png b/html/themes/default/icons/16/actions/go-home.png
similarity index 100%
rename from html/images/lists/home.png
rename to html/themes/default/icons/16/actions/go-home.png
diff --git a/html/images/lists/back.png b/html/themes/default/icons/16/actions/go-previous.png
similarity index 100%
rename from html/images/lists/back.png
rename to html/themes/default/icons/16/actions/go-previous.png
diff --git a/html/themes/default/icons/16/actions/go-up.png b/html/themes/default/icons/16/actions/go-up.png
new file mode 120000
index 0000000000000000000000000000000000000000..0613cb497418e5af27b951938f9549339b8c6fe2
--- /dev/null
+++ b/html/themes/default/icons/16/actions/go-up.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/16/actions/go-previous.png
\ No newline at end of file
diff --git a/html/images/save.png b/html/themes/default/icons/16/actions/save.png
similarity index 100%
rename from html/images/save.png
rename to html/themes/default/icons/16/actions/save.png
diff --git a/html/images/lists/search.png b/html/themes/default/icons/16/actions/system-search.png
similarity index 100%
rename from html/images/lists/search.png
rename to html/themes/default/icons/16/actions/system-search.png
diff --git a/html/images/lists/reload.png b/html/themes/default/icons/16/actions/view-refresh.png
similarity index 100%
rename from html/images/lists/reload.png
rename to html/themes/default/icons/16/actions/view-refresh.png
diff --git a/html/images/lists/sort-down.png b/html/themes/default/icons/16/actions/view-sort-ascending.png
similarity index 100%
rename from html/images/lists/sort-down.png
rename to html/themes/default/icons/16/actions/view-sort-ascending.png
diff --git a/html/images/lists/sort-up.png b/html/themes/default/icons/16/actions/view-sort-descending.png
similarity index 100%
rename from html/images/lists/sort-up.png
rename to html/themes/default/icons/16/actions/view-sort-descending.png
diff --git a/html/themes/default/icons/16/apps/internet-mail.png b/html/themes/default/icons/16/apps/internet-mail.png
new file mode 100644
index 0000000000000000000000000000000000000000..92d602c58b1a5da07ccf891badd63550bfbbc142
Binary files /dev/null and b/html/themes/default/icons/16/apps/internet-mail.png differ
diff --git a/html/themes/default/icons/16/apps/office-calendar.gif b/html/themes/default/icons/16/apps/office-calendar.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b4d6bfe298b40a2dfb093fb169de4398035c9a9
Binary files /dev/null and b/html/themes/default/icons/16/apps/office-calendar.gif differ
diff --git a/html/themes/default/icons/16/mimetypes/application-pdf.png b/html/themes/default/icons/16/mimetypes/application-pdf.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d115de1836685828efe484bed32a3668ff11572
Binary files /dev/null and b/html/themes/default/icons/16/mimetypes/application-pdf.png differ
diff --git a/html/themes/default/icons/16/mimetypes/text-csv.png b/html/themes/default/icons/16/mimetypes/text-csv.png
new file mode 100644
index 0000000000000000000000000000000000000000..52ac9fa3f8b2fe4c07f428b973f11b562fe5fb9a
Binary files /dev/null and b/html/themes/default/icons/16/mimetypes/text-csv.png differ
diff --git a/html/images/small_error.png b/html/themes/default/icons/16/status/dialog-error.png
similarity index 100%
rename from html/images/small_error.png
rename to html/themes/default/icons/16/status/dialog-error.png
diff --git a/html/themes/default/icons/16/status/dialog-information.png b/html/themes/default/icons/16/status/dialog-information.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d72794dd0f14442b856ab4aca6b23edcb8c5d4f
Binary files /dev/null and b/html/themes/default/icons/16/status/dialog-information.png differ
diff --git a/html/images/small_warning.png b/html/themes/default/icons/16/status/dialog-warning.png
similarity index 100%
rename from html/images/small_warning.png
rename to html/themes/default/icons/16/status/dialog-warning.png
diff --git a/html/images/lists/locked.png b/html/themes/default/icons/16/status/locked.png
similarity index 100%
rename from html/images/lists/locked.png
rename to html/themes/default/icons/16/status/locked.png
diff --git a/html/themes/default/icons/16/status/object-locked.png b/html/themes/default/icons/16/status/object-locked.png
new file mode 120000
index 0000000000000000000000000000000000000000..f399906a8bada2f4990bce8367f956b1f82d4cdb
--- /dev/null
+++ b/html/themes/default/icons/16/status/object-locked.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/16/status/locked.png
\ No newline at end of file
diff --git a/html/themes/default/icons/16/status/object-unlocked.png b/html/themes/default/icons/16/status/object-unlocked.png
new file mode 120000
index 0000000000000000000000000000000000000000..b66b59b44ed823d585c33c60835d22fa4ab44ec9
--- /dev/null
+++ b/html/themes/default/icons/16/status/object-unlocked.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/16/status/unlocked.png
\ No newline at end of file
diff --git a/html/themes/default/icons/16/status/task-complete.png b/html/themes/default/icons/16/status/task-complete.png
new file mode 100644
index 0000000000000000000000000000000000000000..543710fb7b9b2a3ea9a115031cec06748ba82d8e
Binary files /dev/null and b/html/themes/default/icons/16/status/task-complete.png differ
diff --git a/html/images/lists/unlocked.png b/html/themes/default/icons/16/status/unlocked.png
similarity index 100%
rename from html/images/lists/unlocked.png
rename to html/themes/default/icons/16/status/unlocked.png
diff --git a/html/images/logout.png b/html/themes/default/icons/22/actions/application-exit.png
similarity index 100%
rename from html/images/logout.png
rename to html/themes/default/icons/22/actions/application-exit.png
diff --git a/html/themes/default/images/home.png b/html/themes/default/icons/22/actions/go-home.png
similarity index 100%
rename from html/themes/default/images/home.png
rename to html/themes/default/icons/22/actions/go-home.png
diff --git a/html/images/small-error.png b/html/themes/default/icons/22/status/dialog-error.png
similarity index 100%
rename from html/images/small-error.png
rename to html/themes/default/icons/22/status/dialog-error.png
diff --git a/html/images/info.png b/html/themes/default/icons/22/status/dialog-information.png
similarity index 100%
rename from html/images/info.png
rename to html/themes/default/icons/22/status/dialog-information.png
diff --git a/html/themes/default/icons/22/status/dialog-question.png b/html/themes/default/icons/22/status/dialog-question.png
new file mode 120000
index 0000000000000000000000000000000000000000..fb4658cb6c9f6172d4abe5454a5b14ce01a4ba49
--- /dev/null
+++ b/html/themes/default/icons/22/status/dialog-question.png
@@ -0,0 +1 @@
+/home/mcmic/dev/opensides/fusiondirectory/html/themes/default/icons/22/status/dialog-information.png
\ No newline at end of file
diff --git a/html/images/error.png b/html/themes/default/icons/32/status/dialog-error.png
similarity index 100%
rename from html/images/error.png
rename to html/themes/default/icons/32/status/dialog-error.png
diff --git a/html/images/warning.png b/html/themes/default/icons/32/status/dialog-warning.png
similarity index 100%
rename from html/images/warning.png
rename to html/themes/default/icons/32/status/dialog-warning.png
diff --git a/html/themes/default/icons/32/status/object-locked.png b/html/themes/default/icons/32/status/object-locked.png
new file mode 100644
index 0000000000000000000000000000000000000000..d08a33cf702bcacb5930d4900697cd5974fab31f
Binary files /dev/null and b/html/themes/default/icons/32/status/object-locked.png differ
diff --git a/html/plugins/groups/images/icon.png b/html/themes/default/icons/48/apps/system-users.png
similarity index 100%
rename from html/plugins/groups/images/icon.png
rename to html/themes/default/icons/48/apps/system-users.png
diff --git a/html/images/ldapserver.png b/html/themes/default/icons/48/places/network-server.png
similarity index 100%
rename from html/images/ldapserver.png
rename to html/themes/default/icons/48/places/network-server.png
diff --git a/html/plugins/users/images/icon.png b/html/themes/default/icons/48/places/user-identity.png
similarity index 100%
rename from html/plugins/users/images/icon.png
rename to html/themes/default/icons/48/places/user-identity.png
diff --git a/html/images/password.png b/html/themes/default/icons/48/status/dialog-password.png
similarity index 100%
rename from html/images/password.png
rename to html/themes/default/icons/48/status/dialog-password.png
diff --git a/html/themes/default/images/fd_logo.png b/html/themes/default/icons/scalable/apps/fusiondirectory.png
similarity index 100%
rename from html/themes/default/images/fd_logo.png
rename to html/themes/default/icons/scalable/apps/fusiondirectory.png
diff --git a/html/themes/default/images/accountexpired.png b/html/themes/default/images/accountexpired.png
deleted file mode 100644
index 3763a38813a9daf6b38e655e3242ee463ab0ea12..0000000000000000000000000000000000000000
Binary files a/html/themes/default/images/accountexpired.png and /dev/null differ
diff --git a/html/themes/default/images/sign_out.png b/html/themes/default/images/sign_out.png
deleted file mode 100644
index 73b27d9fd698719f5b3788953815b886eac142a9..0000000000000000000000000000000000000000
Binary files a/html/themes/default/images/sign_out.png and /dev/null differ
diff --git a/html/themes/default/index.theme b/html/themes/default/index.theme
new file mode 100644
index 0000000000000000000000000000000000000000..40c0dfd97275d6885fd25b61f63a969b0ae03dc5
--- /dev/null
+++ b/html/themes/default/index.theme
@@ -0,0 +1,120 @@
+[Icon Theme]
+Name=FusionDirectory
+Comment=FusionDirectory default icon theme
+
+Directories=icons/16/actions,icons/22/actions,icons/32/actions,icons/48/actions,icons/scalable/actions,icons/16/apps,icons/22/apps,icons/32/apps,icons/48/apps,icons/scalable/apps,icons/16/status,icons/22/status,icons/32/status,icons/48/status,icons/scalable/status,icons/16/mimetypes,icons/22/mimetypes,icons/32/mimetypes,icons/48/mimetypes,icons/scalable/mimetypes,icons/16/places,icons/22/places,icons/32/places,icons/48/places,icons/scalable/places
+
+[icons/16/actions]
+Size=16
+Context=Actions
+
+[icons/22/actions]
+Size=22
+Context=Actions
+
+[icons/32/actions]
+Size=32
+Context=Actions
+
+[icons/48/actions]
+Size=48
+Context=Actions
+
+[icons/scalable/actions]
+MinSize=1
+Size=128
+MaxSize=256
+Context=Actions
+Type=Scalable
+
+[icons/16/apps]
+Size=16
+Context=Applications
+
+[icons/22/apps]
+Size=22
+Context=Applications
+
+[icons/32/apps]
+Size=32
+Context=Applications
+
+[icons/48/apps]
+Size=48
+Context=Applications
+
+[icons/scalable/apps]
+MinSize=1
+Size=128
+MaxSize=256
+Context=Applications
+Type=Scalable
+
+[icons/16/status]
+Size=16
+Context=Status
+
+[icons/22/status]
+Size=22
+Context=Status
+
+[icons/32/status]
+Size=32
+Context=Status
+
+[icons/48/status]
+Size=48
+Context=Status
+
+[icons/scalable/status]
+MinSize=1
+Size=128
+MaxSize=256
+Context=Status
+Type=Scalable
+
+[icons/16/mimetypes]
+Size=16
+Context=MimeTypes
+
+[icons/22/mimetypes]
+Size=22
+Context=MimeTypes
+
+[icons/32/mimetypes]
+Size=32
+Context=MimeTypes
+
+[icons/48/mimetypes]
+Size=48
+Context=MimeTypes
+
+[icons/scalable/mimetypes]
+MinSize=1
+Size=128
+MaxSize=256
+Context=MimeTypes
+Type=Scalable
+
+[icons/16/places]
+Size=16
+Context=Places
+
+[icons/22/places]
+Size=22
+Context=Places
+
+[icons/32/places]
+Size=32
+Context=Places
+
+[icons/48/places]
+Size=48
+Context=Places
+
+[icons/scalable/places]
+MinSize=1
+Size=128
+MaxSize=256
+Context=Places
+Type=Scalable
diff --git a/html/themes/default/style.css b/html/themes/default/style.css
index b133365b1523e5c4ac176b0cd29a674c865bb272..83d83955e08235de92c407293ebdd2290400d37a 100644
--- a/html/themes/default/style.css
+++ b/html/themes/default/style.css
@@ -223,29 +223,6 @@ text-align:right;
 
 /********************** Template migration *********************/
 
-/* Account Expired screen */
-td.gosaAccountExpiredBack {
-width:550px;
-height:300px;
-background:url(images/accountexpired.png);
-vertical-align:top;
-}
-
-div.gosaAccountExpiredBack {
-padding-top:40px;
-margin-left:90px;
-margin-right:50px;
-padding-bottom:0;
-vertical-align:top;
-}
-
-p.gosaAccountExpiredHeader {
-text-align:left;
-font-size:14px;
-font-weight:bold;
-margin-bottom:15px;
-}
-
 table.framework {
 height:auto;
 width:100%;
diff --git a/ihtml/themes/default/accountexpired.tpl b/ihtml/themes/default/accountexpired.tpl
deleted file mode 100644
index 1fb9653508e834d6eae9de703cb245ff6205342a..0000000000000000000000000000000000000000
--- a/ihtml/themes/default/accountexpired.tpl
+++ /dev/null
@@ -1,73 +0,0 @@
-<body style="background-color: #8B858B;background-image:none;">
-{* FusionDirectory login - smarty template *}
-{$php_errors}
-{$errors}
-
-<!-- Spacer for some browsers -->
-<div class='gosaLoginSpacer'></div>
-
-<table class='gosaLoginMask' style="text-align:right;" align='center'>
- <tr>
-  <td class='gosaAccountExpiredBack' style="width:550px;">
-   <div class='gosaAccountExpiredBack'>
-
-    <p class='gosaAccountExpiredHeader'>
-    {t}Your password has expired. Please choose a new one!{/t}
-    </p>
-
-    <!-- Formular data, containing a table to center fields -->
-    <form action='index.php' method='post' name='mainform' onSubmit='js_check(this);return true;'>
-     <table style='vertical-align:middle; text-align:left;' cellspacing='7' align='center'>
-      <tr>
-        <td>
-          <p> {t}Old password{/t}</p>
-        </td>
-        <td>
-    <input type="password" name="oldpassword" maxlength="25" value=""
-     title="{t}Old password{/t}" onFocus="nextfield= 'newpassword';">
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <p> {t}New password{/t}</p>
-        </td>
-        <td>
-    <input type="password" name="newpassword" maxlength="25" value=""
-     title="{t}New password{/t}" onFocus="nextfield= 'verifypassword';">
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <p> {t}Verify password{/t}</p>
-        </td>
-        <td>
-    <input type="password" name="verifypassword" maxlength="25" value=""
-     title="{t}Verify password{/t}" onFocus="nextfield= 'changepassword';">
-       </td>
-      </tr>
-      <tr>
-       <td colspan="2" style="text-align:center;">
-       <br />
-    <input type="submit" name="changepassword" value="{t}Change password{/t}"
-       title="{t}Click here to change your password{/t}">
-       </td>
-      </tr>
-     </table>
-    </form>
-
-   </div>
-  </td>
- </tr>
-</table>
-
-<!-- Place cursor in username field -->
-<script type="text/javascript">
-  <!-- // First input field on page
-  nextfield= "{$nextfield}";
-  focus_field({$nextfield});
-  -->
-</script>
-
-<!-- Spacer for some browsers -->
-<div class="gosaLoginSpacer"></div>
-</body>
diff --git a/ihtml/themes/default/framework.tpl b/ihtml/themes/default/framework.tpl
index b7ec4713fc418b85db2a7663346670ac36d22008..4f20d66fc3a131929d32bf00f029efdbca4e7e7a 100644
--- a/ihtml/themes/default/framework.tpl
+++ b/ihtml/themes/default/framework.tpl
@@ -5,13 +5,13 @@
   <form action="main.php{$plug}" name="mainform" id="mainform" method="post" enctype="multipart/form-data">
     <div class="setup_header">
       <div id="header_left">
-        <img id="fd_logo" class="optional" src="{filePath file="images/fd_logo.png"}" alt="FusionDirectory"/>
+        <img id="fd_logo" class="optional" src="geticon.php?context=applications&icon=fusiondirectory&size=48" alt="FusionDirectory"/>
         <a class="maintitlebar" href="main.php?reset=1">
-          <img src="{filePath file="images/home.png"}" alt="Main"/>&nbsp;{t}Main{/t}
+          <img src="geticon.php?context=actions&icon=go-home&size=22" alt="Main"/>&nbsp;{t}Main{/t}
         </a>
         &nbsp;
         <a class="maintitlebar logout" href="logout.php?request">
-          <img src="{filePath file="images/sign_out.png"}" alt="Sign out"/>&nbsp;{t}Sign out{/t}
+          <img src="geticon.php?context=actions&icon=application-exit&size=22" alt="Sign out"/>&nbsp;{t}Sign out{/t}
         </a>
         <a class="plugtop">
           <img src="{$headline_image}" alt="{t}{$headline}{/t}"/>{t}{$headline}{/t}
diff --git a/ihtml/themes/default/islocked.tpl b/ihtml/themes/default/islocked.tpl
index 5bd4d148c75756908f5c8198a399520dc9aafffd..bf3e83fbba4786c1ce7f2c237d50504b5df34567 100644
--- a/ihtml/themes/default/islocked.tpl
+++ b/ihtml/themes/default/islocked.tpl
@@ -1,5 +1,5 @@
 <div style="font-size:20px;">
-  <img alt="" src="images/encrypted.png" style="vertical-align:top;">&nbsp;{t}Locking conflict detected{/t}
+  <img alt="" src="geticon.php?context=status&icon=object-locked&size=32" style="vertical-align:top;"/>&nbsp;{t}Locking conflict detected{/t}
 </div>
 
 <p>
@@ -18,6 +18,6 @@
   &nbsp;
   <input type="submit" name="cancel_lock" value="{t}Cancel{/t}">
 </p>
-      
+
 <input type="hidden" name="dn" value="{$dn}">
 
diff --git a/ihtml/themes/default/msg_dialog.tpl b/ihtml/themes/default/msg_dialog.tpl
index fe0344b85470ded94964e68064dbb2c25bea7e3c..1a4eceb083444362ba2dd6b84eb547ba3b294eaa 100644
--- a/ihtml/themes/default/msg_dialog.tpl
+++ b/ihtml/themes/default/msg_dialog.tpl
@@ -28,11 +28,13 @@
     <div id="e_layerTitle{$i_ID}" class="msgtitle">
       <h2>
       {if $i_Type == $smarty.const.ERROR_DIALOG}
-        <img src="images/error.png" class="center" alt="{t}Error{/t}"/>
+        <img src="geticon.php?context=status&icon=dialog-error&size=32" class="center" alt="{t}Error{/t}"/>
       {elseif $i_Type == $smarty.const.WARNING_DIALOG}
-        <img src="images/warning.png" class="center"  alt="{t}Warning{/t}"/>
-      {elseif $i_Type == $smarty.const.INFO_DIALOG || $i_Type == $smarty.const.CONFIRM_DIALOG}
-        <img src="images/info.png" class="center" alt="{t}Information{/t}"/>
+        <img src="geticon.php?context=status&icon=dialog-warning&size=32" class="center"  alt="{t}Warning{/t}"/>
+      {elseif $i_Type == $smarty.const.INFO_DIALOG}
+        <img src="geticon.php?context=status&icon=dialog-information&size=32" class="center" alt="{t}Information{/t}"/>
+      {elseif $i_Type == $smarty.const.CONFIRM_DIALOG}
+        <img src="geticon.php?context=status&icon=dialog-question&size=32" class="center" alt="{t}Question{/t}"/>
       {/if}
         {$s_Title}
       </h2>
diff --git a/ihtml/themes/default/password.tpl b/ihtml/themes/default/password.tpl
index 27ba1144d7478a33a1431f213ea3bde23dc282eb..90a41157c3098186c02fa00807aec5c97f14d92d 100644
--- a/ihtml/themes/default/password.tpl
+++ b/ihtml/themes/default/password.tpl
@@ -23,7 +23,7 @@
 
 {if $changed}
 <div class='success'">
-<img class="center" src="images/true.png" alt="{t}Success{/t}" title="{t}Success{/t}">&nbsp;<b>{t}Your password has been changed successfully.{/t}</b>
+<img class="center" src="geticon.php?context=status&icon=task-complete&size=16" alt="{t}Success{/t}" title="{t}Success{/t}">&nbsp;<b>{t}Your password has been changed successfully.{/t}</b>
 </div>
 {else}
 <form action="password.php{$params}" method="post" name="mainform" onSubmit="js_check(this);return true;">
diff --git a/ihtml/themes/default/recovery.tpl b/ihtml/themes/default/recovery.tpl
index db2bf5edcce8cbaed7f196e7d766879ea988a7d8..22daffabdb6bc43fbb363d2d2de28caad8dbb052 100644
--- a/ihtml/themes/default/recovery.tpl
+++ b/ihtml/themes/default/recovery.tpl
@@ -17,7 +17,7 @@
   {$msg_dialogs}
   <div id="window_titlebar">
     <p>
-      <img class="center" src="images/password.png" alt="{t}Password{/t}" title="{t}Password{/t}"/>
+      <img class="center" src="geticon.php?context=status&icon=dialog-password&size=48" alt="{t}Password{/t}" title="{t}Password{/t}"/>
       {t}Lost password{/t}
     </p>
   </div>
@@ -111,7 +111,7 @@
     <div style="clear:both"></div>
 {elseif $changed}
     <div class="success">
-      <img class="center" src="images/true.png" alt="{t}Success{/t}" title="{t}Success{/t}">&nbsp;<b>{t}Your password has been changed successfully.{/t}</b><br/>
+      <img class="center" src="geticon.php?context=status&icon=task-complete&size=16" alt="{t}Success{/t}" title="{t}Success{/t}">&nbsp;<b>{t}Your password has been changed successfully.{/t}</b><br/>
       <br/><a href="./">Return to login screen</a>
     </div>
 {else}
diff --git a/ihtml/themes/default/remove.tpl b/ihtml/themes/default/remove.tpl
index df96d5ad9886da8e0da7c100c617f9752f67dd2f..a73f16b55fce9b0a2ce39b0891829bf2acbc6de6 100644
--- a/ihtml/themes/default/remove.tpl
+++ b/ihtml/themes/default/remove.tpl
@@ -1,5 +1,5 @@
 <div style="font-size:18px;">
-  <img alt="" src="images/warning.png"/>&nbsp;{t}Warning{/t}
+  <img alt="" src="geticon.php?context=status&icon=dialog-warning&size=32"/>&nbsp;{t}Warning{/t}
 </div>
 <p>
  {$intro}
diff --git a/ihtml/themes/default/setup_header.tpl b/ihtml/themes/default/setup_header.tpl
index 2f4c6f42dc852fe4556e3dbfe433ece958261621..f313e45441fde0119338e0606efba662b795f28b 100644
--- a/ihtml/themes/default/setup_header.tpl
+++ b/ihtml/themes/default/setup_header.tpl
@@ -1,6 +1,6 @@
 {$php_errors}
 <div class='setup_header'>
-  <div style="float:left;"><img src='{filePath file="images/fd_logo.png"}' class='center' alt='FusionDirectory' /></div>
+  <div style="float:left;"><img src='geticon.php?context=applications&icon=fusiondirectory&size=48' class='center' alt='FusionDirectory' /></div>
   <div style="padding-top:8px;text-align:right;height:38px;color:#000000;font-size:20px">{$version}</div>
 </div>
 
diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc
index f59d0e935e097b7bcedf7abc97df7e8a6fadfd77..b5a2d52cc407e247e5264a06d6639c917e7099a8 100644
--- a/include/class_CopyPasteHandler.inc
+++ b/include/class_CopyPasteHandler.inc
@@ -358,10 +358,8 @@ class CopyPasteHandler
   {
     $Copy_Paste = "&nbsp;<img class='center' src='images/lists/seperator.png' alt='' height='16' width='1'>&nbsp;";
     if ($this->entries_queued()) {
-      $img = "images/lists/paste.png";
-
       $Copy_Paste .= "<input type='image' name='editPaste' class='center'
-        src='".$img."' alt='"._("Paste")."'>&nbsp;";
+        src='geticon.php?context=actions&icon=edit-paste&size=16' alt='"._("Paste")."'>&nbsp;";
     } else {
       $Copy_Paste .= "<img class='center' src='images/lists/paste-grey.png' alt=\""._("Cannot paste")."\">&nbsp;";
     }
diff --git a/include/class_IconTheme.inc b/include/class_IconTheme.inc
index 5aaa40cf843ac5806f44b885a5f2e3031ceb1788..d0fce4a74ce4180fc1703d102d752f902bd81b69 100644
--- a/include/class_IconTheme.inc
+++ b/include/class_IconTheme.inc
@@ -60,10 +60,10 @@ class IconTheme
   private $path;
   private $parent;
 
-  function __construct($folder, $default_parent = 'default')
+  function __construct($folder, $default_parent)
   {
     $this->path = $folder;
-    $datas  = parse_ini_file($folder.'/index.theme', TRUE, INI_SCANNER_RAW);
+    $datas  = @parse_ini_file($folder.'/index.theme', TRUE, INI_SCANNER_RAW);
     if ($datas === FALSE) {
       throw new Exception('Error while parsing theme file');
     }
@@ -93,10 +93,9 @@ class IconTheme
     }
 
     if ($this->parent !== NULL) {
-      if (isset(self::$themes[$this->parent])) {
-        $parent = self::$themes[$this->parent];
-      } else {
-        $parent = self::$themes['default'];
+      $parent = $this->findTheme($this->parent);
+      if ($parent === NULL) {
+        $parent = $this->findTheme(self::$default_theme);
       }
       return $parent->FindIconHelper($context, $icon, $size);
     }
@@ -136,19 +135,43 @@ class IconTheme
     return NULL;
   }
 
-  static public $themes;
+  static public $default_theme  = 'default';
+
+  /* We store themes in the session. To do otherwise, override these methods. */
+  static public $session_var    = 'IconThemes';
   static public function loadThemes($path)
   {
+    $themes = array();
     if ($dir = opendir("$path")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (file_exists("$path/$file/index.theme") && !preg_match("/^\./", $file)) {
           try {
-            self::$themes[$file] = new IconTheme("$path/$file");
+            if ($file == self::$default_theme) {
+              $themes[$file] = new IconTheme("$path/$file",  NULL);
+            } else {
+              $themes[$file] = new IconTheme("$path/$file", self::$default_theme);
+            }
           } catch (Exception $e) {
           }
         }
       }
     }
+    $_SESSION[self::$session_var] = $themes;
+  }
+  static public function findThemeIcon($theme, $context, $icon, $size)
+  {
+    if (isset($_SESSION[self::$session_var][$theme])) {
+      return $_SESSION[self::$session_var][$theme]->FindIcon($context, $icon, $size);
+    }
+    return $_SESSION[self::$session_var][self::$default_theme]->FindIcon($context, $icon, $size);
+  }
+  public function findTheme($theme)
+  {
+    if (isset($_SESSION[self::$session_var][$theme])) {
+      $ret = &$_SESSION[self::$session_var][$theme];
+      return $ret;
+    }
+    return NULL;
   }
 }
 
diff --git a/include/class_SnapShotDialog.inc b/include/class_SnapShotDialog.inc
index bcb494c3c856d6a88c1d838fcc57bc21d912548a..288e52722631325c1e46c8df575aa125b88f5cb6 100644
--- a/include/class_SnapShotDialog.inc
+++ b/include/class_SnapShotDialog.inc
@@ -189,7 +189,7 @@ class SnapShotDialog extends plugin
       foreach ($this->last_list as $key => $entry) {
         $actions = "<input type='image' src='images/lists/restore.png' name='RestoreSnapshot_$key'
           class='center' title='"._("Restore snapshot")."'>&nbsp;";
-        $actions .= "<input type='image' src='images/lists/trash.png' name='RemoveSnapshot_$key'
+        $actions .= "<input type='image' src='geticon.php?context=actions&icon=edit-delete&size=16' name='RemoveSnapshot_$key'
           class='center' title='"._("Remove snapshot")."'>&nbsp;";
 
         $time_stamp     = date(_("Y-m-d, H:i:s"), preg_replace("/\-.*$/", "", $entry['gosaSnapshotTimestamp'][0]));
diff --git a/include/class_config.inc b/include/class_config.inc
index ca455a5203665c6342012509c65b512d87e8a624..419e2e9406fffdf1c42555a24de9eee2d996cc70 100644
--- a/include/class_config.inc
+++ b/include/class_config.inc
@@ -443,6 +443,8 @@ class config  {
       $debugLevel |= $this->data['MAIN']['DEBUGLEVEL'];
     }
     session::global_set('DEBUGLEVEL', $debugLevel);
+
+    IconTheme::loadThemes('themes');
   }
 
 
diff --git a/include/class_listing.inc b/include/class_listing.inc
index 3a153d6c3ddfdb45c67745c108d2a1d8fc52c3af..e0dc378bca1028243e8662dd515f2ad1519162c7 100644
--- a/include/class_listing.inc
+++ b/include/class_listing.inc
@@ -303,7 +303,7 @@ class listing {
             isset($config['sortType'])) {
           $this->sortAttribute  = $config['sortAttribute'];
           $this->sortType       = $config['sortType'];
-          $sorter = "&nbsp;<img title='".($this->sortDirection[$index]?_("Up"):_("Down"))."' src='images/lists/sort-".($this->sortDirection[$index]?"up":"down").".png' alt='".($this->sortDirection[$index]?_('Sort up'):_('Sort down'))."'>";
+          $sorter = "&nbsp;<img title='".($this->sortDirection[$index]?_("Up"):_("Down"))."' src='geticon.php?context=actions&size=16&icon=view-sort-".($this->sortDirection[$index]?"descending":"ascending")."' alt='".($this->sortDirection[$index]?_('Sort up'):_('Sort down'))."'>";
         }
         $sortable = (isset($config['sortAttribute']));
 
@@ -1141,7 +1141,7 @@ class listing {
 
     /* Draw root button */
     if ($enableRoot) {
-      $result["ROOT"] = "<input class='center' type='image' src='images/lists/root.png' ".
+      $result["ROOT"] = "<input class='center' type='image' src='geticon.php?context=actions&icon=go-first&size=16' ".
                        "title='"._("Go to root department")."' name='ROOT' alt='"._("Root")."'>";
     } else {
       $result["ROOT"] = "<img src='images/lists/root_grey.png' class='center' alt='"._("Root")."'>";
@@ -1149,7 +1149,7 @@ class listing {
 
     /* Draw back button */
     if ($enableBack) {
-      $result["BACK"] = "<input class='center' type='image' src='images/lists/back.png' ".
+      $result["BACK"] = "<input class='center' type='image' src='geticon.php?context=actions&icon=go-up&size=16' ".
                        "title='"._("Go up one department")."' alt='"._("Up")."' name='BACK'>";
     } else {
       $result["BACK"] = "<img src='images/lists/back_grey.png' class='center' alt='"._("Up")."'>";
@@ -1157,14 +1157,14 @@ class listing {
 
     /* Draw home button */
     if ($enableHome) {
-      $result["HOME"] = "<input class='center' type='image' src='images/lists/home.png' ".
-                       "title='"._("Go to users department")."' alt='"._("Home")."' name='HOME'>";
+      $result["HOME"] = "<input class='center' type='image' src='geticon.php?context=actions&icon=go-home&size=16' ".
+                       "title='"._("Go to user's department")."' alt='"._("Home")."' name='HOME'>";
     } else {
       $result["HOME"] = "<img src='images/lists/home_grey.png' class='center' alt='"._("Home")."'>";
     }
 
     /* Draw reload button, this button is enabled everytime */
-    $result["RELOAD"] = "<input class='center optional' type='image' src='images/lists/reload.png' ".
+    $result["RELOAD"] = "<input class='center optional' type='image' src='geticon.php?context=actions&icon=view-refresh&size=16' ".
                        "title='"._("Reload list")."' name='REFRESH' alt='"._("Submit")."'>";
 
     return $result;
@@ -1280,7 +1280,7 @@ class listing {
     $actions  = &$this->xmlData['actionmenu']['action'];
     $result   = "<input type='hidden' name='act' id='actionmenu' value=''><div style='display:none'><input type='submit' name='exec_act' id='exec_act' value=''></div>".
              "<ul class='level1' id='root'><li><a href='#'>"._("Actions")."&nbsp;<img ".
-             "class='center optional' src='images/lists/sort-down.png' alt='down arrow'/></a>";
+             "class='center optional' src='geticon.php?context=actions&icon=view-sort-ascending&size=16' alt='down arrow'/></a>";
 
     // Build ul/li list
     $result .= $this->recurseActions($actions);
@@ -1574,13 +1574,13 @@ class listing {
     if ($read) {
       // Copy entry
       if ($copy) {
-        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"copy\";document.getElementById(\"exec_act\").click();'><img src='images/lists/copy.png' alt='copy' class='center'>&nbsp;"._("Copy")."</a></li>";
+        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"copy\";document.getElementById(\"exec_act\").click();'><img src='geticon.php?context=actions&icon=edit-copy&size=16' alt='copy' class='center'>&nbsp;"._("Copy")."</a></li>";
         $separator = "";
       }
 
       // Cut entry
       if ($cut) {
-        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"cut\";document.getElementById(\"exec_act\").click();'><img src='images/lists/cut.png' alt='cut' class='center'>&nbsp;"._("Cut")."</a></li>";
+        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"cut\";document.getElementById(\"exec_act\").click();'><img src='geticon.php?context=actions&icon=edit-cut&size=16' alt='cut' class='center'>&nbsp;"._("Cut")."</a></li>";
         $separator = "";
       }
     }
@@ -1588,7 +1588,7 @@ class listing {
     // Draw entries that allow pasting entries
     if ($paste) {
       if ($this->copyPasteHandler->entries_queued()) {
-        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"paste\";document.getElementById(\"exec_act\").click();'><img src='images/lists/paste.png' alt='paste' class='center'>&nbsp;"._("Paste")."</a></li>";
+        $result .= "<li$separator><a href='#' onClick='document.getElementById(\"actionmenu\").value= \"paste\";document.getElementById(\"exec_act\").click();'><img src='geticon.php?context=actions&icon=edit-paste&size=16' alt='paste' class='center'>&nbsp;"._("Paste")."</a></li>";
       } else {
         $result .= "<li$separator><a href='#'><img src='images/lists/paste-grey.png' alt='paste' class='center'>&nbsp;"._("Paste")."</a></li>";
       }
@@ -1600,6 +1600,7 @@ class listing {
 
   function renderCopyPasteActions($row, $dn, $category, $class, $copy = TRUE, $cut = TRUE)
   {
+    global $config;
     // We can only provide information if we've got a copypaste handler
     // instance
     if (!(isset($this->copyPasteHandler) && is_object($this->copyPasteHandler))) {
@@ -1613,8 +1614,10 @@ class listing {
     // Render cut entries
     if ($cut) {
       if ($ui->is_cutable($dn, $category, $class)) {
-        $result .= "<input class='center' type='image'
-          src='images/lists/cut.png' alt='"._("Cut")."' name='listing_cut_$row' title='"._("Cut this entry")."' style='padding:1px'>";
+        $result .= '<input class="center" type="image"'.
+                    ' src="geticon.php?context=actions&icon=edit-cut&size=16"'.
+                    ' alt="'._('Cut').'" name="listing_cut_'.$row.'" title="'._('Cut this entry').'"'.
+                    ' style="padding:1px">';
       } else {
         $result .= "<img src='images/empty.png' alt=' ' class='center optional' style='padding:1px'>";
       }
@@ -1623,8 +1626,10 @@ class listing {
     // Render copy entries
     if ($copy) {
       if ($ui->is_copyable($dn, $category, $class)) {
-        $result .= "<input class='center' type='image'
-          src='images/lists/copy.png' alt='"._("Copy")."' name='listing_copy_$row' title='"._("Copy this entry")."' style='padding:1px'>";
+        $result .= '<input class="center" type="image"'.
+                    ' src="geticon.php?context=actions&icon=edit-copy&size=16"'.
+                    ' alt="'._('Copy').'" name="listing_copy_'.$row.'" title="'._('Copy this entry').'"'.
+                    ' style="padding:1px">';
       } else {
         $result .= "<img src='images/empty.png' alt=' ' class='center optional' style='padding:1px'>";
       }
@@ -1672,7 +1677,7 @@ class listing {
     $result = "";
 
     // Draw entries
-    $result .= "<li$separator><a href='#'><img class='center' src='images/lists/export.png' alt='export'>&nbsp;"._("Export list")."&nbsp;<img src='images/forward-arrow.png' alt='arrow'></a><ul class='level3'>";
+    $result .= "<li$separator><a href='#'><img class='center' src='geticon.php?context=actions&icon=document-export&size=16' alt='export'>&nbsp;"._("Export list")."&nbsp;<img src='images/forward-arrow.png' alt='arrow'></a><ul class='level3'>";
 
     // Export CVS as build in exporter
     foreach ($this->exporter as $action => $exporter) {
diff --git a/include/class_management.inc b/include/class_management.inc
index ac8a3cf95ec7235f804c8d03a60fb3c6677f0b3b..e0b5d0b4fc0ab4453f65f92ac6d7d1966e331d9e 100644
--- a/include/class_management.inc
+++ b/include/class_management.inc
@@ -258,7 +258,7 @@ class management
 
     if (get_object_info() != "") {
       $display = print_header(get_template_path($plIcon), _($plDescription),
-          "<img alt=\"\" class=\"center\" src=\"".get_template_path('images/lists/locked.png')."\">".
+          '<img alt="" class="center" src="geticon.php?context=status&icon=object-locked&size=16"/>'.
           LDAP::fix(get_object_info()));
     } else {
       $display = print_header(get_template_path($plIcon), _($plDescription));
diff --git a/include/class_msg_dialog.inc b/include/class_msg_dialog.inc
index 92ed301ad7efc570fc45017ee912ce52b59bd088..91f1fd97a835c1da51f473084bd24c5b28a7020d 100644
--- a/include/class_msg_dialog.inc
+++ b/include/class_msg_dialog.inc
@@ -161,7 +161,7 @@ class msg_dialog
       $display .=
         "<table style='width:100%; border:2px solid red;'>
         <tr><td style='vertical-align:top;padding:10px'>
-        <img src='images/error.png' alt='{t}Error{/t}'>
+        <img src='geticon.php?context=status&icon=dialog-error&size=32' alt='{t}Error{/t}'/>
         </td><td style='width:100%'>
         <b>".$this->s_Title."</b><br>
         ".$this->s_Message."<br><br>
diff --git a/include/exporter/class_cvsExporter.inc b/include/exporter/class_cvsExporter.inc
index c5f9e291608acf16f0683bb57524a0e99388b71a..85f4731d765e55d61f1cde907dc5355ec058c2d9 100644
--- a/include/exporter/class_cvsExporter.inc
+++ b/include/exporter/class_cvsExporter.inc
@@ -90,7 +90,7 @@ class csvExporter
    */
   static function getInfo()
   {
-    return array("exportCVS" => array( "label" => _("CSV"), "image" => "images/lists/csv.png", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ));
+    return array("exportCVS" => array( "label" => _("CSV"), "image" => "geticon.php?context=mimetypes&icon=text-csv&size=16", "class" => "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" ));
   }
 
 }
diff --git a/include/exporter/class_pdfExporter.inc b/include/exporter/class_pdfExporter.inc
index 86de74a02fdd7448c8cc84121d5789fa88c45d26..df3b529d84d96b0b19243f49e922c06364d762e6 100644
--- a/include/exporter/class_pdfExporter.inc
+++ b/include/exporter/class_pdfExporter.inc
@@ -193,7 +193,7 @@ class pdfExporter
     // Check if class defined
     $classes = get_declared_classes();
     if (in_array('FPDF', $classes)) {
-      return array("exportPDF" => array( "label" => _("PDF"), "image" => "images/lists/pdf.png", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ));
+      return array("exportPDF" => array( "label" => _("PDF"), "image" => "geticon.php?context=mimetypes&icon=application-pdf&size=16", "class" => "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" ));
     } else {
       return NULL;
     }
diff --git a/include/functions.inc b/include/functions.inc
index bfa289580222fc4d05b03cd283462d2e4335f4d5..c17796a6c5ed35aa8b836c55d590868b20bc99ee 100644
--- a/include/functions.inc
+++ b/include/functions.inc
@@ -223,7 +223,7 @@ function DEBUG($level, $line, $function, $file, $data, $info = "")
   if (session::global_get('DEBUGLEVEL') & $level) {
     if ($first) {
       echo '<div id="debug_handling" class="notice">'.
-            '<img src="images/info_small.png" alt="info icon" style="vertical-align:middle;margin-right:.2em;"/>'.
+            '<img src="geticon.php?context=status&icon=dialog-information&size=22" alt="info icon" style="vertical-align:middle;margin-right:.2em;"/>'.
             'There is some debug output '.
             '<button onClick="javascript:$$(\'div.debug_div\').each(function (a) { a.toggle(); });">Toggle</button>'.
           '</div>';
diff --git a/include/php_setup.inc b/include/php_setup.inc
index 9f6ceb75becdcd9c10a7e5684cebbf1219a6763e..6ccaeffa755fe52e61f3a8e09922ae61feea7eae 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -191,21 +191,19 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
                               "\n\n".
                               "*** PHP error information ***\n\n");
 
-    $warning_path = (is_callable('get_template_path') ? get_template_path('images/warning.png') : 'images/warning.png');
-
     $error_collector = '
       <div class="error">
         <table width="100%">
           <tr>
             <td>
-              <img src="'.$warning_path.'" alt="" class="center"/>&nbsp;
+              <img src="geticon.php?context=status&icon=dialog-warning&size=16" alt="" class="center"/>&nbsp;
               <strong style="font-size:14px">'.
                 _("Generating this page caused the PHP interpreter to raise some errors!").'
               </strong>
             </td>
             <td align=right>
               <a href="mailto:bugs@fusiondirectory.org?subject=FusionDirectory%20bugreport&amp;body=%BUGBODY%">
-                <img src="images/mailto.png" title="'._("Send bug report to the FusionDirectory Team").
+                <img src="geticon.php?context=applications&icon=internet-mail&size=16" title="'._("Send bug report to the FusionDirectory Team").
                 '" class="center" alt="'.("Mail icon").'">&nbsp;'._("Send bugreport").'
               </a>
             </td>
diff --git a/include/select/groupSelect/group-filter.tpl b/include/select/groupSelect/group-filter.tpl
index 8df3794023ac144db7f70f4edd06922ed26de164..af5fdd80bdae75e09131791b2f96787d8f1dfcd6 100644
--- a/include/select/groupSelect/group-filter.tpl
+++ b/include/select/groupSelect/group-filter.tpl
@@ -16,7 +16,7 @@
   <tr>
    <td>
     <label for="NAME">
-     <img src="images/lists/search.png" align=middle>&nbsp;{t}Name{/t}
+     <img src="geticon.php?context=actions&icon=system-search&size=16" align=middle>&nbsp;{t}Name{/t}
     </label>
    </td>
    <td>
diff --git a/plugins/admin/departments/dep-list.xml b/plugins/admin/departments/dep-list.xml
index 0a40dd6b5d9f51683a5287d411e54d91da53f096..0f43fa30de4cf76a0ff8b8fd4336ee58c61a520c 100644
--- a/plugins/admin/departments/dep-list.xml
+++ b/plugins/admin/departments/dep-list.xml
@@ -44,7 +44,7 @@
 
     <action>
      <type>sub</type>
-     <image>images/lists/new.png</image>
+     <image>geticon.php?context=actions&amp;icon=document-new&amp;size=16</image>
      <label>Create</label>
     </action>
 
@@ -63,7 +63,7 @@
     <action>
       <name>remove</name>
       <type>entry</type>
-      <image>images/lists/trash.png</image>
+      <image>geticon.php?context=actions&amp;icon=edit-delete&amp;size=16</image>
       <label>Remove</label>
     </action>
 
@@ -83,7 +83,7 @@
       <name>remove</name>
       <type>entry</type>
       <nospan></nospan>
-      <image>images/lists/trash.png</image>
+      <image>geticon.php?context=actions&amp;icon=edit-delete&amp;size=16</image>
       <acl>department[d]</acl>
       <label>Remove</label>
     </action>
diff --git a/plugins/admin/groups/class_groupManagement.inc b/plugins/admin/groups/class_groupManagement.inc
index 4d8dd94ff482d77d7c0b858fcec190155bf7130d..e477f72eb1a210b03264dd12bb46ae37eaed50c2 100644
--- a/plugins/admin/groups/class_groupManagement.inc
+++ b/plugins/admin/groups/class_groupManagement.inc
@@ -35,7 +35,7 @@ class groupManagement extends simpleManagement
     return array(
       'plShortName'   => _('Groups'),
       'plDescription' => _('Manage groups'),
-      'plIcon'        => 'plugins/groups/images/icon.png',
+      'plIcon'        => '/fusiondirectory/geticon.php?context=applications&icon=system-users&size=48',
       'plSection'     => 'admin',
       'plManages'     => array('group'),
       'plPriority'    => 2,
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index d2de00156bfb893c1bf83b22dde5ad4a0a50f2d6..e05803366870c7557533fb422b84ebf475bfdffe 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -51,7 +51,7 @@ class userManagement extends management
     return array(
       'plShortName'   => _('Users'),
       'plDescription' => _('Manage users'),
-      'plIcon'        => 'plugins/users/images/icon.png',
+      'plIcon'        => '/fusiondirectory/geticon.php?context=places&icon=user-identity&size=48',
       'plSection'     => 'admin',
       'plManages'     => array('user'),
       'plPriority'    => 1,
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index 4ba2a69bca5e4ef8d7dd2e3757e2e792c7a02e78..f115a71b6fefe4121d92c56d0820e6c81cb3dfaa 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -495,7 +495,7 @@ class configInLdap extends simplePlugin
   static function get_themes()
   {
     $themesdir  = '../ihtml/themes/';
-    $themes     = array_keys(IconTheme::$themes);
+    $themes     = array_keys(session::global_get(IconTheme::$session_var));
     if ($dir = opendir("$themesdir")) {
       while (($file = readdir($dir)) !== FALSE) {
         if (is_dir("$themesdir/$file") && !preg_match("/^\./", $file)) {