[vdr-plugin-skindesigner] 01/12: Imported Upstream version 0.2.2-3-gf3ad276

Tobias Grimm tiber-guest at moszumanska.debian.org
Sun Feb 15 18:24:20 UTC 2015


This is an automated email from the git hooks/post-receive script.

tiber-guest pushed a commit to branch master
in repository vdr-plugin-skindesigner.

commit 97e4bde104069179f4b263ce866c83d7a3658114
Author: etobi <git at e-tobi.net>
Date:   Sat Feb 14 19:44:34 2015 +0100

    Imported Upstream version 0.2.2-3-gf3ad276
---
 .gitignore                                         |    8 +
 COPYING                                            |  340 ++++
 HISTORY                                            |  205 +++
 Makefile                                           |  182 ++
 README                                             |  108 ++
 config.c                                           |  333 ++++
 config.h                                           |  107 ++
 designer.c                                         |  349 ++++
 designer.h                                         |   52 +
 displaychannel.c                                   |  206 +++
 displaychannel.h                                   |   32 +
 displaymenu.c                                      |  308 ++++
 displaymenu.h                                      |   54 +
 displaymessage.c                                   |   45 +
 displaymessage.h                                   |   22 +
 displayreplay.c                                    |   99 ++
 displayreplay.h                                    |   30 +
 displaytracks.c                                    |   58 +
 displaytracks.h                                    |   27 +
 displayvolume.c                                    |   43 +
 displayvolume.h                                    |   21 +
 dtd/displayaudiotracks.dtd                         |   42 +
 dtd/displaychannel.dtd                             |  111 ++
 dtd/displaymenu.dtd                                |  276 +++
 dtd/displaymenuplugin.dtd                          |   96 ++
 dtd/displaymessage.dtd                             |   28 +
 dtd/displayreplay.dtd                              |  116 ++
 dtd/displayvolume.dtd                              |   28 +
 dtd/functions.dtd                                  |  146 ++
 dtd/globals.dtd                                    |   29 +
 dtd/setup.dtd                                      |   28 +
 extrecinfo/template.txt                            |    4 +
 fonts/VDROpenSans/Apache License.txt               |  201 +++
 fonts/VDROpenSans/VDROpenSans-Bold.ttf             |  Bin 0 -> 125932 bytes
 fonts/VDROpenSans/VDROpenSans-BoldItalic.ttf       |  Bin 0 -> 114584 bytes
 fonts/VDROpenSans/VDROpenSans-ExtraBold.ttf        |  Bin 0 -> 123960 bytes
 fonts/VDROpenSans/VDROpenSans-ExtraBoldItalic.ttf  |  Bin 0 -> 114768 bytes
 fonts/VDROpenSans/VDROpenSans-Italic.ttf           |  Bin 0 -> 114100 bytes
 fonts/VDROpenSans/VDROpenSans-Light.ttf            |  Bin 0 -> 123772 bytes
 fonts/VDROpenSans/VDROpenSans-LightItalic.ttf      |  Bin 0 -> 114484 bytes
 fonts/VDROpenSans/VDROpenSans-Regular.ttf          |  Bin 0 -> 118664 bytes
 fonts/VDROpenSans/VDROpenSans-Semibold.ttf         |  Bin 0 -> 122672 bytes
 fonts/VDROpenSans/VDROpenSans-SemiboldItalic.ttf   |  Bin 0 -> 114192 bytes
 libcore/extrecinfo.c                               |   96 ++
 libcore/extrecinfo.h                               |   36 +
 libcore/fontmanager.c                              |  180 ++
 libcore/fontmanager.h                              |   36 +
 libcore/helpers.c                                  |  234 +++
 libcore/helpers.h                                  |   46 +
 libcore/imagecache.c                               |  476 ++++++
 libcore/imagecache.h                               |   57 +
 libcore/imageloader.c                              |  368 ++++
 libcore/imageloader.h                              |   87 +
 libcore/pixmapcontainer.c                          |  487 ++++++
 libcore/pixmapcontainer.h                          |   74 +
 libcore/recfolderinfo.c                            |  219 +++
 libcore/recfolderinfo.h                            |   43 +
 libcore/skinsetup.c                                |  308 ++++
 libcore/skinsetup.h                                |   97 ++
 libcore/timers.c                                   |   87 +
 libcore/timers.h                                   |   20 +
 libtemplate/globals.c                              |  250 +++
 libtemplate/globals.h                              |   59 +
 libtemplate/parameter.c                            |  402 +++++
 libtemplate/parameter.h                            |  141 ++
 libtemplate/template.c                             |  281 +++
 libtemplate/template.h                             |   58 +
 libtemplate/templatefunction.c                     | 1611 ++++++++++++++++++
 libtemplate/templatefunction.h                     |  217 +++
 libtemplate/templateloopfunction.c                 |  208 +++
 libtemplate/templateloopfunction.h                 |   33 +
 libtemplate/templatepixmap.c                       |  474 ++++++
 libtemplate/templatepixmap.h                       |   82 +
 libtemplate/templateview.c                         | 1799 ++++++++++++++++++++
 libtemplate/templateview.h                         |  207 +++
 libtemplate/templateviewelement.c                  |  135 ++
 libtemplate/templateviewelement.h                  |  106 ++
 libtemplate/templateviewlist.c                     |  177 ++
 libtemplate/templateviewlist.h                     |   50 +
 libtemplate/templateviewtab.c                      |   38 +
 libtemplate/templateviewtab.h                      |   31 +
 libtemplate/xmlparser.c                            |  954 +++++++++++
 libtemplate/xmlparser.h                            |   65 +
 po/de_DE.po                                        |   91 +
 po/fi_FI.po                                        |   91 +
 scripts/README                                     |   10 +
 scripts/temperatures.default                       |   29 +
 scripts/temperatures.g2v                           |   31 +
 services.h                                         |   38 +
 services/epgsearch.h                               |  167 ++
 services/remotetimers.h                            |  141 ++
 services/scraper2vdr.h                             |  214 +++
 services/weatherforecast.h                         |   49 +
 setup.c                                            |  219 +++
 setup.h                                            |   57 +
 skindesclient-0.0.1/COPYING                        |  340 ++++
 skindesclient-0.0.1/Makefile                       |  123 ++
 skindesclient-0.0.1/README                         |   16 +
 skindesclient-0.0.1/libskindesigner/services.h     |   52 +
 .../libskindesigner/skindesignerosdbase.c          |  172 ++
 .../libskindesigner/skindesignerosdbase.h          |   62 +
 skindesclient-0.0.1/osdmenu.c                      |  148 ++
 skindesclient-0.0.1/skindesclient.c                |  147 ++
 .../plug-skindesclient-menudetail.xml              |   80 +
 .../plug-skindesclient-menulistmain.xml            |   67 +
 .../plug-skindesclient-menulistsub.xml             |   67 +
 skindesigner.c                                     |  262 +++
 skins/blackhole/globals.xml                        |  269 +++
 skins/blackhole/setup.xml                          |   58 +
 skins/blackhole/themes/default/icons/clear-day.png |  Bin 0 -> 4980 bytes
 .../blackhole/themes/default/icons/clear-night.png |  Bin 0 -> 3115 bytes
 skins/blackhole/themes/default/icons/cloudy.png    |  Bin 0 -> 6433 bytes
 skins/blackhole/themes/default/icons/fog.png       |  Bin 0 -> 3652 bytes
 .../themes/default/icons/ico_back_active.svg       |   66 +
 .../themes/default/icons/ico_back_active_x1.svg    |   82 +
 .../themes/default/icons/ico_back_active_x2.svg    |   98 ++
 .../themes/default/icons/ico_back_active_x3.svg    |  114 ++
 .../themes/default/icons/ico_back_inactive.svg     |   66 +
 .../blackhole/themes/default/icons/ico_crypted.svg |  151 ++
 .../themes/default/icons/ico_cutmark_start.svg     |   95 ++
 .../themes/default/icons/ico_cutmark_stop.svg      |  101 ++
 .../blackhole/themes/default/icons/ico_cutted.svg  |   48 +
 skins/blackhole/themes/default/icons/ico_dolby.svg |  141 ++
 .../blackhole/themes/default/icons/ico_folder.svg  |   53 +
 .../themes/default/icons/ico_fwd_active.svg        |   66 +
 .../themes/default/icons/ico_fwd_active_x1.svg     |   89 +
 .../themes/default/icons/ico_fwd_active_x2.svg     |  105 ++
 .../themes/default/icons/ico_fwd_active_x3.svg     |  121 ++
 .../themes/default/icons/ico_fwd_inactive.svg      |   66 +
 .../blackhole/themes/default/icons/ico_hd1080i.svg |  173 ++
 .../blackhole/themes/default/icons/ico_hd720p.svg  |  169 ++
 .../blackhole/themes/default/icons/ico_new_rec.svg |   48 +
 .../themes/default/icons/ico_pause_active.svg      |  103 ++
 .../themes/default/icons/ico_pause_inactive.svg    |  103 ++
 .../themes/default/icons/ico_play_active.svg       |   97 ++
 .../themes/default/icons/ico_play_inactive.svg     |   97 ++
 .../blackhole/themes/default/icons/ico_rec_on.svg  |  160 ++
 .../themes/default/icons/ico_recording.svg         |   48 +
 .../blackhole/themes/default/icons/ico_sd576i.svg  |  169 ++
 skins/blackhole/themes/default/icons/ico_timer.svg |   48 +
 .../themes/default/icons/ico_timer_active.svg      |   63 +
 .../themes/default/icons/ico_timer_inactive.svg    |   51 +
 .../themes/default/icons/ico_videotext.svg         |  154 ++
 .../themes/default/icons/ico_volume_full.svg       |   61 +
 .../themes/default/icons/ico_volume_low.svg        |   53 +
 .../themes/default/icons/ico_volume_medium.svg     |   57 +
 .../themes/default/icons/ico_volume_mute.svg       |   49 +
 .../themes/default/icons/ico_widescreen.svg        |  137 ++
 .../themes/default/icons/partly-cloudy-day.png     |  Bin 0 -> 7028 bytes
 .../themes/default/icons/partly-cloudy-night.png   |  Bin 0 -> 6409 bytes
 skins/blackhole/themes/default/icons/rain.png      |  Bin 0 -> 6000 bytes
 skins/blackhole/themes/default/icons/sleet.png     |  Bin 0 -> 6021 bytes
 skins/blackhole/themes/default/icons/snow.png      |  Bin 0 -> 7660 bytes
 skins/blackhole/themes/default/icons/wind.png      |  Bin 0 -> 2568 bytes
 .../menuicons/customicons/Applikationen.png        |  Bin 0 -> 2073 bytes
 .../themes/default/menuicons/customicons/Audio.png |  Bin 0 -> 2674 bytes
 .../customicons/Aufnahmen-Liste aktualisieren.png  |  Bin 0 -> 3550 bytes
 .../menuicons/customicons/Dienstprogramme.png      |  Bin 0 -> 1581 bytes
 .../default/menuicons/customicons/FireFox.png      |  Bin 0 -> 3359 bytes
 .../themes/default/menuicons/customicons/Info.png  |  Bin 0 -> 2138 bytes
 .../default/menuicons/customicons/Internet.png     |  Bin 0 -> 3801 bytes
 .../default/menuicons/customicons/Medien.png       |  Bin 0 -> 3009 bytes
 .../menuicons/customicons/Rechner neu starten.png  |  Bin 0 -> 2886 bytes
 .../menuicons/customicons/Remote wakeup.png        |  Bin 0 -> 859 bytes
 .../default/menuicons/customicons/Spiele.png       |  Bin 0 -> 2993 bytes
 .../customicons/System herunterfahren.png          |  Bin 0 -> 2713 bytes
 .../default/menuicons/customicons/System.png       |  Bin 0 -> 3227 bytes
 .../themes/default/menuicons/customicons/Tools.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/customicons/Tunderbird.png   |  Bin 0 -> 3544 bytes
 .../USB Massenspeicher sicher entfernen.png        |  Bin 0 -> 2019 bytes
 .../menuicons/customicons/VDR neu starten.png      |  Bin 0 -> 2577 bytes
 .../themes/default/menuicons/customicons/Video.png |  Bin 0 -> 2276 bytes
 .../themes/default/menuicons/customicons/Web.png   |  Bin 0 -> 3930 bytes
 .../themes/default/menuicons/customicons/XBMC.png  |  Bin 0 -> 3336 bytes
 .../themes/default/menuicons/customicons/Xterm.png |  Bin 0 -> 1575 bytes
 .../default/menuicons/customicons/audiovideo.png   |  Bin 0 -> 2765 bytes
 .../menuicons/customicons/markad_status.png        |  Bin 0 -> 2865 bytes
 .../menuicons/customicons/schneiden_abbrechen.png  |  Bin 0 -> 3420 bytes
 .../themes/default/menuicons/customicons/tux.png   |  Bin 0 -> 3852 bytes
 .../themes/default/menuicons/customicons/usb.png   |  Bin 0 -> 1438 bytes
 .../default/menuicons/customicons/vdrlogo.png      |  Bin 0 -> 12796 bytes
 .../default/menuicons/customicons/yaicon_blue.png  |  Bin 0 -> 1931 bytes
 .../themes/default/menuicons/pluginicons/admin.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/pluginicons/arghdirector.png |  Bin 0 -> 1824 bytes
 .../default/menuicons/pluginicons/autostart.png    |  Bin 0 -> 3320 bytes
 .../default/menuicons/pluginicons/avahi4vdr.png    |  Bin 0 -> 3734 bytes
 .../default/menuicons/pluginicons/avards.png       |  Bin 0 -> 665 bytes
 .../themes/default/menuicons/pluginicons/block.png |  Bin 0 -> 1341 bytes
 .../themes/default/menuicons/pluginicons/burn.png  |  Bin 0 -> 4233 bytes
 .../default/menuicons/pluginicons/cdplayer.png     |  Bin 0 -> 2258 bytes
 .../default/menuicons/pluginicons/chanman.png      |  Bin 0 -> 3224 bytes
 .../themes/default/menuicons/pluginicons/check.png |  Bin 0 -> 2141 bytes
 .../menuicons/pluginicons/conflictcheckonly.png    |  Bin 0 -> 3050 bytes
 .../themes/default/menuicons/pluginicons/ddci.png  |  Bin 0 -> 2876 bytes
 .../default/menuicons/pluginicons/devstatus.png    |  Bin 0 -> 3159 bytes
 .../default/menuicons/pluginicons/dummydevice.png  |  Bin 0 -> 2035 bytes
 .../default/menuicons/pluginicons/duplicates.png   |  Bin 0 -> 2485 bytes
 .../default/menuicons/pluginicons/dvbapi.png       |  Bin 0 -> 2869 bytes
 .../default/menuicons/pluginicons/dvbhddevice.png  |  Bin 0 -> 3175 bytes
 .../default/menuicons/pluginicons/dvbsddevice.png  |  Bin 0 -> 3588 bytes
 .../default/menuicons/pluginicons/dynamite.png     |  Bin 0 -> 3973 bytes
 .../themes/default/menuicons/pluginicons/eepg.png  |  Bin 0 -> 3590 bytes
 .../default/menuicons/pluginicons/epg2vdr.png      |  Bin 0 -> 4051 bytes
 .../default/menuicons/pluginicons/epgsearch.png    |  Bin 0 -> 3228 bytes
 .../menuicons/pluginicons/epgsearchonly.png        |  Bin 0 -> 2983 bytes
 .../default/menuicons/pluginicons/epgsync.png      |  Bin 0 -> 3518 bytes
 .../menuicons/pluginicons/externalplayer.png       |  Bin 0 -> 2449 bytes
 .../default/menuicons/pluginicons/extrecmenu.png   |  Bin 0 -> 2323 bytes
 .../default/menuicons/pluginicons/favorites.png    |  Bin 0 -> 1375 bytes
 .../themes/default/menuicons/pluginicons/femon.png |  Bin 0 -> 3331 bytes
 .../themes/default/menuicons/pluginicons/fepg.png  |  Bin 0 -> 2406 bytes
 .../default/menuicons/pluginicons/filebrowser.png  |  Bin 0 -> 1463 bytes
 .../default/menuicons/pluginicons/fritzbox.png     |  Bin 0 -> 1931 bytes
 .../default/menuicons/pluginicons/graphlcd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/graphtft.png     |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/image.png |  Bin 0 -> 2559 bytes
 .../default/menuicons/pluginicons/imonlcd.png      |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/iptv.png  |  Bin 0 -> 2774 bytes
 .../default/menuicons/pluginicons/lcdproc.png      |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/mailbox.png      |  Bin 0 -> 1904 bytes
 .../default/menuicons/pluginicons/makemkv.png      |  Bin 0 -> 1941 bytes
 .../default/menuicons/pluginicons/markad.png       |  Bin 0 -> 2865 bytes
 .../themes/default/menuicons/pluginicons/mlist.png |  Bin 0 -> 2505 bytes
 .../themes/default/menuicons/pluginicons/music.png |  Bin 0 -> 2674 bytes
 .../themes/default/menuicons/pluginicons/noepg.png |  Bin 0 -> 3355 bytes
 .../menuicons/pluginicons/nordlichtsepg.png        |  Bin 0 -> 2643 bytes
 .../default/menuicons/pluginicons/osdteletext.png  |  Bin 0 -> 1591 bytes
 .../themes/default/menuicons/pluginicons/peer.png  |  Bin 0 -> 4175 bytes
 .../themes/default/menuicons/pluginicons/play.png  |  Bin 0 -> 1059 bytes
 .../default/menuicons/pluginicons/pvrinput.png     |  Bin 0 -> 1976 bytes
 .../menuicons/pluginicons/quickepgsearch.png       |  Bin 0 -> 4781 bytes
 .../themes/default/menuicons/pluginicons/radio.png |  Bin 0 -> 2016 bytes
 .../default/menuicons/pluginicons/remote.png       |  Bin 0 -> 3807 bytes
 .../default/menuicons/pluginicons/remotetimers.png |  Bin 0 -> 4372 bytes
 .../default/menuicons/pluginicons/rssreader.png    |  Bin 0 -> 2620 bytes
 .../themes/default/menuicons/pluginicons/sc.png    |  Bin 0 -> 2208 bytes
 .../default/menuicons/pluginicons/scraper2vdr.png  |  Bin 0 -> 2726 bytes
 .../default/menuicons/pluginicons/screenshot.png   |  Bin 0 -> 2526 bytes
 .../default/menuicons/pluginicons/seduatmo.png     |  Bin 0 -> 2024 bytes
 .../menuicons/pluginicons/skyselectfeeds.png       |  Bin 0 -> 2852 bytes
 .../default/menuicons/pluginicons/sleeptimer.png   |  Bin 0 -> 4694 bytes
 .../default/menuicons/pluginicons/softhddevice.png |  Bin 0 -> 2410 bytes
 .../menuicons/pluginicons/streamdev-server.png     |  Bin 0 -> 2821 bytes
 .../default/menuicons/pluginicons/systeminfo.png   |  Bin 0 -> 1709 bytes
 .../default/menuicons/pluginicons/targavfd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/trayopenng.png   |  Bin 0 -> 1077 bytes
 .../default/menuicons/pluginicons/tvguide.png      |  Bin 0 -> 2129 bytes
 .../default/menuicons/pluginicons/tvm2vdr.png      |  Bin 0 -> 2622 bytes
 .../default/menuicons/pluginicons/tvscraper.png    |  Bin 0 -> 2726 bytes
 .../default/menuicons/pluginicons/undelete.png     |  Bin 0 -> 2947 bytes
 .../menuicons/pluginicons/weatherforecast.png      |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/weatherng.png    |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/xmltv2vdr.png    |  Bin 0 -> 2985 bytes
 .../default/menuicons/pluginicons/yaepghg.png      |  Bin 0 -> 2129 bytes
 .../themes/default/menuicons/standardicons/CAM.png |  Bin 0 -> 1619 bytes
 .../default/menuicons/standardicons/Channels.png   |  Bin 0 -> 3561 bytes
 .../default/menuicons/standardicons/Commands.png   |  Bin 0 -> 2428 bytes
 .../themes/default/menuicons/standardicons/DVB.png |  Bin 0 -> 2758 bytes
 .../themes/default/menuicons/standardicons/EPG.png |  Bin 0 -> 2874 bytes
 .../themes/default/menuicons/standardicons/LNB.png |  Bin 0 -> 3739 bytes
 .../menuicons/standardicons/Miscellaneous.png      |  Bin 0 -> 1576 bytes
 .../themes/default/menuicons/standardicons/OSD.png |  Bin 0 -> 1577 bytes
 .../default/menuicons/standardicons/Plugins.png    |  Bin 0 -> 2230 bytes
 .../default/menuicons/standardicons/Recording.png  |  Bin 0 -> 1115 bytes
 .../default/menuicons/standardicons/Recordings.png |  Bin 0 -> 3640 bytes
 .../default/menuicons/standardicons/Replay.png     |  Bin 0 -> 1059 bytes
 .../default/menuicons/standardicons/Restart.png    |  Bin 0 -> 2577 bytes
 .../default/menuicons/standardicons/Schedule.png   |  Bin 0 -> 2056 bytes
 .../default/menuicons/standardicons/Setup.png      |  Bin 0 -> 3179 bytes
 .../menuicons/standardicons/StopRecording.png      |  Bin 0 -> 547 bytes
 .../default/menuicons/standardicons/StopReplay.png |  Bin 0 -> 1595 bytes
 .../default/menuicons/standardicons/Timers.png     |  Bin 0 -> 4113 bytes
 .../themes/default/skinparts/buttonblue.svg        |  218 +++
 .../themes/default/skinparts/buttongreen.svg       |  220 +++
 .../themes/default/skinparts/buttonred.svg         |  215 +++
 .../themes/default/skinparts/buttonyellow.svg      |  203 +++
 .../default/skinparts/displaychannelback.svg       |   65 +
 .../default/skinparts/displaychannelbackepg.svg    |  286 ++++
 .../default/skinparts/displaychannellogoback.svg   |  184 ++
 .../default/skinparts/displaymendetailback.svg     |  190 +++
 .../themes/default/skinparts/displaymenuback.svg   |  250 +++
 .../themes/default/skinparts/displaymenubacktv.svg |  348 ++++
 .../themes/default/skinparts/displaymenucorner.svg |  275 +++
 .../default/skinparts/displaymenucurrentback.svg   |  188 ++
 .../themes/default/skinparts/displaymenuheader.svg |  292 ++++
 .../themes/default/skinparts/displayvolumeback.svg |   62 +
 .../themes/default/skinparts/line_horizontal.svg   |   90 +
 .../themes/default/skinparts/line_vertical.svg     |   90 +
 .../themes/default/skinparts/menubutton.svg        |  143 ++
 .../themes/default/skinparts/menubuttonactive.svg  |  139 ++
 .../themes/default/skinparts/messageblue.svg       |  196 +++
 .../themes/default/skinparts/messagegreen.svg      |  197 +++
 .../themes/default/skinparts/messagered.svg        |  196 +++
 .../themes/default/skinparts/messageyellow.svg     |  203 +++
 .../themes/default/skinparts/progressbar.svg       |  105 ++
 .../themes/default/skinparts/progressbarback.svg   |  156 ++
 .../default/skinparts/progressbarback_replay.svg   |  111 ++
 .../skinparts/progressbarback_replay_left.svg      |  116 ++
 .../themes/default/skinparts/progressbarend.svg    |  115 ++
 .../themes/default/skinparts/scrollbar.svg         |  120 ++
 .../themes/default/skinparts/scrollbarback.svg     |  112 ++
 .../blackhole/themes/default/skinparts/tabback.svg |  242 +++
 .../themes/default/skinparts/tacho_load_back.svg   |  767 +++++++++
 .../default/skinparts/tacho_percent_back.svg       |  749 ++++++++
 .../themes/default/skinparts/tacho_temp_back.svg   |  640 +++++++
 .../themes/default/skinparts/tachohands/load_0.svg |  181 ++
 .../default/skinparts/tachohands/load_100.svg      |  181 ++
 .../default/skinparts/tachohands/load_1000.svg     |  181 ++
 .../default/skinparts/tachohands/load_1025.svg     |  181 ++
 .../default/skinparts/tachohands/load_1050.svg     |  181 ++
 .../default/skinparts/tachohands/load_1075.svg     |  181 ++
 .../default/skinparts/tachohands/load_1100.svg     |  181 ++
 .../default/skinparts/tachohands/load_1125.svg     |  181 ++
 .../default/skinparts/tachohands/load_1150.svg     |  181 ++
 .../default/skinparts/tachohands/load_1175.svg     |  181 ++
 .../default/skinparts/tachohands/load_1200.svg     |  181 ++
 .../default/skinparts/tachohands/load_1225.svg     |  181 ++
 .../default/skinparts/tachohands/load_125.svg      |  181 ++
 .../default/skinparts/tachohands/load_1250.svg     |  181 ++
 .../default/skinparts/tachohands/load_1275.svg     |  181 ++
 .../default/skinparts/tachohands/load_1300.svg     |  181 ++
 .../default/skinparts/tachohands/load_1325.svg     |  181 ++
 .../default/skinparts/tachohands/load_1350.svg     |  181 ++
 .../default/skinparts/tachohands/load_1375.svg     |  181 ++
 .../default/skinparts/tachohands/load_1400.svg     |  181 ++
 .../default/skinparts/tachohands/load_1425.svg     |  181 ++
 .../default/skinparts/tachohands/load_1450.svg     |  181 ++
 .../default/skinparts/tachohands/load_1475.svg     |  181 ++
 .../default/skinparts/tachohands/load_150.svg      |  181 ++
 .../default/skinparts/tachohands/load_1500.svg     |  181 ++
 .../default/skinparts/tachohands/load_1525.svg     |  181 ++
 .../default/skinparts/tachohands/load_1550.svg     |  181 ++
 .../default/skinparts/tachohands/load_1575.svg     |  181 ++
 .../default/skinparts/tachohands/load_1600.svg     |  181 ++
 .../default/skinparts/tachohands/load_1625.svg     |  181 ++
 .../default/skinparts/tachohands/load_1650.svg     |  181 ++
 .../default/skinparts/tachohands/load_1675.svg     |  181 ++
 .../default/skinparts/tachohands/load_1700.svg     |  181 ++
 .../default/skinparts/tachohands/load_1725.svg     |  181 ++
 .../default/skinparts/tachohands/load_175.svg      |  181 ++
 .../default/skinparts/tachohands/load_1750.svg     |  181 ++
 .../default/skinparts/tachohands/load_1775.svg     |  181 ++
 .../default/skinparts/tachohands/load_1800.svg     |  181 ++
 .../default/skinparts/tachohands/load_1825.svg     |  181 ++
 .../default/skinparts/tachohands/load_1850.svg     |  181 ++
 .../default/skinparts/tachohands/load_1875.svg     |  181 ++
 .../default/skinparts/tachohands/load_1900.svg     |  181 ++
 .../default/skinparts/tachohands/load_1925.svg     |  181 ++
 .../default/skinparts/tachohands/load_1950.svg     |  181 ++
 .../default/skinparts/tachohands/load_1975.svg     |  181 ++
 .../default/skinparts/tachohands/load_200.svg      |  181 ++
 .../default/skinparts/tachohands/load_2000.svg     |  181 ++
 .../default/skinparts/tachohands/load_2025.svg     |  181 ++
 .../default/skinparts/tachohands/load_2050.svg     |  181 ++
 .../default/skinparts/tachohands/load_2075.svg     |  181 ++
 .../default/skinparts/tachohands/load_2100.svg     |  181 ++
 .../default/skinparts/tachohands/load_2125.svg     |  181 ++
 .../default/skinparts/tachohands/load_2150.svg     |  181 ++
 .../default/skinparts/tachohands/load_2175.svg     |  181 ++
 .../default/skinparts/tachohands/load_2200.svg     |  181 ++
 .../default/skinparts/tachohands/load_2225.svg     |  181 ++
 .../default/skinparts/tachohands/load_225.svg      |  181 ++
 .../default/skinparts/tachohands/load_2250.svg     |  181 ++
 .../default/skinparts/tachohands/load_2275.svg     |  181 ++
 .../default/skinparts/tachohands/load_2300.svg     |  181 ++
 .../default/skinparts/tachohands/load_2325.svg     |  181 ++
 .../default/skinparts/tachohands/load_2350.svg     |  181 ++
 .../default/skinparts/tachohands/load_2375.svg     |  181 ++
 .../default/skinparts/tachohands/load_2400.svg     |  181 ++
 .../default/skinparts/tachohands/load_2425.svg     |  181 ++
 .../default/skinparts/tachohands/load_2450.svg     |  181 ++
 .../default/skinparts/tachohands/load_2475.svg     |  181 ++
 .../default/skinparts/tachohands/load_25.svg       |  181 ++
 .../default/skinparts/tachohands/load_250.svg      |  181 ++
 .../default/skinparts/tachohands/load_2500.svg     |  181 ++
 .../default/skinparts/tachohands/load_2525.svg     |  181 ++
 .../default/skinparts/tachohands/load_275.svg      |  181 ++
 .../default/skinparts/tachohands/load_300.svg      |  181 ++
 .../default/skinparts/tachohands/load_325.svg      |  181 ++
 .../default/skinparts/tachohands/load_350.svg      |  181 ++
 .../default/skinparts/tachohands/load_375.svg      |  181 ++
 .../default/skinparts/tachohands/load_400.svg      |  181 ++
 .../default/skinparts/tachohands/load_425.svg      |  181 ++
 .../default/skinparts/tachohands/load_450.svg      |  181 ++
 .../default/skinparts/tachohands/load_475.svg      |  181 ++
 .../default/skinparts/tachohands/load_50.svg       |  181 ++
 .../default/skinparts/tachohands/load_500.svg      |  181 ++
 .../default/skinparts/tachohands/load_525.svg      |  181 ++
 .../default/skinparts/tachohands/load_550.svg      |  181 ++
 .../default/skinparts/tachohands/load_575.svg      |  181 ++
 .../default/skinparts/tachohands/load_600.svg      |  181 ++
 .../default/skinparts/tachohands/load_625.svg      |  181 ++
 .../default/skinparts/tachohands/load_650.svg      |  181 ++
 .../default/skinparts/tachohands/load_675.svg      |  181 ++
 .../default/skinparts/tachohands/load_700.svg      |  181 ++
 .../default/skinparts/tachohands/load_725.svg      |  181 ++
 .../default/skinparts/tachohands/load_75.svg       |  181 ++
 .../default/skinparts/tachohands/load_750.svg      |  181 ++
 .../default/skinparts/tachohands/load_775.svg      |  181 ++
 .../default/skinparts/tachohands/load_800.svg      |  181 ++
 .../default/skinparts/tachohands/load_825.svg      |  181 ++
 .../default/skinparts/tachohands/load_850.svg      |  181 ++
 .../default/skinparts/tachohands/load_875.svg      |  181 ++
 .../default/skinparts/tachohands/load_900.svg      |  181 ++
 .../default/skinparts/tachohands/load_925.svg      |  181 ++
 .../default/skinparts/tachohands/load_950.svg      |  181 ++
 .../default/skinparts/tachohands/load_975.svg      |  181 ++
 .../themes/default/skinparts/tachohands/perc_0.svg |   94 +
 .../themes/default/skinparts/tachohands/perc_1.svg |   94 +
 .../default/skinparts/tachohands/perc_10.svg       |   94 +
 .../default/skinparts/tachohands/perc_100.svg      |   94 +
 .../default/skinparts/tachohands/perc_11.svg       |   94 +
 .../default/skinparts/tachohands/perc_12.svg       |   94 +
 .../default/skinparts/tachohands/perc_13.svg       |   94 +
 .../default/skinparts/tachohands/perc_14.svg       |   94 +
 .../default/skinparts/tachohands/perc_15.svg       |   94 +
 .../default/skinparts/tachohands/perc_16.svg       |   94 +
 .../default/skinparts/tachohands/perc_17.svg       |   94 +
 .../default/skinparts/tachohands/perc_18.svg       |   94 +
 .../default/skinparts/tachohands/perc_19.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_2.svg |   94 +
 .../default/skinparts/tachohands/perc_20.svg       |   94 +
 .../default/skinparts/tachohands/perc_21.svg       |   94 +
 .../default/skinparts/tachohands/perc_22.svg       |   94 +
 .../default/skinparts/tachohands/perc_23.svg       |   94 +
 .../default/skinparts/tachohands/perc_24.svg       |   94 +
 .../default/skinparts/tachohands/perc_25.svg       |   94 +
 .../default/skinparts/tachohands/perc_26.svg       |   94 +
 .../default/skinparts/tachohands/perc_27.svg       |   94 +
 .../default/skinparts/tachohands/perc_28.svg       |   94 +
 .../default/skinparts/tachohands/perc_29.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_3.svg |   94 +
 .../default/skinparts/tachohands/perc_30.svg       |   94 +
 .../default/skinparts/tachohands/perc_31.svg       |   94 +
 .../default/skinparts/tachohands/perc_32.svg       |   94 +
 .../default/skinparts/tachohands/perc_33.svg       |   94 +
 .../default/skinparts/tachohands/perc_34.svg       |   94 +
 .../default/skinparts/tachohands/perc_35.svg       |   94 +
 .../default/skinparts/tachohands/perc_36.svg       |   94 +
 .../default/skinparts/tachohands/perc_37.svg       |   94 +
 .../default/skinparts/tachohands/perc_38.svg       |   94 +
 .../default/skinparts/tachohands/perc_39.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_4.svg |   94 +
 .../default/skinparts/tachohands/perc_40.svg       |   94 +
 .../default/skinparts/tachohands/perc_41.svg       |   94 +
 .../default/skinparts/tachohands/perc_42.svg       |   94 +
 .../default/skinparts/tachohands/perc_43.svg       |   94 +
 .../default/skinparts/tachohands/perc_44.svg       |   94 +
 .../default/skinparts/tachohands/perc_45.svg       |   94 +
 .../default/skinparts/tachohands/perc_46.svg       |   94 +
 .../default/skinparts/tachohands/perc_47.svg       |   94 +
 .../default/skinparts/tachohands/perc_48.svg       |   94 +
 .../default/skinparts/tachohands/perc_49.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_5.svg |   94 +
 .../default/skinparts/tachohands/perc_50.svg       |   94 +
 .../default/skinparts/tachohands/perc_51.svg       |   94 +
 .../default/skinparts/tachohands/perc_52.svg       |   94 +
 .../default/skinparts/tachohands/perc_53.svg       |   94 +
 .../default/skinparts/tachohands/perc_54.svg       |   94 +
 .../default/skinparts/tachohands/perc_55.svg       |   94 +
 .../default/skinparts/tachohands/perc_56.svg       |   94 +
 .../default/skinparts/tachohands/perc_57.svg       |   94 +
 .../default/skinparts/tachohands/perc_58.svg       |   94 +
 .../default/skinparts/tachohands/perc_59.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_6.svg |   94 +
 .../default/skinparts/tachohands/perc_60.svg       |   94 +
 .../default/skinparts/tachohands/perc_61.svg       |   94 +
 .../default/skinparts/tachohands/perc_62.svg       |   94 +
 .../default/skinparts/tachohands/perc_63.svg       |   94 +
 .../default/skinparts/tachohands/perc_64.svg       |   94 +
 .../default/skinparts/tachohands/perc_65.svg       |   94 +
 .../default/skinparts/tachohands/perc_66.svg       |   94 +
 .../default/skinparts/tachohands/perc_67.svg       |   94 +
 .../default/skinparts/tachohands/perc_68.svg       |   94 +
 .../default/skinparts/tachohands/perc_69.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_7.svg |   94 +
 .../default/skinparts/tachohands/perc_70.svg       |   94 +
 .../default/skinparts/tachohands/perc_71.svg       |   94 +
 .../default/skinparts/tachohands/perc_72.svg       |   94 +
 .../default/skinparts/tachohands/perc_73.svg       |   94 +
 .../default/skinparts/tachohands/perc_74.svg       |   94 +
 .../default/skinparts/tachohands/perc_75.svg       |   94 +
 .../default/skinparts/tachohands/perc_76.svg       |   94 +
 .../default/skinparts/tachohands/perc_77.svg       |   94 +
 .../default/skinparts/tachohands/perc_78.svg       |   94 +
 .../default/skinparts/tachohands/perc_79.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_8.svg |   94 +
 .../default/skinparts/tachohands/perc_80.svg       |   94 +
 .../default/skinparts/tachohands/perc_81.svg       |   94 +
 .../default/skinparts/tachohands/perc_82.svg       |   94 +
 .../default/skinparts/tachohands/perc_83.svg       |   94 +
 .../default/skinparts/tachohands/perc_84.svg       |   94 +
 .../default/skinparts/tachohands/perc_85.svg       |   94 +
 .../default/skinparts/tachohands/perc_86.svg       |   94 +
 .../default/skinparts/tachohands/perc_87.svg       |   94 +
 .../default/skinparts/tachohands/perc_88.svg       |   94 +
 .../default/skinparts/tachohands/perc_89.svg       |   94 +
 .../themes/default/skinparts/tachohands/perc_9.svg |   94 +
 .../default/skinparts/tachohands/perc_90.svg       |   94 +
 .../default/skinparts/tachohands/perc_91.svg       |   94 +
 .../default/skinparts/tachohands/perc_92.svg       |   94 +
 .../default/skinparts/tachohands/perc_93.svg       |   94 +
 .../default/skinparts/tachohands/perc_94.svg       |   94 +
 .../default/skinparts/tachohands/perc_95.svg       |   94 +
 .../default/skinparts/tachohands/perc_96.svg       |   94 +
 .../default/skinparts/tachohands/perc_97.svg       |   94 +
 .../default/skinparts/tachohands/perc_98.svg       |   94 +
 .../default/skinparts/tachohands/perc_99.svg       |   94 +
 .../themes/default/skinparts/tachohands/temp_0.svg |   82 +
 .../themes/default/skinparts/tachohands/temp_1.svg |   82 +
 .../default/skinparts/tachohands/temp_10.svg       |   82 +
 .../default/skinparts/tachohands/temp_11.svg       |   82 +
 .../default/skinparts/tachohands/temp_12.svg       |   82 +
 .../default/skinparts/tachohands/temp_13.svg       |   82 +
 .../default/skinparts/tachohands/temp_14.svg       |   82 +
 .../default/skinparts/tachohands/temp_15.svg       |   82 +
 .../default/skinparts/tachohands/temp_16.svg       |   82 +
 .../default/skinparts/tachohands/temp_17.svg       |   82 +
 .../default/skinparts/tachohands/temp_18.svg       |   82 +
 .../default/skinparts/tachohands/temp_19.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_2.svg |   82 +
 .../default/skinparts/tachohands/temp_20.svg       |   82 +
 .../default/skinparts/tachohands/temp_21.svg       |   82 +
 .../default/skinparts/tachohands/temp_22.svg       |   82 +
 .../default/skinparts/tachohands/temp_23.svg       |   82 +
 .../default/skinparts/tachohands/temp_24.svg       |   82 +
 .../default/skinparts/tachohands/temp_25.svg       |   82 +
 .../default/skinparts/tachohands/temp_26.svg       |   82 +
 .../default/skinparts/tachohands/temp_27.svg       |   82 +
 .../default/skinparts/tachohands/temp_28.svg       |   82 +
 .../default/skinparts/tachohands/temp_29.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_3.svg |   82 +
 .../default/skinparts/tachohands/temp_30.svg       |   82 +
 .../default/skinparts/tachohands/temp_31.svg       |   82 +
 .../default/skinparts/tachohands/temp_32.svg       |   82 +
 .../default/skinparts/tachohands/temp_33.svg       |   82 +
 .../default/skinparts/tachohands/temp_34.svg       |   82 +
 .../default/skinparts/tachohands/temp_35.svg       |   82 +
 .../default/skinparts/tachohands/temp_36.svg       |   82 +
 .../default/skinparts/tachohands/temp_37.svg       |   82 +
 .../default/skinparts/tachohands/temp_38.svg       |   82 +
 .../default/skinparts/tachohands/temp_39.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_4.svg |   82 +
 .../default/skinparts/tachohands/temp_40.svg       |   82 +
 .../default/skinparts/tachohands/temp_41.svg       |   82 +
 .../default/skinparts/tachohands/temp_42.svg       |   82 +
 .../default/skinparts/tachohands/temp_43.svg       |   82 +
 .../default/skinparts/tachohands/temp_44.svg       |   82 +
 .../default/skinparts/tachohands/temp_45.svg       |   82 +
 .../default/skinparts/tachohands/temp_46.svg       |   82 +
 .../default/skinparts/tachohands/temp_47.svg       |   82 +
 .../default/skinparts/tachohands/temp_48.svg       |   82 +
 .../default/skinparts/tachohands/temp_49.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_5.svg |   82 +
 .../default/skinparts/tachohands/temp_50.svg       |   82 +
 .../default/skinparts/tachohands/temp_51.svg       |   82 +
 .../default/skinparts/tachohands/temp_52.svg       |   82 +
 .../default/skinparts/tachohands/temp_53.svg       |   82 +
 .../default/skinparts/tachohands/temp_54.svg       |   82 +
 .../default/skinparts/tachohands/temp_55.svg       |   82 +
 .../default/skinparts/tachohands/temp_56.svg       |   82 +
 .../default/skinparts/tachohands/temp_57.svg       |   82 +
 .../default/skinparts/tachohands/temp_58.svg       |   82 +
 .../default/skinparts/tachohands/temp_59.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_6.svg |   82 +
 .../default/skinparts/tachohands/temp_60.svg       |   82 +
 .../default/skinparts/tachohands/temp_61.svg       |   82 +
 .../default/skinparts/tachohands/temp_62.svg       |   82 +
 .../default/skinparts/tachohands/temp_63.svg       |   82 +
 .../default/skinparts/tachohands/temp_64.svg       |   82 +
 .../default/skinparts/tachohands/temp_65.svg       |   82 +
 .../default/skinparts/tachohands/temp_66.svg       |   82 +
 .../default/skinparts/tachohands/temp_67.svg       |   82 +
 .../default/skinparts/tachohands/temp_68.svg       |   82 +
 .../default/skinparts/tachohands/temp_69.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_7.svg |   82 +
 .../default/skinparts/tachohands/temp_70.svg       |   81 +
 .../default/skinparts/tachohands/temp_71.svg       |   82 +
 .../default/skinparts/tachohands/temp_72.svg       |   82 +
 .../default/skinparts/tachohands/temp_73.svg       |   82 +
 .../default/skinparts/tachohands/temp_74.svg       |   82 +
 .../default/skinparts/tachohands/temp_75.svg       |   82 +
 .../default/skinparts/tachohands/temp_76.svg       |   82 +
 .../default/skinparts/tachohands/temp_77.svg       |   82 +
 .../default/skinparts/tachohands/temp_78.svg       |   82 +
 .../default/skinparts/tachohands/temp_79.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_8.svg |   82 +
 .../default/skinparts/tachohands/temp_80.svg       |   82 +
 .../default/skinparts/tachohands/temp_81.svg       |   82 +
 .../themes/default/skinparts/tachohands/temp_9.svg |   82 +
 .../themes/default/skinparts/tachos_back.svg       |  162 ++
 .../themes/default/skinparts/watchback.svg         |  950 +++++++++++
 .../themes/default/skinparts/watchhands/h_0.svg    |   68 +
 .../themes/default/skinparts/watchhands/h_1.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_10.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_11.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_12.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_13.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_14.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_15.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_16.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_17.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_18.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_19.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_2.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_20.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_21.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_22.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_23.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_24.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_25.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_26.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_27.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_28.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_29.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_3.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_30.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_31.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_32.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_33.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_34.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_35.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_36.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_37.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_38.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_39.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_4.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_40.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_41.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_42.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_43.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_44.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_45.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_46.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_47.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_48.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_49.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_5.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_50.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_51.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_52.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_53.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_54.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_55.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_56.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_57.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_58.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_59.svg   |   69 +
 .../themes/default/skinparts/watchhands/h_6.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_7.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_8.svg    |   69 +
 .../themes/default/skinparts/watchhands/h_9.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_0.svg    |   68 +
 .../themes/default/skinparts/watchhands/m_1.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_10.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_11.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_12.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_13.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_14.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_15.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_16.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_17.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_18.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_19.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_2.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_20.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_21.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_22.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_23.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_24.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_25.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_26.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_27.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_28.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_29.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_3.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_30.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_31.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_32.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_33.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_34.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_35.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_36.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_37.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_38.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_39.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_4.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_40.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_41.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_42.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_43.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_44.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_45.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_46.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_47.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_48.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_49.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_5.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_50.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_51.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_52.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_53.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_54.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_55.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_56.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_57.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_58.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_59.svg   |   69 +
 .../themes/default/skinparts/watchhands/m_6.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_7.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_8.svg    |   69 +
 .../themes/default/skinparts/watchhands/m_9.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_0.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_1.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_10.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_11.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_12.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_13.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_14.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_15.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_16.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_17.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_18.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_19.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_2.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_20.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_21.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_22.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_23.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_24.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_25.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_26.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_27.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_28.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_29.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_3.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_30.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_31.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_32.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_33.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_34.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_35.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_36.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_37.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_38.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_39.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_4.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_40.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_41.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_42.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_43.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_44.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_45.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_46.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_47.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_48.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_49.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_5.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_50.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_51.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_52.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_53.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_54.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_55.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_56.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_57.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_58.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_59.svg   |   69 +
 .../themes/default/skinparts/watchhands/s_6.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_7.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_8.svg    |   69 +
 .../themes/default/skinparts/watchhands/s_9.svg    |   69 +
 skins/blackhole/themes/default/theme.xml           |   46 +
 skins/blackhole/xmlfiles/displayaudiotracks.xml    |   43 +
 skins/blackhole/xmlfiles/displaychannel.xml        |  298 ++++
 skins/blackhole/xmlfiles/displaymenu.xml           |  241 +++
 skins/blackhole/xmlfiles/displaymenuchannels.xml   |  123 ++
 skins/blackhole/xmlfiles/displaymenudefault.xml    |   75 +
 skins/blackhole/xmlfiles/displaymenudetailepg.xml  |  301 ++++
 .../xmlfiles/displaymenudetailrecording.xml        |  263 +++
 skins/blackhole/xmlfiles/displaymenudetailtext.xml |   37 +
 skins/blackhole/xmlfiles/displaymenumain.xml       |  228 +++
 skins/blackhole/xmlfiles/displaymenurecordings.xml |  120 ++
 skins/blackhole/xmlfiles/displaymenuschedules.xml  |  265 +++
 skins/blackhole/xmlfiles/displaymenusetup.xml      |   51 +
 skins/blackhole/xmlfiles/displaymenutimers.xml     |  117 ++
 skins/blackhole/xmlfiles/displaymessage.xml        |   28 +
 skins/blackhole/xmlfiles/displayreplay.xml         |  379 +++++
 skins/blackhole/xmlfiles/displayvolume.xml         |   36 +
 .../plug-weatherforecast-weatherforecast.xml       |  129 ++
 ...eatherforecast-weatherforecastdetailcurrent.xml |   70 +
 ...-weatherforecast-weatherforecastdetaildaily.xml |   69 +
 ...weatherforecast-weatherforecastdetailhourly.xml |   66 +
 skins/metrixhd/globals.xml                         |  277 +++
 skins/metrixhd/setup.xml                           |   22 +
 skins/metrixhd/themes/default/icons/clear-day.png  |  Bin 0 -> 4980 bytes
 .../metrixhd/themes/default/icons/clear-night.png  |  Bin 0 -> 3115 bytes
 skins/metrixhd/themes/default/icons/cloudy.png     |  Bin 0 -> 6433 bytes
 skins/metrixhd/themes/default/icons/fog.png        |  Bin 0 -> 3652 bytes
 skins/metrixhd/themes/default/icons/ico_ac3.png    |  Bin 0 -> 2684 bytes
 .../themes/default/icons/ico_activetimer.png       |  Bin 0 -> 1731 bytes
 .../themes/default/icons/ico_channelsep.png        |  Bin 0 -> 958 bytes
 .../themes/default/icons/ico_crypt_off.png         |  Bin 0 -> 386 bytes
 .../metrixhd/themes/default/icons/ico_crypt_on.png |  Bin 0 -> 369 bytes
 skins/metrixhd/themes/default/icons/ico_cutted.png |  Bin 0 -> 2007 bytes
 .../themes/default/icons/ico_discusage.png         |  Bin 0 -> 4404 bytes
 .../themes/default/icons/ico_dolby_off.png         |  Bin 0 -> 458 bytes
 .../metrixhd/themes/default/icons/ico_dolby_on.png |  Bin 0 -> 413 bytes
 skins/metrixhd/themes/default/icons/ico_ff.png     |  Bin 0 -> 4572 bytes
 skins/metrixhd/themes/default/icons/ico_ff_1x.png  |  Bin 0 -> 5264 bytes
 skins/metrixhd/themes/default/icons/ico_ff_2x.png  |  Bin 0 -> 5564 bytes
 skins/metrixhd/themes/default/icons/ico_ff_3x.png  |  Bin 0 -> 5639 bytes
 skins/metrixhd/themes/default/icons/ico_ff_off.png |  Bin 0 -> 3265 bytes
 skins/metrixhd/themes/default/icons/ico_hd_off.png |  Bin 0 -> 1603 bytes
 skins/metrixhd/themes/default/icons/ico_hd_off.svg |   64 +
 skins/metrixhd/themes/default/icons/ico_hd_on.png  |  Bin 0 -> 1904 bytes
 skins/metrixhd/themes/default/icons/ico_hd_on.svg  |   64 +
 .../metrixhd/themes/default/icons/ico_line_off.png |  Bin 0 -> 147 bytes
 .../metrixhd/themes/default/icons/ico_line_on.png  |  Bin 0 -> 958 bytes
 skins/metrixhd/themes/default/icons/ico_mute.png   |  Bin 0 -> 3075 bytes
 skins/metrixhd/themes/default/icons/ico_pause.png  |  Bin 0 -> 1558 bytes
 .../themes/default/icons/ico_pause_off.png         |  Bin 0 -> 1191 bytes
 skins/metrixhd/themes/default/icons/ico_play.png   |  Bin 0 -> 3481 bytes
 .../metrixhd/themes/default/icons/ico_play_off.png |  Bin 0 -> 2505 bytes
 .../metrixhd/themes/default/icons/ico_rec_off.png  |  Bin 0 -> 788 bytes
 skins/metrixhd/themes/default/icons/ico_rec_on.png |  Bin 0 -> 1111 bytes
 .../themes/default/icons/ico_recfolder.png         |  Bin 0 -> 2423 bytes
 skins/metrixhd/themes/default/icons/ico_recnew.png |  Bin 0 -> 2815 bytes
 skins/metrixhd/themes/default/icons/ico_rew.png    |  Bin 0 -> 4515 bytes
 skins/metrixhd/themes/default/icons/ico_rew_1x.png |  Bin 0 -> 5201 bytes
 skins/metrixhd/themes/default/icons/ico_rew_2x.png |  Bin 0 -> 5508 bytes
 skins/metrixhd/themes/default/icons/ico_rew_3x.png |  Bin 0 -> 5582 bytes
 .../metrixhd/themes/default/icons/ico_rew_off.png  |  Bin 0 -> 3373 bytes
 skins/metrixhd/themes/default/icons/ico_stereo.png |  Bin 0 -> 4433 bytes
 .../themes/default/icons/ico_timer_active.png      |  Bin 0 -> 3297 bytes
 .../themes/default/icons/ico_timer_inactive.png    |  Bin 0 -> 1527 bytes
 .../themes/default/icons/ico_timer_recording.png   |  Bin 0 -> 531 bytes
 .../metrixhd/themes/default/icons/ico_txt_off.png  |  Bin 0 -> 346 bytes
 skins/metrixhd/themes/default/icons/ico_txt_on.png |  Bin 0 -> 349 bytes
 skins/metrixhd/themes/default/icons/ico_volume.png |  Bin 0 -> 7443 bytes
 .../themes/default/icons/ico_widescreen_off.png    |  Bin 0 -> 861 bytes
 .../themes/default/icons/ico_widescreen_off.svg    |   58 +
 .../themes/default/icons/ico_widescreen_on.png     |  Bin 0 -> 1072 bytes
 .../themes/default/icons/ico_widescreen_on.svg     |   58 +
 .../themes/default/icons/partly-cloudy-day.png     |  Bin 0 -> 7028 bytes
 .../themes/default/icons/partly-cloudy-night.png   |  Bin 0 -> 6409 bytes
 skins/metrixhd/themes/default/icons/rain.png       |  Bin 0 -> 6000 bytes
 skins/metrixhd/themes/default/icons/sleet.png      |  Bin 0 -> 6021 bytes
 skins/metrixhd/themes/default/icons/snow.png       |  Bin 0 -> 7660 bytes
 skins/metrixhd/themes/default/icons/wind.png       |  Bin 0 -> 2568 bytes
 .../menuicons/customicons/Applikationen.png        |  Bin 0 -> 2073 bytes
 .../themes/default/menuicons/customicons/Audio.png |  Bin 0 -> 2674 bytes
 .../customicons/Aufnahmen-Liste aktualisieren.png  |  Bin 0 -> 3550 bytes
 .../menuicons/customicons/Dienstprogramme.png      |  Bin 0 -> 1581 bytes
 .../default/menuicons/customicons/FireFox.png      |  Bin 0 -> 3359 bytes
 .../themes/default/menuicons/customicons/Info.png  |  Bin 0 -> 2138 bytes
 .../default/menuicons/customicons/Internet.png     |  Bin 0 -> 3801 bytes
 .../default/menuicons/customicons/Medien.png       |  Bin 0 -> 3009 bytes
 .../menuicons/customicons/Rechner neu starten.png  |  Bin 0 -> 2886 bytes
 .../menuicons/customicons/Remote wakeup.png        |  Bin 0 -> 859 bytes
 .../default/menuicons/customicons/Spiele.png       |  Bin 0 -> 2993 bytes
 .../customicons/System herunterfahren.png          |  Bin 0 -> 2713 bytes
 .../default/menuicons/customicons/System.png       |  Bin 0 -> 3227 bytes
 .../themes/default/menuicons/customicons/Tools.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/customicons/Tunderbird.png   |  Bin 0 -> 3544 bytes
 .../USB Massenspeicher sicher entfernen.png        |  Bin 0 -> 2019 bytes
 .../menuicons/customicons/VDR neu starten.png      |  Bin 0 -> 2577 bytes
 .../themes/default/menuicons/customicons/Video.png |  Bin 0 -> 2276 bytes
 .../themes/default/menuicons/customicons/Web.png   |  Bin 0 -> 3930 bytes
 .../themes/default/menuicons/customicons/XBMC.png  |  Bin 0 -> 3336 bytes
 .../themes/default/menuicons/customicons/Xterm.png |  Bin 0 -> 1575 bytes
 .../default/menuicons/customicons/audiovideo.png   |  Bin 0 -> 2765 bytes
 .../menuicons/customicons/markad_status.png        |  Bin 0 -> 2865 bytes
 .../menuicons/customicons/schneiden_abbrechen.png  |  Bin 0 -> 3420 bytes
 .../themes/default/menuicons/customicons/tux.png   |  Bin 0 -> 3852 bytes
 .../themes/default/menuicons/customicons/usb.png   |  Bin 0 -> 1438 bytes
 .../default/menuicons/customicons/vdrlogo.png      |  Bin 0 -> 12796 bytes
 .../default/menuicons/customicons/yaicon_blue.png  |  Bin 0 -> 1931 bytes
 .../themes/default/menuicons/pluginicons/admin.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/pluginicons/arghdirector.png |  Bin 0 -> 1824 bytes
 .../default/menuicons/pluginicons/autostart.png    |  Bin 0 -> 3320 bytes
 .../default/menuicons/pluginicons/avahi4vdr.png    |  Bin 0 -> 3734 bytes
 .../default/menuicons/pluginicons/avards.png       |  Bin 0 -> 665 bytes
 .../themes/default/menuicons/pluginicons/block.png |  Bin 0 -> 1341 bytes
 .../themes/default/menuicons/pluginicons/burn.png  |  Bin 0 -> 4233 bytes
 .../default/menuicons/pluginicons/cdplayer.png     |  Bin 0 -> 2258 bytes
 .../default/menuicons/pluginicons/chanman.png      |  Bin 0 -> 3224 bytes
 .../themes/default/menuicons/pluginicons/check.png |  Bin 0 -> 2141 bytes
 .../menuicons/pluginicons/conflictcheckonly.png    |  Bin 0 -> 3050 bytes
 .../themes/default/menuicons/pluginicons/ddci.png  |  Bin 0 -> 2876 bytes
 .../default/menuicons/pluginicons/devstatus.png    |  Bin 0 -> 3159 bytes
 .../default/menuicons/pluginicons/dummydevice.png  |  Bin 0 -> 2035 bytes
 .../default/menuicons/pluginicons/duplicates.png   |  Bin 0 -> 2485 bytes
 .../default/menuicons/pluginicons/dvbapi.png       |  Bin 0 -> 2869 bytes
 .../default/menuicons/pluginicons/dvbhddevice.png  |  Bin 0 -> 3175 bytes
 .../default/menuicons/pluginicons/dvbsddevice.png  |  Bin 0 -> 3588 bytes
 .../default/menuicons/pluginicons/dynamite.png     |  Bin 0 -> 3973 bytes
 .../themes/default/menuicons/pluginicons/eepg.png  |  Bin 0 -> 3590 bytes
 .../default/menuicons/pluginicons/epg2vdr.png      |  Bin 0 -> 4051 bytes
 .../default/menuicons/pluginicons/epgsearch.png    |  Bin 0 -> 3228 bytes
 .../menuicons/pluginicons/epgsearchonly.png        |  Bin 0 -> 2983 bytes
 .../default/menuicons/pluginicons/epgsync.png      |  Bin 0 -> 3518 bytes
 .../menuicons/pluginicons/externalplayer.png       |  Bin 0 -> 2449 bytes
 .../default/menuicons/pluginicons/extrecmenu.png   |  Bin 0 -> 2323 bytes
 .../default/menuicons/pluginicons/favorites.png    |  Bin 0 -> 1375 bytes
 .../themes/default/menuicons/pluginicons/femon.png |  Bin 0 -> 3331 bytes
 .../themes/default/menuicons/pluginicons/fepg.png  |  Bin 0 -> 2406 bytes
 .../default/menuicons/pluginicons/filebrowser.png  |  Bin 0 -> 1463 bytes
 .../default/menuicons/pluginicons/fritzbox.png     |  Bin 0 -> 1931 bytes
 .../default/menuicons/pluginicons/graphlcd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/graphtft.png     |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/image.png |  Bin 0 -> 2559 bytes
 .../default/menuicons/pluginicons/imonlcd.png      |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/iptv.png  |  Bin 0 -> 2774 bytes
 .../default/menuicons/pluginicons/lcdproc.png      |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/mailbox.png      |  Bin 0 -> 1904 bytes
 .../default/menuicons/pluginicons/makemkv.png      |  Bin 0 -> 1941 bytes
 .../default/menuicons/pluginicons/markad.png       |  Bin 0 -> 2865 bytes
 .../themes/default/menuicons/pluginicons/mlist.png |  Bin 0 -> 2505 bytes
 .../themes/default/menuicons/pluginicons/music.png |  Bin 0 -> 2674 bytes
 .../themes/default/menuicons/pluginicons/noepg.png |  Bin 0 -> 3355 bytes
 .../menuicons/pluginicons/nordlichtsepg.png        |  Bin 0 -> 2643 bytes
 .../default/menuicons/pluginicons/osdteletext.png  |  Bin 0 -> 1591 bytes
 .../themes/default/menuicons/pluginicons/peer.png  |  Bin 0 -> 4175 bytes
 .../themes/default/menuicons/pluginicons/play.png  |  Bin 0 -> 1059 bytes
 .../default/menuicons/pluginicons/pvrinput.png     |  Bin 0 -> 1976 bytes
 .../menuicons/pluginicons/quickepgsearch.png       |  Bin 0 -> 4781 bytes
 .../themes/default/menuicons/pluginicons/radio.png |  Bin 0 -> 2016 bytes
 .../default/menuicons/pluginicons/remote.png       |  Bin 0 -> 3807 bytes
 .../default/menuicons/pluginicons/remotetimers.png |  Bin 0 -> 4372 bytes
 .../default/menuicons/pluginicons/rssreader.png    |  Bin 0 -> 2620 bytes
 .../themes/default/menuicons/pluginicons/sc.png    |  Bin 0 -> 2208 bytes
 .../default/menuicons/pluginicons/scraper2vdr.png  |  Bin 0 -> 2726 bytes
 .../default/menuicons/pluginicons/screenshot.png   |  Bin 0 -> 2526 bytes
 .../default/menuicons/pluginicons/seduatmo.png     |  Bin 0 -> 2024 bytes
 .../menuicons/pluginicons/skyselectfeeds.png       |  Bin 0 -> 2852 bytes
 .../default/menuicons/pluginicons/sleeptimer.png   |  Bin 0 -> 4694 bytes
 .../default/menuicons/pluginicons/softhddevice.png |  Bin 0 -> 2410 bytes
 .../menuicons/pluginicons/streamdev-server.png     |  Bin 0 -> 2821 bytes
 .../default/menuicons/pluginicons/systeminfo.png   |  Bin 0 -> 1709 bytes
 .../default/menuicons/pluginicons/targavfd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/trayopenng.png   |  Bin 0 -> 1077 bytes
 .../default/menuicons/pluginicons/tvguide.png      |  Bin 0 -> 2129 bytes
 .../default/menuicons/pluginicons/tvm2vdr.png      |  Bin 0 -> 2622 bytes
 .../default/menuicons/pluginicons/tvscraper.png    |  Bin 0 -> 2726 bytes
 .../default/menuicons/pluginicons/undelete.png     |  Bin 0 -> 2947 bytes
 .../menuicons/pluginicons/weatherforecast.png      |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/weatherng.png    |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/xmltv2vdr.png    |  Bin 0 -> 2985 bytes
 .../default/menuicons/pluginicons/yaepghg.png      |  Bin 0 -> 2129 bytes
 .../themes/default/menuicons/standardicons/CAM.png |  Bin 0 -> 1619 bytes
 .../default/menuicons/standardicons/Channels.png   |  Bin 0 -> 3561 bytes
 .../default/menuicons/standardicons/Commands.png   |  Bin 0 -> 2428 bytes
 .../themes/default/menuicons/standardicons/DVB.png |  Bin 0 -> 2758 bytes
 .../themes/default/menuicons/standardicons/EPG.png |  Bin 0 -> 2874 bytes
 .../themes/default/menuicons/standardicons/LNB.png |  Bin 0 -> 3739 bytes
 .../menuicons/standardicons/Miscellaneous.png      |  Bin 0 -> 1576 bytes
 .../themes/default/menuicons/standardicons/OSD.png |  Bin 0 -> 1577 bytes
 .../default/menuicons/standardicons/Plugins.png    |  Bin 0 -> 2230 bytes
 .../default/menuicons/standardicons/Recording.png  |  Bin 0 -> 1115 bytes
 .../default/menuicons/standardicons/Recordings.png |  Bin 0 -> 3640 bytes
 .../default/menuicons/standardicons/Replay.png     |  Bin 0 -> 1059 bytes
 .../default/menuicons/standardicons/Restart.png    |  Bin 0 -> 2577 bytes
 .../default/menuicons/standardicons/Schedule.png   |  Bin 0 -> 2056 bytes
 .../default/menuicons/standardicons/Setup.png      |  Bin 0 -> 3179 bytes
 .../menuicons/standardicons/StopRecording.png      |  Bin 0 -> 547 bytes
 .../default/menuicons/standardicons/StopReplay.png |  Bin 0 -> 1595 bytes
 .../default/menuicons/standardicons/Timers.png     |  Bin 0 -> 4113 bytes
 skins/metrixhd/themes/default/theme.xml            |   53 +
 skins/metrixhd/xmlfiles/displayaudiotracks.xml     |   46 +
 skins/metrixhd/xmlfiles/displaychannel.xml         |  320 ++++
 skins/metrixhd/xmlfiles/displaymenu.xml            |  161 ++
 skins/metrixhd/xmlfiles/displaymenuchannels.xml    |  122 ++
 skins/metrixhd/xmlfiles/displaymenudefault.xml     |  185 ++
 skins/metrixhd/xmlfiles/displaymenudetailepg.xml   |  349 ++++
 .../xmlfiles/displaymenudetailrecording.xml        |  326 ++++
 skins/metrixhd/xmlfiles/displaymenudetailtext.xml  |   99 ++
 skins/metrixhd/xmlfiles/displaymenumain.xml        |  322 ++++
 skins/metrixhd/xmlfiles/displaymenurecordings.xml  |  101 ++
 skins/metrixhd/xmlfiles/displaymenuschedules.xml   |  215 +++
 skins/metrixhd/xmlfiles/displaymenusetup.xml       |  110 ++
 skins/metrixhd/xmlfiles/displaymenutimers.xml      |   97 ++
 skins/metrixhd/xmlfiles/displaymessage.xml         |   27 +
 skins/metrixhd/xmlfiles/displayreplay.xml          |  372 ++++
 skins/metrixhd/xmlfiles/displayvolume.xml          |   29 +
 .../plug-weatherforecast-weatherforecast.xml       |  164 ++
 ...eatherforecast-weatherforecastdetailcurrent.xml |   90 +
 ...-weatherforecast-weatherforecastdetaildaily.xml |   90 +
 ...weatherforecast-weatherforecastdetailhourly.xml |   89 +
 skins/nopacity/globals.xml                         |  269 +++
 skins/nopacity/setup.xml                           |   30 +
 skins/nopacity/themes/darkred/icons/clear-day.png  |  Bin 0 -> 4980 bytes
 .../nopacity/themes/darkred/icons/clear-night.png  |  Bin 0 -> 3115 bytes
 skins/nopacity/themes/darkred/icons/cloudy.png     |  Bin 0 -> 6433 bytes
 skins/nopacity/themes/darkred/icons/fog.png        |  Bin 0 -> 3652 bytes
 skins/nopacity/themes/darkred/icons/ico_ac3.png    |  Bin 0 -> 2684 bytes
 .../themes/darkred/icons/ico_activetimer.png       |  Bin 0 -> 1731 bytes
 .../darkred/icons/ico_arrow_left_channelsep.png    |  Bin 0 -> 9782 bytes
 .../darkred/icons/ico_arrow_right_channelsep.png   |  Bin 0 -> 10540 bytes
 .../themes/darkred/icons/ico_channelsep.png        |  Bin 0 -> 958 bytes
 skins/nopacity/themes/darkred/icons/ico_cutted.png |  Bin 0 -> 2007 bytes
 .../themes/darkred/icons/ico_daydelimiter.png      |  Bin 0 -> 2785 bytes
 .../themes/darkred/icons/ico_discusage.png         |  Bin 0 -> 2835 bytes
 .../nopacity/themes/darkred/icons/ico_dolbyoff.png |  Bin 0 -> 4142 bytes
 .../nopacity/themes/darkred/icons/ico_dolbyon.png  |  Bin 0 -> 4547 bytes
 .../themes/darkred/icons/ico_encrypted.png         |  Bin 0 -> 4409 bytes
 skins/nopacity/themes/darkred/icons/ico_ff.png     |  Bin 0 -> 12210 bytes
 skins/nopacity/themes/darkred/icons/ico_ff_1x.png  |  Bin 0 -> 13911 bytes
 skins/nopacity/themes/darkred/icons/ico_ff_2x.png  |  Bin 0 -> 14268 bytes
 skins/nopacity/themes/darkred/icons/ico_ff_3x.png  |  Bin 0 -> 14752 bytes
 skins/nopacity/themes/darkred/icons/ico_ff_off.png |  Bin 0 -> 12656 bytes
 skins/nopacity/themes/darkred/icons/ico_fta.png    |  Bin 0 -> 4081 bytes
 .../nopacity/themes/darkred/icons/ico_hd1080i.png  |  Bin 0 -> 3313 bytes
 skins/nopacity/themes/darkred/icons/ico_hd720p.png |  Bin 0 -> 3248 bytes
 skins/nopacity/themes/darkred/icons/ico_mute.png   |  Bin 0 -> 3075 bytes
 skins/nopacity/themes/darkred/icons/ico_pause.png  |  Bin 0 -> 6316 bytes
 .../themes/darkred/icons/ico_pause_off.png         |  Bin 0 -> 6329 bytes
 skins/nopacity/themes/darkred/icons/ico_play.png   |  Bin 0 -> 10119 bytes
 .../nopacity/themes/darkred/icons/ico_play_off.png |  Bin 0 -> 10871 bytes
 .../themes/darkred/icons/ico_recfolder.png         |  Bin 0 -> 2423 bytes
 skins/nopacity/themes/darkred/icons/ico_recnew.png |  Bin 0 -> 2815 bytes
 skins/nopacity/themes/darkred/icons/ico_recoff.png |  Bin 0 -> 4036 bytes
 skins/nopacity/themes/darkred/icons/ico_recon.png  |  Bin 0 -> 4322 bytes
 skins/nopacity/themes/darkred/icons/ico_rew.png    |  Bin 0 -> 11793 bytes
 skins/nopacity/themes/darkred/icons/ico_rew_1x.png |  Bin 0 -> 13221 bytes
 skins/nopacity/themes/darkred/icons/ico_rew_2x.png |  Bin 0 -> 13842 bytes
 skins/nopacity/themes/darkred/icons/ico_rew_3x.png |  Bin 0 -> 14562 bytes
 .../nopacity/themes/darkred/icons/ico_rew_off.png  |  Bin 0 -> 13211 bytes
 skins/nopacity/themes/darkred/icons/ico_sd576i.png |  Bin 0 -> 3390 bytes
 skins/nopacity/themes/darkred/icons/ico_stereo.png |  Bin 0 -> 4433 bytes
 .../themes/darkred/icons/ico_stereooff.png         |  Bin 0 -> 4224 bytes
 .../nopacity/themes/darkred/icons/ico_stereoon.png |  Bin 0 -> 4606 bytes
 .../themes/darkred/icons/ico_timer_active.png      |  Bin 0 -> 3297 bytes
 .../themes/darkred/icons/ico_timer_inactive.png    |  Bin 0 -> 1527 bytes
 .../themes/darkred/icons/ico_timer_recording.png   |  Bin 0 -> 531 bytes
 skins/nopacity/themes/darkred/icons/ico_txtoff.png |  Bin 0 -> 3783 bytes
 skins/nopacity/themes/darkred/icons/ico_txton.png  |  Bin 0 -> 4012 bytes
 .../nopacity/themes/darkred/icons/ico_vdrlogo.png  |  Bin 0 -> 11135 bytes
 skins/nopacity/themes/darkred/icons/ico_volume.png |  Bin 0 -> 7443 bytes
 .../themes/darkred/icons/partly-cloudy-day.png     |  Bin 0 -> 7028 bytes
 .../themes/darkred/icons/partly-cloudy-night.png   |  Bin 0 -> 6409 bytes
 skins/nopacity/themes/darkred/icons/rain.png       |  Bin 0 -> 6000 bytes
 skins/nopacity/themes/darkred/icons/sleet.png      |  Bin 0 -> 6021 bytes
 skins/nopacity/themes/darkred/icons/snow.png       |  Bin 0 -> 7660 bytes
 skins/nopacity/themes/darkred/icons/wind.png       |  Bin 0 -> 2568 bytes
 .../menuicons/customicons/Applikationen.png        |  Bin 0 -> 2073 bytes
 .../themes/darkred/menuicons/customicons/Audio.png |  Bin 0 -> 2674 bytes
 .../customicons/Aufnahmen-Liste aktualisieren.png  |  Bin 0 -> 3550 bytes
 .../menuicons/customicons/Dienstprogramme.png      |  Bin 0 -> 1581 bytes
 .../darkred/menuicons/customicons/FireFox.png      |  Bin 0 -> 3359 bytes
 .../themes/darkred/menuicons/customicons/Info.png  |  Bin 0 -> 2138 bytes
 .../darkred/menuicons/customicons/Internet.png     |  Bin 0 -> 3801 bytes
 .../darkred/menuicons/customicons/Medien.png       |  Bin 0 -> 3009 bytes
 .../menuicons/customicons/Rechner neu starten.png  |  Bin 0 -> 2886 bytes
 .../menuicons/customicons/Remote wakeup.png        |  Bin 0 -> 859 bytes
 .../darkred/menuicons/customicons/Spiele.png       |  Bin 0 -> 2993 bytes
 .../customicons/System herunterfahren.png          |  Bin 0 -> 2713 bytes
 .../darkred/menuicons/customicons/System.png       |  Bin 0 -> 3227 bytes
 .../themes/darkred/menuicons/customicons/Tools.png |  Bin 0 -> 2355 bytes
 .../darkred/menuicons/customicons/Tunderbird.png   |  Bin 0 -> 3544 bytes
 .../USB Massenspeicher sicher entfernen.png        |  Bin 0 -> 2019 bytes
 .../menuicons/customicons/VDR neu starten.png      |  Bin 0 -> 2577 bytes
 .../themes/darkred/menuicons/customicons/Video.png |  Bin 0 -> 2276 bytes
 .../themes/darkred/menuicons/customicons/Web.png   |  Bin 0 -> 3930 bytes
 .../themes/darkred/menuicons/customicons/XBMC.png  |  Bin 0 -> 3336 bytes
 .../themes/darkred/menuicons/customicons/Xterm.png |  Bin 0 -> 1575 bytes
 .../darkred/menuicons/customicons/audiovideo.png   |  Bin 0 -> 2765 bytes
 .../menuicons/customicons/markad_status.png        |  Bin 0 -> 2865 bytes
 .../menuicons/customicons/schneiden_abbrechen.png  |  Bin 0 -> 3420 bytes
 .../themes/darkred/menuicons/customicons/tux.png   |  Bin 0 -> 3852 bytes
 .../themes/darkred/menuicons/customicons/usb.png   |  Bin 0 -> 1438 bytes
 .../darkred/menuicons/customicons/vdrlogo.png      |  Bin 0 -> 12796 bytes
 .../darkred/menuicons/customicons/yaicon_blue.png  |  Bin 0 -> 1931 bytes
 .../themes/darkred/menuicons/pluginicons/admin.png |  Bin 0 -> 2355 bytes
 .../darkred/menuicons/pluginicons/arghdirector.png |  Bin 0 -> 1824 bytes
 .../darkred/menuicons/pluginicons/autostart.png    |  Bin 0 -> 3320 bytes
 .../darkred/menuicons/pluginicons/avahi4vdr.png    |  Bin 0 -> 3734 bytes
 .../darkred/menuicons/pluginicons/avards.png       |  Bin 0 -> 665 bytes
 .../themes/darkred/menuicons/pluginicons/block.png |  Bin 0 -> 1341 bytes
 .../themes/darkred/menuicons/pluginicons/burn.png  |  Bin 0 -> 4233 bytes
 .../darkred/menuicons/pluginicons/cdplayer.png     |  Bin 0 -> 2258 bytes
 .../darkred/menuicons/pluginicons/chanman.png      |  Bin 0 -> 3224 bytes
 .../themes/darkred/menuicons/pluginicons/check.png |  Bin 0 -> 2141 bytes
 .../menuicons/pluginicons/conflictcheckonly.png    |  Bin 0 -> 3050 bytes
 .../themes/darkred/menuicons/pluginicons/ddci.png  |  Bin 0 -> 2876 bytes
 .../darkred/menuicons/pluginicons/devstatus.png    |  Bin 0 -> 3159 bytes
 .../darkred/menuicons/pluginicons/dummydevice.png  |  Bin 0 -> 2035 bytes
 .../darkred/menuicons/pluginicons/duplicates.png   |  Bin 0 -> 2485 bytes
 .../darkred/menuicons/pluginicons/dvbapi.png       |  Bin 0 -> 2869 bytes
 .../darkred/menuicons/pluginicons/dvbhddevice.png  |  Bin 0 -> 3175 bytes
 .../darkred/menuicons/pluginicons/dvbsddevice.png  |  Bin 0 -> 3588 bytes
 .../darkred/menuicons/pluginicons/dynamite.png     |  Bin 0 -> 3973 bytes
 .../themes/darkred/menuicons/pluginicons/eepg.png  |  Bin 0 -> 3590 bytes
 .../darkred/menuicons/pluginicons/epg2vdr.png      |  Bin 0 -> 4051 bytes
 .../darkred/menuicons/pluginicons/epgsearch.png    |  Bin 0 -> 3228 bytes
 .../menuicons/pluginicons/epgsearchonly.png        |  Bin 0 -> 2983 bytes
 .../darkred/menuicons/pluginicons/epgsync.png      |  Bin 0 -> 3518 bytes
 .../menuicons/pluginicons/externalplayer.png       |  Bin 0 -> 2449 bytes
 .../darkred/menuicons/pluginicons/extrecmenu.png   |  Bin 0 -> 2323 bytes
 .../darkred/menuicons/pluginicons/favorites.png    |  Bin 0 -> 1375 bytes
 .../themes/darkred/menuicons/pluginicons/femon.png |  Bin 0 -> 3331 bytes
 .../themes/darkred/menuicons/pluginicons/fepg.png  |  Bin 0 -> 2406 bytes
 .../darkred/menuicons/pluginicons/filebrowser.png  |  Bin 0 -> 1463 bytes
 .../darkred/menuicons/pluginicons/fritzbox.png     |  Bin 0 -> 1931 bytes
 .../darkred/menuicons/pluginicons/graphlcd.png     |  Bin 0 -> 1421 bytes
 .../darkred/menuicons/pluginicons/graphtft.png     |  Bin 0 -> 1421 bytes
 .../themes/darkred/menuicons/pluginicons/image.png |  Bin 0 -> 2559 bytes
 .../darkred/menuicons/pluginicons/imonlcd.png      |  Bin 0 -> 1421 bytes
 .../themes/darkred/menuicons/pluginicons/iptv.png  |  Bin 0 -> 2774 bytes
 .../darkred/menuicons/pluginicons/lcdproc.png      |  Bin 0 -> 1421 bytes
 .../darkred/menuicons/pluginicons/mailbox.png      |  Bin 0 -> 1904 bytes
 .../darkred/menuicons/pluginicons/makemkv.png      |  Bin 0 -> 1941 bytes
 .../darkred/menuicons/pluginicons/markad.png       |  Bin 0 -> 2865 bytes
 .../themes/darkred/menuicons/pluginicons/mlist.png |  Bin 0 -> 2505 bytes
 .../themes/darkred/menuicons/pluginicons/music.png |  Bin 0 -> 2674 bytes
 .../themes/darkred/menuicons/pluginicons/noepg.png |  Bin 0 -> 3355 bytes
 .../menuicons/pluginicons/nordlichtsepg.png        |  Bin 0 -> 2643 bytes
 .../darkred/menuicons/pluginicons/osdteletext.png  |  Bin 0 -> 1591 bytes
 .../themes/darkred/menuicons/pluginicons/peer.png  |  Bin 0 -> 4175 bytes
 .../themes/darkred/menuicons/pluginicons/play.png  |  Bin 0 -> 1059 bytes
 .../darkred/menuicons/pluginicons/pvrinput.png     |  Bin 0 -> 1976 bytes
 .../menuicons/pluginicons/quickepgsearch.png       |  Bin 0 -> 4781 bytes
 .../themes/darkred/menuicons/pluginicons/radio.png |  Bin 0 -> 2016 bytes
 .../darkred/menuicons/pluginicons/remote.png       |  Bin 0 -> 3807 bytes
 .../darkred/menuicons/pluginicons/remotetimers.png |  Bin 0 -> 4372 bytes
 .../darkred/menuicons/pluginicons/rssreader.png    |  Bin 0 -> 2620 bytes
 .../themes/darkred/menuicons/pluginicons/sc.png    |  Bin 0 -> 2208 bytes
 .../darkred/menuicons/pluginicons/screenshot.png   |  Bin 0 -> 2526 bytes
 .../darkred/menuicons/pluginicons/seduatmo.png     |  Bin 0 -> 2024 bytes
 .../menuicons/pluginicons/skyselectfeeds.png       |  Bin 0 -> 2852 bytes
 .../darkred/menuicons/pluginicons/sleeptimer.png   |  Bin 0 -> 4694 bytes
 .../darkred/menuicons/pluginicons/softhddevice.png |  Bin 0 -> 2410 bytes
 .../menuicons/pluginicons/streamdev-server.png     |  Bin 0 -> 2821 bytes
 .../darkred/menuicons/pluginicons/systeminfo.png   |  Bin 0 -> 1709 bytes
 .../darkred/menuicons/pluginicons/targavfd.png     |  Bin 0 -> 1421 bytes
 .../darkred/menuicons/pluginicons/trayopenng.png   |  Bin 0 -> 1077 bytes
 .../darkred/menuicons/pluginicons/tvguide.png      |  Bin 0 -> 2129 bytes
 .../darkred/menuicons/pluginicons/tvm2vdr.png      |  Bin 0 -> 2622 bytes
 .../darkred/menuicons/pluginicons/tvscraper.png    |  Bin 0 -> 2726 bytes
 .../darkred/menuicons/pluginicons/undelete.png     |  Bin 0 -> 2947 bytes
 .../menuicons/pluginicons/weatherforecast.png      |  Bin 0 -> 1726 bytes
 .../darkred/menuicons/pluginicons/weatherng.png    |  Bin 0 -> 1726 bytes
 .../darkred/menuicons/pluginicons/xmltv2vdr.png    |  Bin 0 -> 2985 bytes
 .../darkred/menuicons/pluginicons/yaepghg.png      |  Bin 0 -> 2129 bytes
 .../themes/darkred/menuicons/standardicons/CAM.png |  Bin 0 -> 1619 bytes
 .../darkred/menuicons/standardicons/Channels.png   |  Bin 0 -> 3561 bytes
 .../darkred/menuicons/standardicons/Commands.png   |  Bin 0 -> 2428 bytes
 .../themes/darkred/menuicons/standardicons/DVB.png |  Bin 0 -> 2758 bytes
 .../themes/darkred/menuicons/standardicons/EPG.png |  Bin 0 -> 2874 bytes
 .../themes/darkred/menuicons/standardicons/LNB.png |  Bin 0 -> 3739 bytes
 .../menuicons/standardicons/Miscellaneous.png      |  Bin 0 -> 1576 bytes
 .../themes/darkred/menuicons/standardicons/OSD.png |  Bin 0 -> 1577 bytes
 .../darkred/menuicons/standardicons/Plugins.png    |  Bin 0 -> 2230 bytes
 .../darkred/menuicons/standardicons/Recording.png  |  Bin 0 -> 1115 bytes
 .../darkred/menuicons/standardicons/Recordings.png |  Bin 0 -> 3640 bytes
 .../darkred/menuicons/standardicons/Replay.png     |  Bin 0 -> 1059 bytes
 .../darkred/menuicons/standardicons/Restart.png    |  Bin 0 -> 2577 bytes
 .../darkred/menuicons/standardicons/Schedule.png   |  Bin 0 -> 2056 bytes
 .../darkred/menuicons/standardicons/Setup.png      |  Bin 0 -> 3179 bytes
 .../menuicons/standardicons/StopRecording.png      |  Bin 0 -> 547 bytes
 .../darkred/menuicons/standardicons/StopReplay.png |  Bin 0 -> 1595 bytes
 .../darkred/menuicons/standardicons/Timers.png     |  Bin 0 -> 4113 bytes
 .../themes/darkred/skinparts/buttonblue.png        |  Bin 0 -> 13646 bytes
 .../themes/darkred/skinparts/buttongreen.png       |  Bin 0 -> 13983 bytes
 .../themes/darkred/skinparts/buttonred.png         |  Bin 0 -> 12620 bytes
 .../themes/darkred/skinparts/buttonyellow.png      |  Bin 0 -> 13701 bytes
 .../themes/darkred/skinparts/channellogoback.png   |  Bin 0 -> 35765 bytes
 .../themes/darkred/skinparts/discpercent.png       |  Bin 0 -> 4553 bytes
 .../darkred/skinparts/displaychannelback.png       |  Bin 0 -> 294017 bytes
 .../themes/darkred/skinparts/displaychanneltop.png |  Bin 0 -> 101277 bytes
 .../themes/darkred/skinparts/displayreplayback.png |  Bin 0 -> 293482 bytes
 .../themes/darkred/skinparts/displayvolume.png     |  Bin 0 -> 55712 bytes
 .../darkred/skinparts/header_mirroredback.png      |  Bin 0 -> 90195 bytes
 .../darkred/skinparts/header_mirroredtop.png       |  Bin 0 -> 40519 bytes
 .../themes/darkred/skinparts/headerback.png        |  Bin 0 -> 90159 bytes
 .../themes/darkred/skinparts/headertop.png         |  Bin 0 -> 40302 bytes
 .../themes/darkred/skinparts/menubutton.png        |  Bin 0 -> 38893 bytes
 .../themes/darkred/skinparts/menubuttonactive.png  |  Bin 0 -> 7365 bytes
 .../themes/darkred/skinparts/menubuttondefault.png |  Bin 0 -> 57696 bytes
 .../darkred/skinparts/menubuttondefaultactive.png  |  Bin 0 -> 56948 bytes
 .../themes/darkred/skinparts/messageError.png      |  Bin 0 -> 105535 bytes
 .../themes/darkred/skinparts/messageInfo.png       |  Bin 0 -> 111664 bytes
 .../themes/darkred/skinparts/messageStatus.png     |  Bin 0 -> 115980 bytes
 .../themes/darkred/skinparts/messageWarning.png    |  Bin 0 -> 110952 bytes
 .../themes/darkred/skinparts/scrollbar.png         |  Bin 0 -> 12553 bytes
 skins/nopacity/themes/darkred/skinparts/signal.png |  Bin 0 -> 2436 bytes
 skins/nopacity/themes/darkred/theme.xml            |   28 +
 skins/nopacity/themes/default/icons/clear-day.png  |  Bin 0 -> 4980 bytes
 .../nopacity/themes/default/icons/clear-night.png  |  Bin 0 -> 3115 bytes
 skins/nopacity/themes/default/icons/cloudy.png     |  Bin 0 -> 6433 bytes
 skins/nopacity/themes/default/icons/fog.png        |  Bin 0 -> 3652 bytes
 skins/nopacity/themes/default/icons/ico_ac3.png    |  Bin 0 -> 2684 bytes
 .../themes/default/icons/ico_activetimer.png       |  Bin 0 -> 1731 bytes
 .../default/icons/ico_arrow_left_channelsep.png    |  Bin 0 -> 11625 bytes
 .../default/icons/ico_arrow_right_channelsep.png   |  Bin 0 -> 10951 bytes
 .../themes/default/icons/ico_channelsep.png        |  Bin 0 -> 958 bytes
 skins/nopacity/themes/default/icons/ico_cutted.png |  Bin 0 -> 2007 bytes
 .../themes/default/icons/ico_daydelimiter.png      |  Bin 0 -> 2785 bytes
 .../themes/default/icons/ico_discusage.png         |  Bin 0 -> 4404 bytes
 .../nopacity/themes/default/icons/ico_dolbyoff.png |  Bin 0 -> 1791 bytes
 .../nopacity/themes/default/icons/ico_dolbyon.png  |  Bin 0 -> 1792 bytes
 .../themes/default/icons/ico_encrypted.png         |  Bin 0 -> 957 bytes
 skins/nopacity/themes/default/icons/ico_ff.png     |  Bin 0 -> 11503 bytes
 skins/nopacity/themes/default/icons/ico_ff_1x.png  |  Bin 0 -> 13093 bytes
 skins/nopacity/themes/default/icons/ico_ff_2x.png  |  Bin 0 -> 13094 bytes
 skins/nopacity/themes/default/icons/ico_ff_3x.png  |  Bin 0 -> 13010 bytes
 skins/nopacity/themes/default/icons/ico_ff_off.png |  Bin 0 -> 12656 bytes
 skins/nopacity/themes/default/icons/ico_fta.png    |  Bin 0 -> 1641 bytes
 .../nopacity/themes/default/icons/ico_hd1080i.png  |  Bin 0 -> 1095 bytes
 skins/nopacity/themes/default/icons/ico_hd720p.png |  Bin 0 -> 2299 bytes
 skins/nopacity/themes/default/icons/ico_mute.png   |  Bin 0 -> 3075 bytes
 skins/nopacity/themes/default/icons/ico_pause.png  |  Bin 0 -> 4959 bytes
 .../themes/default/icons/ico_pause_off.png         |  Bin 0 -> 6329 bytes
 skins/nopacity/themes/default/icons/ico_play.png   |  Bin 0 -> 10550 bytes
 .../nopacity/themes/default/icons/ico_play_off.png |  Bin 0 -> 10871 bytes
 .../themes/default/icons/ico_recfolder.png         |  Bin 0 -> 2423 bytes
 skins/nopacity/themes/default/icons/ico_recnew.png |  Bin 0 -> 2815 bytes
 skins/nopacity/themes/default/icons/ico_recoff.png |  Bin 0 -> 2543 bytes
 skins/nopacity/themes/default/icons/ico_recon.png  |  Bin 0 -> 2776 bytes
 skins/nopacity/themes/default/icons/ico_rew.png    |  Bin 0 -> 12275 bytes
 skins/nopacity/themes/default/icons/ico_rew_1x.png |  Bin 0 -> 13588 bytes
 skins/nopacity/themes/default/icons/ico_rew_2x.png |  Bin 0 -> 13660 bytes
 skins/nopacity/themes/default/icons/ico_rew_3x.png |  Bin 0 -> 13970 bytes
 .../nopacity/themes/default/icons/ico_rew_off.png  |  Bin 0 -> 13211 bytes
 skins/nopacity/themes/default/icons/ico_sd576i.png |  Bin 0 -> 2363 bytes
 skins/nopacity/themes/default/icons/ico_stereo.png |  Bin 0 -> 4433 bytes
 .../themes/default/icons/ico_stereooff.png         |  Bin 0 -> 1944 bytes
 .../nopacity/themes/default/icons/ico_stereoon.png |  Bin 0 -> 1609 bytes
 .../themes/default/icons/ico_timer_active.png      |  Bin 0 -> 3297 bytes
 .../themes/default/icons/ico_timer_inactive.png    |  Bin 0 -> 1527 bytes
 .../themes/default/icons/ico_timer_recording.png   |  Bin 0 -> 531 bytes
 skins/nopacity/themes/default/icons/ico_txtoff.png |  Bin 0 -> 1216 bytes
 skins/nopacity/themes/default/icons/ico_txton.png  |  Bin 0 -> 1214 bytes
 .../nopacity/themes/default/icons/ico_vdrlogo.png  |  Bin 0 -> 11135 bytes
 skins/nopacity/themes/default/icons/ico_volume.png |  Bin 0 -> 7443 bytes
 .../themes/default/icons/partly-cloudy-day.png     |  Bin 0 -> 7028 bytes
 .../themes/default/icons/partly-cloudy-night.png   |  Bin 0 -> 6409 bytes
 skins/nopacity/themes/default/icons/rain.png       |  Bin 0 -> 6000 bytes
 skins/nopacity/themes/default/icons/sleet.png      |  Bin 0 -> 6021 bytes
 skins/nopacity/themes/default/icons/snow.png       |  Bin 0 -> 7660 bytes
 skins/nopacity/themes/default/icons/wind.png       |  Bin 0 -> 2568 bytes
 .../menuicons/customicons/Applikationen.png        |  Bin 0 -> 2073 bytes
 .../themes/default/menuicons/customicons/Audio.png |  Bin 0 -> 2674 bytes
 .../customicons/Aufnahmen-Liste aktualisieren.png  |  Bin 0 -> 3550 bytes
 .../menuicons/customicons/Dienstprogramme.png      |  Bin 0 -> 1581 bytes
 .../default/menuicons/customicons/FireFox.png      |  Bin 0 -> 3359 bytes
 .../themes/default/menuicons/customicons/Info.png  |  Bin 0 -> 2138 bytes
 .../default/menuicons/customicons/Internet.png     |  Bin 0 -> 3801 bytes
 .../default/menuicons/customicons/Medien.png       |  Bin 0 -> 3009 bytes
 .../menuicons/customicons/Rechner neu starten.png  |  Bin 0 -> 2886 bytes
 .../menuicons/customicons/Remote wakeup.png        |  Bin 0 -> 859 bytes
 .../default/menuicons/customicons/Spiele.png       |  Bin 0 -> 2993 bytes
 .../customicons/System herunterfahren.png          |  Bin 0 -> 2713 bytes
 .../default/menuicons/customicons/System.png       |  Bin 0 -> 3227 bytes
 .../themes/default/menuicons/customicons/Tools.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/customicons/Tunderbird.png   |  Bin 0 -> 3544 bytes
 .../USB Massenspeicher sicher entfernen.png        |  Bin 0 -> 2019 bytes
 .../menuicons/customicons/VDR neu starten.png      |  Bin 0 -> 2577 bytes
 .../themes/default/menuicons/customicons/Video.png |  Bin 0 -> 2276 bytes
 .../themes/default/menuicons/customicons/Web.png   |  Bin 0 -> 3930 bytes
 .../themes/default/menuicons/customicons/XBMC.png  |  Bin 0 -> 3336 bytes
 .../themes/default/menuicons/customicons/Xterm.png |  Bin 0 -> 1575 bytes
 .../default/menuicons/customicons/audiovideo.png   |  Bin 0 -> 2765 bytes
 .../menuicons/customicons/markad_status.png        |  Bin 0 -> 2865 bytes
 .../menuicons/customicons/schneiden_abbrechen.png  |  Bin 0 -> 3420 bytes
 .../themes/default/menuicons/customicons/tux.png   |  Bin 0 -> 3852 bytes
 .../themes/default/menuicons/customicons/usb.png   |  Bin 0 -> 1438 bytes
 .../default/menuicons/customicons/vdrlogo.png      |  Bin 0 -> 12796 bytes
 .../default/menuicons/customicons/yaicon_blue.png  |  Bin 0 -> 1931 bytes
 .../themes/default/menuicons/pluginicons/admin.png |  Bin 0 -> 2355 bytes
 .../default/menuicons/pluginicons/arghdirector.png |  Bin 0 -> 1824 bytes
 .../default/menuicons/pluginicons/autostart.png    |  Bin 0 -> 3320 bytes
 .../default/menuicons/pluginicons/avahi4vdr.png    |  Bin 0 -> 3734 bytes
 .../default/menuicons/pluginicons/avards.png       |  Bin 0 -> 665 bytes
 .../themes/default/menuicons/pluginicons/block.png |  Bin 0 -> 1341 bytes
 .../themes/default/menuicons/pluginicons/burn.png  |  Bin 0 -> 4233 bytes
 .../default/menuicons/pluginicons/cdplayer.png     |  Bin 0 -> 2258 bytes
 .../default/menuicons/pluginicons/chanman.png      |  Bin 0 -> 3224 bytes
 .../themes/default/menuicons/pluginicons/check.png |  Bin 0 -> 2141 bytes
 .../menuicons/pluginicons/conflictcheckonly.png    |  Bin 0 -> 3050 bytes
 .../themes/default/menuicons/pluginicons/ddci.png  |  Bin 0 -> 2876 bytes
 .../default/menuicons/pluginicons/devstatus.png    |  Bin 0 -> 3159 bytes
 .../default/menuicons/pluginicons/dummydevice.png  |  Bin 0 -> 2035 bytes
 .../default/menuicons/pluginicons/duplicates.png   |  Bin 0 -> 2485 bytes
 .../default/menuicons/pluginicons/dvbapi.png       |  Bin 0 -> 2869 bytes
 .../default/menuicons/pluginicons/dvbhddevice.png  |  Bin 0 -> 3175 bytes
 .../default/menuicons/pluginicons/dvbsddevice.png  |  Bin 0 -> 3588 bytes
 .../default/menuicons/pluginicons/dynamite.png     |  Bin 0 -> 3973 bytes
 .../themes/default/menuicons/pluginicons/eepg.png  |  Bin 0 -> 3590 bytes
 .../default/menuicons/pluginicons/epg2vdr.png      |  Bin 0 -> 4051 bytes
 .../default/menuicons/pluginicons/epgsearch.png    |  Bin 0 -> 3228 bytes
 .../menuicons/pluginicons/epgsearchonly.png        |  Bin 0 -> 2983 bytes
 .../default/menuicons/pluginicons/epgsync.png      |  Bin 0 -> 3518 bytes
 .../menuicons/pluginicons/externalplayer.png       |  Bin 0 -> 2449 bytes
 .../default/menuicons/pluginicons/extrecmenu.png   |  Bin 0 -> 2323 bytes
 .../default/menuicons/pluginicons/favorites.png    |  Bin 0 -> 1375 bytes
 .../themes/default/menuicons/pluginicons/femon.png |  Bin 0 -> 3331 bytes
 .../themes/default/menuicons/pluginicons/fepg.png  |  Bin 0 -> 2406 bytes
 .../default/menuicons/pluginicons/filebrowser.png  |  Bin 0 -> 1463 bytes
 .../default/menuicons/pluginicons/fritzbox.png     |  Bin 0 -> 1931 bytes
 .../default/menuicons/pluginicons/graphlcd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/graphtft.png     |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/image.png |  Bin 0 -> 2559 bytes
 .../default/menuicons/pluginicons/imonlcd.png      |  Bin 0 -> 1421 bytes
 .../themes/default/menuicons/pluginicons/iptv.png  |  Bin 0 -> 2774 bytes
 .../default/menuicons/pluginicons/lcdproc.png      |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/mailbox.png      |  Bin 0 -> 1904 bytes
 .../default/menuicons/pluginicons/makemkv.png      |  Bin 0 -> 1941 bytes
 .../default/menuicons/pluginicons/markad.png       |  Bin 0 -> 2865 bytes
 .../themes/default/menuicons/pluginicons/mlist.png |  Bin 0 -> 2505 bytes
 .../themes/default/menuicons/pluginicons/music.png |  Bin 0 -> 2674 bytes
 .../themes/default/menuicons/pluginicons/noepg.png |  Bin 0 -> 3355 bytes
 .../menuicons/pluginicons/nordlichtsepg.png        |  Bin 0 -> 2643 bytes
 .../default/menuicons/pluginicons/osdteletext.png  |  Bin 0 -> 1591 bytes
 .../themes/default/menuicons/pluginicons/peer.png  |  Bin 0 -> 4175 bytes
 .../themes/default/menuicons/pluginicons/play.png  |  Bin 0 -> 1059 bytes
 .../default/menuicons/pluginicons/pvrinput.png     |  Bin 0 -> 1976 bytes
 .../menuicons/pluginicons/quickepgsearch.png       |  Bin 0 -> 4781 bytes
 .../themes/default/menuicons/pluginicons/radio.png |  Bin 0 -> 2016 bytes
 .../default/menuicons/pluginicons/remote.png       |  Bin 0 -> 3807 bytes
 .../default/menuicons/pluginicons/remotetimers.png |  Bin 0 -> 4372 bytes
 .../default/menuicons/pluginicons/rssreader.png    |  Bin 0 -> 2620 bytes
 .../themes/default/menuicons/pluginicons/sc.png    |  Bin 0 -> 2208 bytes
 .../default/menuicons/pluginicons/screenshot.png   |  Bin 0 -> 2526 bytes
 .../default/menuicons/pluginicons/seduatmo.png     |  Bin 0 -> 2024 bytes
 .../menuicons/pluginicons/skyselectfeeds.png       |  Bin 0 -> 2852 bytes
 .../default/menuicons/pluginicons/sleeptimer.png   |  Bin 0 -> 4694 bytes
 .../default/menuicons/pluginicons/softhddevice.png |  Bin 0 -> 2410 bytes
 .../menuicons/pluginicons/streamdev-server.png     |  Bin 0 -> 2821 bytes
 .../default/menuicons/pluginicons/systeminfo.png   |  Bin 0 -> 1709 bytes
 .../default/menuicons/pluginicons/targavfd.png     |  Bin 0 -> 1421 bytes
 .../default/menuicons/pluginicons/trayopenng.png   |  Bin 0 -> 1077 bytes
 .../default/menuicons/pluginicons/tvguide.png      |  Bin 0 -> 2129 bytes
 .../default/menuicons/pluginicons/tvm2vdr.png      |  Bin 0 -> 2622 bytes
 .../default/menuicons/pluginicons/tvscraper.png    |  Bin 0 -> 2726 bytes
 .../default/menuicons/pluginicons/undelete.png     |  Bin 0 -> 2947 bytes
 .../menuicons/pluginicons/weatherforecast.png      |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/weatherng.png    |  Bin 0 -> 1726 bytes
 .../default/menuicons/pluginicons/xmltv2vdr.png    |  Bin 0 -> 2985 bytes
 .../default/menuicons/pluginicons/yaepghg.png      |  Bin 0 -> 2129 bytes
 .../themes/default/menuicons/standardicons/CAM.png |  Bin 0 -> 1619 bytes
 .../default/menuicons/standardicons/Channels.png   |  Bin 0 -> 3561 bytes
 .../default/menuicons/standardicons/Commands.png   |  Bin 0 -> 2428 bytes
 .../themes/default/menuicons/standardicons/DVB.png |  Bin 0 -> 2758 bytes
 .../themes/default/menuicons/standardicons/EPG.png |  Bin 0 -> 2874 bytes
 .../themes/default/menuicons/standardicons/LNB.png |  Bin 0 -> 3739 bytes
 .../menuicons/standardicons/Miscellaneous.png      |  Bin 0 -> 1576 bytes
 .../themes/default/menuicons/standardicons/OSD.png |  Bin 0 -> 1577 bytes
 .../default/menuicons/standardicons/Plugins.png    |  Bin 0 -> 2230 bytes
 .../default/menuicons/standardicons/Recording.png  |  Bin 0 -> 1115 bytes
 .../default/menuicons/standardicons/Recordings.png |  Bin 0 -> 3640 bytes
 .../default/menuicons/standardicons/Replay.png     |  Bin 0 -> 1059 bytes
 .../default/menuicons/standardicons/Restart.png    |  Bin 0 -> 2577 bytes
 .../default/menuicons/standardicons/Schedule.png   |  Bin 0 -> 2056 bytes
 .../default/menuicons/standardicons/Setup.png      |  Bin 0 -> 3179 bytes
 .../menuicons/standardicons/StopRecording.png      |  Bin 0 -> 547 bytes
 .../default/menuicons/standardicons/StopReplay.png |  Bin 0 -> 1595 bytes
 .../default/menuicons/standardicons/Timers.png     |  Bin 0 -> 4113 bytes
 .../themes/default/skinparts/buttonblue.png        |  Bin 0 -> 13973 bytes
 .../themes/default/skinparts/buttongreen.png       |  Bin 0 -> 14537 bytes
 .../themes/default/skinparts/buttonred.png         |  Bin 0 -> 13011 bytes
 .../themes/default/skinparts/buttonyellow.png      |  Bin 0 -> 13919 bytes
 .../themes/default/skinparts/channellogoback.png   |  Bin 0 -> 35436 bytes
 .../themes/default/skinparts/discpercent.png       |  Bin 0 -> 4553 bytes
 .../default/skinparts/displaychannelback.png       |  Bin 0 -> 324403 bytes
 .../themes/default/skinparts/displaychanneltop.png |  Bin 0 -> 8987 bytes
 .../themes/default/skinparts/displayreplayback.png |  Bin 0 -> 321112 bytes
 .../themes/default/skinparts/displayreplaytop.png  |  Bin 0 -> 4881 bytes
 .../themes/default/skinparts/displayvolume.png     |  Bin 0 -> 58704 bytes
 .../themes/default/skinparts/headertop.png         |  Bin 0 -> 5295 bytes
 .../themes/default/skinparts/menubutton.png        |  Bin 0 -> 9360 bytes
 .../themes/default/skinparts/menubuttonactive.png  |  Bin 0 -> 11656 bytes
 .../themes/default/skinparts/menubuttondefault.png |  Bin 0 -> 60910 bytes
 .../default/skinparts/menubuttondefaultactive.png  |  Bin 0 -> 64422 bytes
 .../themes/default/skinparts/menubuttontop.png     |  Bin 0 -> 3772 bytes
 .../themes/default/skinparts/messageError.png      |  Bin 0 -> 114302 bytes
 .../themes/default/skinparts/messageInfo.png       |  Bin 0 -> 120782 bytes
 .../themes/default/skinparts/messageStatus.png     |  Bin 0 -> 120430 bytes
 .../themes/default/skinparts/messageWarning.png    |  Bin 0 -> 116747 bytes
 .../themes/default/skinparts/scrollbar.png         |  Bin 0 -> 11893 bytes
 skins/nopacity/themes/default/skinparts/signal.png |  Bin 0 -> 2436 bytes
 skins/nopacity/themes/default/theme.xml            |   28 +
 skins/nopacity/xmlfiles/displayaudiotracks.xml     |   46 +
 skins/nopacity/xmlfiles/displaychannel.xml         |  225 +++
 skins/nopacity/xmlfiles/displaymenu.xml            |  188 ++
 skins/nopacity/xmlfiles/displaymenuchannels.xml    |  127 ++
 skins/nopacity/xmlfiles/displaymenudefault.xml     |   65 +
 skins/nopacity/xmlfiles/displaymenudetailepg.xml   |  257 +++
 .../xmlfiles/displaymenudetailrecording.xml        |  235 +++
 skins/nopacity/xmlfiles/displaymenudetailtext.xml  |   25 +
 skins/nopacity/xmlfiles/displaymenumain.xml        |  152 ++
 skins/nopacity/xmlfiles/displaymenurecordings.xml  |   94 +
 skins/nopacity/xmlfiles/displaymenuschedules.xml   |  235 +++
 skins/nopacity/xmlfiles/displaymenusetup.xml       |   45 +
 skins/nopacity/xmlfiles/displaymenutimers.xml      |  102 ++
 skins/nopacity/xmlfiles/displaymessage.xml         |   28 +
 skins/nopacity/xmlfiles/displayreplay.xml          |  342 ++++
 skins/nopacity/xmlfiles/displayvolume.xml          |   40 +
 .../plug-weatherforecast-weatherforecast.xml       |  142 ++
 ...eatherforecast-weatherforecastdetailcurrent.xml |   69 +
 ...-weatherforecast-weatherforecastdetaildaily.xml |   71 +
 ...weatherforecast-weatherforecastdetailhourly.xml |   70 +
 skinskeleton/globals.xml                           |   37 +
 skinskeleton/setup.xml                             |   28 +
 skinskeleton/themes/default/theme.xml              |   37 +
 skinskeleton/xmlfiles/displayaudiotracks.xml       |   30 +
 skinskeleton/xmlfiles/displaychannel.xml           |  213 +++
 skinskeleton/xmlfiles/displaymenu.xml              |  101 ++
 skinskeleton/xmlfiles/displaymenuchannels.xml      |   81 +
 skinskeleton/xmlfiles/displaymenudefault.xml       |   37 +
 skinskeleton/xmlfiles/displaymenudetailepg.xml     |  184 ++
 .../xmlfiles/displaymenudetailrecording.xml        |  180 ++
 skinskeleton/xmlfiles/displaymenudetailtext.xml    |    9 +
 skinskeleton/xmlfiles/displaymenumain.xml          |  141 ++
 skinskeleton/xmlfiles/displaymenurecordings.xml    |   65 +
 skinskeleton/xmlfiles/displaymenuschedules.xml     |   96 ++
 skinskeleton/xmlfiles/displaymenusetup.xml         |   28 +
 skinskeleton/xmlfiles/displaymenutimers.xml        |   67 +
 skinskeleton/xmlfiles/displaymessage.xml           |   19 +
 skinskeleton/xmlfiles/displayreplay.xml            |  252 +++
 skinskeleton/xmlfiles/displayvolume.xml            |   18 +
 themes/blackhole-default.theme                     |    1 +
 themes/nopacity-darkred.theme                      |    1 +
 themes/nopacity-default.theme                      |    1 +
 views/displayaudiotracksview.c                     |   79 +
 views/displayaudiotracksview.h                     |   24 +
 views/displaychannelview.c                         |  564 ++++++
 views/displaychannelview.h                         |   58 +
 views/displaymenudetailview.c                      |  871 ++++++++++
 views/displaymenudetailview.h                      |   52 +
 views/displaymenuitemcurrentview.c                 |  724 ++++++++
 views/displaymenuitemcurrentview.h                 |  108 ++
 views/displaymenuitemview.c                        |  870 ++++++++++
 views/displaymenuitemview.h                        |  154 ++
 views/displaymenulistview.c                        |  243 +++
 views/displaymenulistview.h                        |   36 +
 views/displaymenurootview.c                        |  627 +++++++
 views/displaymenurootview.h                        |   75 +
 views/displaymenutabview.c                         |  126 ++
 views/displaymenutabview.h                         |   27 +
 views/displaymenuview.c                            |  662 +++++++
 views/displaymenuview.h                            |   71 +
 views/displaymessageview.c                         |   53 +
 views/displaymessageview.h                         |   20 +
 views/displayreplayonpauseview.c                   |  107 ++
 views/displayreplayonpauseview.h                   |   20 +
 views/displayreplayview.c                          |  478 ++++++
 views/displayreplayview.h                          |   42 +
 views/displayvolumeview.c                          |   55 +
 views/displayvolumeview.h                          |   21 +
 views/view.c                                       |  839 +++++++++
 views/view.h                                       |   73 +
 views/viewhelpers.c                                |  457 +++++
 views/viewhelpers.h                                |   25 +
 1454 files changed, 95052 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..19526e0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.dependencies
+*.o
+*.so
+*.orig
+*.rej
+*.mo
+*.pot
+*.tgz
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..f90922e
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/HISTORY b/HISTORY
new file mode 100644
index 0000000..fe62c28
--- /dev/null
+++ b/HISTORY
@@ -0,0 +1,205 @@
+VDR Plugin 'skindesigner' Revision History
+---------------------------------------
+
+2014-09-27: Version 0.0.1
+
+- Initial revision.
+
+Version 0.0.2
+
+- added some more tokens with more detailed audio information in
+  displaychannel -> statusinfo
+- added hasVPS for current scheduling in displaychannel -> epginfo
+- added common channel logo path for all skins
+- changed skin handling so that every skin is directly shown in VDR OSD Menu
+- added Theme support, each skin can now have various themes
+- fixed a crash if no skindesigner skins are found and plugin setup menu is
+  called from another skin
+- added {durationhours} and {durationminutes} tokens in several view elements
+- added discusage icons to menu header view element so that it discusage can be
+  displayed in every menu view
+- added numeric day, month and year tokens in different view elements
+- support for global variables type "double"
+- added setup options to configure rerun display behaviour
+- changed display of menu lists, do flush first after complete rendering
+- added support for custom tokens in dislaychannel
+- added vps token in menudetailepg
+- implemented cSDDisplayMenu::GetTextAreaFont()
+- introduced new viewelement audioinfo in displaychannel
+- added setup option to choose Menu Item display method between "at one go" and
+  "after one another"
+- fixed bug that new skin was not properly loaded sometimes when skin was
+  changed in OSD Setup menu
+- fixed bug that new font was displayed first after VDR restart when font was
+  changed in OSD Setup menu
+- display always newest recording of folders in recordings list,
+  thanks@ Lars Hanisch for providing the patch
+- added extented recording information
+- added token {nummenuitem} as number of item for every list, value starts
+  with 1
+- fixed bug that x and y of subviews was not respected
+- if a subview is completely not set in a skin, the default menu is used
+- fixed a bug if displaydetailedtext is called without correct menucat (mailbox
+  plugin)
+- implemented function drawslope, see Wiki for documentation
+- using default menu list in case an invalid MenuCategory is set
+- added device info in displaychannel, example in metrixHD
+- improved menu icon display, additionally using menu cat
+- changed devices list, device numbers start with 0
+- fixed bug that hasposter is only true if poster really exists
+- no absolute pathes allowed for image type "image", path has to start with
+  {ressourcedir}
+
+Version 0.0.3
+
+- added tokens for current video and audio bitrate in displaychannel.
+  Thx @rofafor for the original code
+  in the femon plugin and _Martin_ for extracting the code in skinflatplus
+- changed skin metrixHD to display bitrate infos
+- added "active" Token for cutting marks so that a mark can be displayed in a
+  dedicated way if current position in replay exactly hits the mark
+- added {channelname}, {channelid}, {channellogoexists} for all schedules list
+  and current views
+- added printf function for <drawtext>, see Wiki for documentation
+- removed code for displaying bitrates in displaychannel again because of
+  incompatibility with dvbapi Plugin
+- optimized performance when creating a menu list
+- fixed Bug that displaychannel was not shown after closing displaymenu with
+  "backspace" (with active menuorg plugin)
+- fixed Bug with menuselection Patch
+- added tokens {month}, {monthname} and {year} in displaymenutimers listitem and 
+  currentitem
+- added dedicated tokens for posters and banners in <srapercontent> in 
+  displaychannel and displayreplay
+- added Plugin Interface
+- fixed crash when clearing a message in displaychannel and displayreplay
+- fixed positioning of scaled video window if borders are configured
+
+Version 0.0.4
+
+- added SVG Support - thanks to Manuel Reimer!
+
+Version 0.0.5
+
+- added {channelnumber} and {channelname} Tokens in displaymenudetailepg 
+  detailheader
+- fixed {hasicon} Token in displaymenu header
+- added {newmails} Token in displaychannel statusinfo, mailbox plugin
+  has to be installed
+- clearing displaymessage if it is called without text
+- changed handling of channel logos, width and height are now mandatory
+
+Version 0.0.6
+
+- fixed Bug that channel info was not shown when displaying reruns with
+  epgsearch
+- using VDRs OSD Language instead of system language
+- added compatibility to librsvg >= 2.36.1
+- added onpause and onpausemodeonly in displayreplay
+- added {channellogoexists} Token everywhere where {channelid} is available
+
+Version 0.0.7
+
+- fixed bug that global double vars are not working
+
+Version 0.0.8
+
+- added {channelnumber} Token in displaymenuschedules
+- displaying default menu list if menu category is set to another category
+  but SetItem() is called
+
+Version 0.1.0
+
+- fixed display of color buttons in detailed views
+- fixed possible Nullpointer access in displaymenurootview 
+- added currentschedule viewelement in displaymenumain
+- fixed bug that wrong channel was shown in header of whatson
+  if entering from whatsonnow
+- added customtokens view element in displaymenumain
+- added automatic determination of custom int tokens
+
+Version 0.1.1
+
+- added "temperatures" view element in displaymenumainview to display
+  cpu and gpu temperature in main menu (scripts to get temperatures
+  borrowed from skinflatplus). scripts to get temperatures have to be
+  adapted according the system setup.
+- added "time" view element in displaychannelview, displayreplay view
+  and displaymenuviews to display current time with seconds precision
+- added {currenttab}, {prevtab}, {nexttab} Tokens in <tablabels> view
+  elements
+- fixed bug that in displaytracks the audio tracks are not positioned
+  correctly
+- fixed some minor bugs
+- added skin "blackhole"
+- added customtokens view element in displayreplay
+- optimised some settings in skin blackhole
+
+
+Version 0.1.2
+
+- display only active remote timers in main menu
+- fixed two possible null pointer accesses in displaymenurootview
+- fixed bug that EPGSearch Favorites Menu was not displayed correctly,
+  introduced "whatsonfavorites" Token in displaymenuschedules
+- fixed again display of channel in schedules header
+- added now and next in blackhole channels menu
+- fixed bug that epg quicksearch menu was not displayed properly
+- added weatherforecast templates
+- some fixes for plugins which use skindesigner template interface
+
+Version 0.1.3
+
+- added {epgname} token for recordings in currentview and detailedview.
+- fixed crash when start recording with extrecmenu or remotetimers
+
+Version 0.1.4
+
+- fixed token volpercent in nopacity and metrixhd
+- added "empty" operator additionally to "isset" to check in a condition
+  if a string token is set
+- added token {nummenuitem} for plugin menu lists
+- fixed bug that custom int tokens were not considered in conditions
+- added possibility for skinners to define a skin setup, skin setup can
+  be done in plugin setup menu
+- made skin blackhole configurable, adapted xml files
+
+Version 0.1.5
+
+- removed suppression of first DisplayChannel call after VDR start
+- fixed "flickering" bug with vdr2.1.7
+- fixed bug that osd language was not set correctly which caused one
+  additional skin caching at startup
+
+Version 0.1.6
+
+- fixed bug that onpause view potentially starts during setting cutting
+  marks
+- made all globals variables private
+- introduced globals.xml in skinpath, theme.xml in theme path. theme.xml
+  adds its vakues and potentially overrides valués from globals.xml
+- check icons, menuicons and skinparts additionally directly in skin folder
+  to allow default images which can be used for all skins
+- fixed bug that setup variables are sometimes not identified in case two 
+  or more skin names start identically
+
+Version 0.2.0
+
+- fixed Bug that double vars were not handled correctly
+- fixed Bug that calling mplayer plugin via keymacros.conf causes segfault
+
+Version 0.2.1
+
+- fixed bug that global tokens were not parsed correctly
+- added finnish translation
+- some more nopacity optimizations - thanx at utility
+- added possibiliy to use submenus in the skin setup menus
+- reloading active skin directly after closing setup menu so that
+  changes of setup parameters are immediately in use 
+
+Version 0.2.2
+
+- added replay onpause view in blackhole skin
+- implemented SetTitle() in displayreplay
+- fixed header icon for plugin menus
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d2d77aa
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,182 @@
+#
+# Makefile for a Video Disk Recorder plugin
+#
+# $Id$ Makefile 1.0 2014/07/24 louis Exp $
+
+# Config
+CONFIG := #-DDOPROFILE #           enable profiling code
+
+# The official name of this plugin.
+PLUGIN = skindesigner
+
+### The version number of this plugin (taken from the main source file):
+VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
+
+### The directory environment:
+
+# Use package data if installed...otherwise assume we're under the VDR source directory:
+PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
+LIBDIR = $(call PKGCFG,libdir)
+LOCDIR = $(call PKGCFG,locdir)
+PLGCFG  = $(call PKGCFG,plgcfg)
+VDRCONFDIR = $(call PKGCFG,configdir)
+PLGRESDIR = $(call PKGCFG,resdir)/plugins/$(PLUGIN)
+TMPDIR ?= /tmp
+SKINDESIGNER_SCRIPTDIR ?= $(LIBDIR)/$(PLUGIN)/scripts
+
+### The compiler options:
+export CFLAGS   = $(call PKGCFG,cflags)
+export CXXFLAGS = $(call PKGCFG,cxxflags)
+
+### Allow user defined options to overwrite defaults:
+
+-include $(PLGCFG)
+
+### The version number of VDR's plugin API:
+APIVERSION = $(call PKGCFG,apiversion)
+
+### The name of the distribution archive:
+ARCHIVE = $(PLUGIN)-$(VERSION)
+PACKAGE = vdr-$(ARCHIVE)
+
+### The name of the shared object file:
+SOFILE = libvdr-$(PLUGIN).so
+
+### Includes and Defines and Dependencies:
+DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' $(CONFIG)
+DEFINES += $(shell xml2-config --cflags)
+DEFINES += -DSCRIPTFOLDER='"$(SKINDESIGNER_SCRIPTDIR)"'
+
+INCLUDES += $(shell pkg-config --cflags freetype2 fontconfig)
+
+INCLUDES += $(shell pkg-config --cflags librsvg-2.0 cairo-png) -ljpeg
+LIBS += $(shell pkg-config --libs librsvg-2.0 cairo-png) -ljpeg
+
+LIBS += $(shell xml2-config --libs)
+
+### The object files:
+OBJS = $(PLUGIN).o \
+       config.o \
+       setup.o \
+       designer.o \
+       displaychannel.o \
+       displaymenu.o \
+       displaymessage.o \
+       displayreplay.o \
+       displaytracks.o \
+       displayvolume.o \
+       libcore/pixmapcontainer.o \
+       libcore/fontmanager.o \
+       libcore/imagecache.o \
+       libcore/helpers.o \
+       libcore/imageloader.o \
+       libcore/recfolderinfo.o \
+       libcore/skinsetup.o \
+       libcore/extrecinfo.o \
+       libcore/timers.o \
+       libtemplate/globals.o \
+       libtemplate/parameter.o \
+       libtemplate/template.o \
+       libtemplate/templateview.o \
+       libtemplate/templateviewelement.o \
+       libtemplate/templateviewlist.o \
+       libtemplate/templatepixmap.o \
+       libtemplate/templateviewtab.o \
+       libtemplate/templatefunction.o \
+       libtemplate/templateloopfunction.o \
+       libtemplate/xmlparser.o \
+       views/view.o \
+       views/viewhelpers.o \
+       views/displaychannelview.o \
+       views/displaymenurootview.o \
+       views/displaymenuview.o \
+       views/displaymenulistview.o \
+       views/displaymenuitemview.o \
+       views/displaymenuitemcurrentview.o \
+       views/displaymenudetailview.o \
+       views/displaymenutabview.o \
+       views/displaymessageview.o \
+       views/displayreplayview.o \
+       views/displayreplayonpauseview.o \
+       views/displayvolumeview.o \
+       views/displayaudiotracksview.o
+
+### The main target:
+
+all: $(SOFILE) i18n
+
+### Implicit rules:
+
+%.o: %.c
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
+
+### Dependencies:
+
+MAKEDEP = $(CXX) -MM -MG
+DEPFILE = .dependencies
+$(DEPFILE): Makefile
+	@$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
+
+-include $(DEPFILE)
+
+### Internationalization (I18N):
+
+PODIR     = po
+I18Npo    = $(wildcard $(PODIR)/*.po)
+I18Nmo    = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs  = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
+I18Npot   = $(PODIR)/$(PLUGIN).pot
+
+%.mo: %.po
+	msgfmt -c -o $@ $<
+
+$(I18Npot): $(wildcard *.c)
+	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
+
+%.po: $(I18Npot)
+	msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
+	@touch $@
+
+$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+	install -D -m644 $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmo) $(I18Npot)
+
+install-i18n: $(I18Nmsgs)
+
+### Targets:
+
+$(SOFILE): $(OBJS)
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
+
+install-lib: $(SOFILE)
+	install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
+
+install-themes:
+	mkdir -p $(DESTDIR)$(VDRCONFDIR)/themes
+	cp themes/* $(DESTDIR)$(VDRCONFDIR)/themes
+
+install-skins:
+	mkdir -p $(DESTDIR)$(PLGRESDIR)/skins
+	cp -r skins/* $(DESTDIR)$(PLGRESDIR)/skins
+	mkdir -p $(DESTDIR)$(PLGRESDIR)/dtd
+	cp -r dtd/* $(DESTDIR)$(PLGRESDIR)/dtd
+
+install-scripts:
+	mkdir -p $(DESTDIR)$(SKINDESIGNER_SCRIPTDIR)
+	cp -r scripts/* $(DESTDIR)$(SKINDESIGNER_SCRIPTDIR)
+
+install: install-lib install-i18n install-themes install-skins install-scripts
+
+dist: $(I18Npo) clean
+	@-rm -rf $(TMPDIR)/$(ARCHIVE)
+	@mkdir $(TMPDIR)/$(ARCHIVE)
+	@cp -a * $(TMPDIR)/$(ARCHIVE)
+	@tar czf $(PACKAGE).tgz --exclude .git* --exclude *.o --exclude *.rej --exclude *.orig -C $(TMPDIR) $(ARCHIVE)
+	@-rm -rf $(TMPDIR)/$(ARCHIVE)
+	@echo Distribution package created as $(PACKAGE).tgz
+
+clean:
+	@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
+	@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
diff --git a/README b/README
new file mode 100644
index 0000000..0832271
--- /dev/null
+++ b/README
@@ -0,0 +1,108 @@
+This is a "plugin" for the Video Disk Recorder (VDR).
+
+Written by:                  Louis Braun <louis DOT braun AT gmx DOT de>
+
+Project's homepage:          http://projects.vdr-developer.org/projects/plg-skindesigner
+
+Latest version: http://projects.vdr-developer.org/projects/plg-skindesigner/files
+GIT repository: git clone git://projects.vdr-developer.org/vdr-plugin-skindesigner.git
+
+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.
+See the file COPYING for more information.
+
+Description
+-----------
+
+Skindesigner is a VDR skin engine that displays XML based Skins.
+
+Currently two XML Skins (MetrixHD and nOpacity freestyle) are included in
+<pluginsourcedir>/skins/
+
+Requirements
+------------
+
+- VDR version >= 2.0.0
+
+- cairo
+
+- librsvg-2 >= 2.36.0
+
+- libxml2
+
+- for scaling the video picture to fit into the VDR menu window please use
+  softhddevice plugin revision 87c1c7be (2013-01-01) or newer.
+
+- epgsearch Git since commit ba7c6277 (2013-01-03) to correctly replace the
+  schedules menu with epgsearch
+
+Installation
+------------
+
+After "normal" Plugin installation you have to care about the paths for the
+XML skins and epg images. The following paths can be set at startup:
+
+-s <SKINPATH>, --skinpath=<SKINPATH>
+    Path to the XML skins (Default: <ResourceDirectory>/plugins/skindesigner/skins/)
+
+-l <LOGOPATH>, --logopath=<LOGOPATH>
+    Path to common logo set for all skins (Default: <ResourceDirectory>/plugins/skindesigner/logos/)
+
+-e path, --epgimages=path
+    Path to the epgimages (Default: <CacheDirectory>/epgimages/)
+
+ResourceDirectory and CacheDirectory are taken from your VDR configuration
+(make.config or vdr.pc).
+
+During a "make install" the included skins are automatically copied from
+<SkinSourceDirectory>/skins/ to the configured path.
+
+For S2-6400 Users: Disable High Level OSD, otherwise the plugin will not be
+loaded because lack of true color support
+
+For Xine-Plugin Users: Set "Blend scaled Auto" as OSD display mode to achieve
+an suitable true color OSD.
+
+For Xineliboutput Users: Start vdr-sxfe with the --hud option enabled
+
+Since the default skin MetrixHD uses VDROpenSans as font which is not installed
+per default, you may want to install this font (included in
+<SkinSourceDirectory>/fonts/) first. Otherwise the inside VDRs OSD menu
+configured vdrOsd Font is used as default.
+
+Channel Logos
+-------------
+
+Since each XML skin is responsible for it's used channel logos, skindesigner
+searches for channel logos only in the skin dependend directory
+
+<ResourceDirectory>/plugins/skindesigner/skins/<skinname>/logos
+
+Each copy your used logos directly to this directory or set a symbolic link to
+a common channellogo directory.
+
+I recommend to use channel logos from https://github.com/3PO/Senderlogos
+To download them just change in the directory you want to place the logos
+and do a:
+git clone https://github.com/3PO/Senderlogos.git logos
+An update of the logos can then be done with a "git pull" just inside this
+directory.
+
+In this logo pack all files are named only with lower case letters.
+Skindesigner uses the channel name CONVERTED TO LOWER CASE LETTERS to search
+for an appropriate channel logo. With this, approximately 90% of the channel
+logos should work immediately after placing the channel logos in the correct
+place. So if you have to change the name of a channel logo (may be by inserting
+a space or a hyphen) so that it fits to the channel name, only use lower case
+letters, and not the name of the channel with upper and lower letters as
+displayed inside VDR.
+If no logo is found for the channel name, additionally a search for a logo
+named as the ChannelID is performed. Analog to the channel name the ChannelID
+is also converted to lower case letters. This allows channel logos for channels
+with changing names (for instance Sky Feed Channels).
+Additional hint: some channels have slashes in their name (in germany
+nick/comedy for instance).
+In this example, as a dirty hack just create a folder in your channel logo
+directory named "nick" and place an image named "comedy.png" inside this folder.
diff --git a/config.c b/config.c
new file mode 100644
index 0000000..8b018f7
--- /dev/null
+++ b/config.c
@@ -0,0 +1,333 @@
+#include "config.h"
+#include "libcore/helpers.h"
+#include "libcore/imageloader.h"
+
+cDesignerConfig::cDesignerConfig() {
+    tmplGlobals = NULL;
+    epgImagePathSet = false;
+    skinPathSet = false;
+    logoPathSet = false;
+    //Common
+    numLogosPerSizeInitial = 30;
+    limitLogoCache = 1;
+    numLogosMax = 200;
+    debugImageLoading = 0;
+    replaceDecPoint = false;
+    //settings for rerun display
+    rerunAmount = 10;
+    rerunDistance = 2;
+    rerunMaxChannel = 0;
+    //menu display style, display menu items 
+    //one after each other or in one step
+    blockFlush = 1;
+    //remember current skin and theme, osd size and osd fonts
+    SetSkin();
+    SetOSDSize();
+    SetOSDFonts();
+    osdLanguage = "";
+    setupCloseDoReload = false;
+}
+
+cDesignerConfig::~cDesignerConfig() {
+    ClearSkinSetups();
+}
+
+void cDesignerConfig::SetPathes(void) {
+    if (!skinPathSet)
+        skinPath = cString::sprintf("%s/skins/", cPlugin::ResourceDirectory(PLUGIN_NAME_I18N));
+    if (!logoPathSet) 
+        logoPath = cString::sprintf("%s/logos/", cPlugin::ResourceDirectory(PLUGIN_NAME_I18N));
+    if (!epgImagePathSet)
+        epgImagePath = cString::sprintf("%s/epgimages/", cPlugin::CacheDirectory(PLUGIN_NAME_I18N));
+
+    dsyslog("skindesigner: using Skin Directory %s", *skinPath);
+    dsyslog("skindesigner: using common ChannelLogo Directory %s", *logoPath);
+    dsyslog("skindesigner: using EPG Images Directory %s", *epgImagePath);
+}
+
+void cDesignerConfig::SetSkinPath(cString path) {
+    skinPath = CheckSlashAtEnd(*path);
+    skinPathSet = true;
+}
+
+void cDesignerConfig::SetLogoPath(cString path) {
+    logoPath = CheckSlashAtEnd(*path);
+    logoPathSet = true;
+}
+
+void cDesignerConfig::SetEpgImagePath(cString path) {
+    epgImagePath = CheckSlashAtEnd(*path);
+    epgImagePathSet = true;
+}
+
+void cDesignerConfig::ReadSkins(void) {
+    DIR *folder = NULL;
+    struct dirent *dirEntry;
+    folder = opendir(skinPath);
+    if (!folder) {
+        esyslog("skindesigner: no skins found in %s", *skinPath);
+        return;
+    }
+    while (dirEntry = readdir(folder)) {
+        string dirEntryName = dirEntry->d_name;
+        int dirEntryType = dirEntry->d_type;
+        if (!dirEntryName.compare(".") || !dirEntryName.compare("..") || dirEntryType != DT_DIR)
+            continue;
+        skins.push_back(dirEntryName);
+    }
+    dsyslog("skindesigner %ld skins found in %s", skins.size(), *skinPath);
+}
+
+void cDesignerConfig::ClearSkinSetups(void) {
+    for (map < string, cSkinSetup* >::iterator it = skinSetups.begin(); it != skinSetups.end(); it++) {
+        delete it->second;
+    }
+    skinSetups.clear();
+}
+
+void cDesignerConfig::DebugSkinSetups(void) {
+    dsyslog("skindesigner: skin setups:");
+    InitSetupIterator();
+    cSkinSetup *skinSetup = NULL;
+    while (skinSetup = GetNextSkinSetup()) {
+        skinSetup->Debug();
+    }    
+}
+
+void cDesignerConfig::DebugSkinSetupParameters(void) {
+    dsyslog("skindesigner: skin setup parameters:");
+    for (vector<pair<string, int> >::iterator it = skinSetupParameters.begin(); it != skinSetupParameters.end(); it++) {
+        dsyslog("skindesigner: parameter %s value %d", (*it).first.c_str(), (*it).second);
+    }
+}
+
+void cDesignerConfig::ReadSkinSetup(string skin) {
+    cSkinSetup *skinSetup = new cSkinSetup(skin);
+    if (skinSetup->ReadFromXML()) {
+        //skinSetup->Debug();
+        skinSetups.insert(pair<string, cSkinSetup* >(skin, skinSetup));
+    }
+}
+
+bool cDesignerConfig::GetSkin(string &skin) {
+    if (skinIterator == skins.end()) {
+        return false;
+    }
+    skin = *skinIterator;
+    skinIterator++;
+    return true;
+}
+
+cSkinSetup* cDesignerConfig::GetSkinSetup(string &skin) {
+    map< string, cSkinSetup* >::iterator hit = skinSetups.find(skin);
+    if (hit != skinSetups.end()) {
+        return hit->second;
+    }
+    return NULL;
+}
+
+cSkinSetup* cDesignerConfig::GetNextSkinSetup(void) {
+    if (setupIt == skinSetups.end()) {
+        return NULL;
+    }
+    cSkinSetup* skinSetup = setupIt->second;
+    setupIt++;
+    return skinSetup;
+}
+
+cSkinSetupMenu* cDesignerConfig::GetSkinSetupMenu(string &skin, string &menu) {
+    cSkinSetup *skinSetup = GetSkinSetup(skin);
+    if (!skinSetup)
+        return NULL;
+    esyslog("skindesigner: skinsetup found");
+    return skinSetup->GetMenu(menu);
+}
+
+
+void cDesignerConfig::TranslateSetup(void) {
+    for (map< string, cSkinSetup* >::iterator it = skinSetups.begin(); it != skinSetups.end(); it++) {
+        (it->second)->TranslateSetup();
+    }
+}
+
+void cDesignerConfig::UpdateSkinSetupParameter(string name, int value) {
+    vector<pair<string,int> >::iterator hit;
+    for (hit = skinSetupParameters.begin(); hit != skinSetupParameters.end(); hit++) {
+        if (!name.compare((*hit).first)) {
+            skinSetupParameters.erase(hit);
+            break;
+        }
+    }
+    skinSetupParameters.push_back(pair<string,int>(name, value));
+}
+
+void cDesignerConfig::SetSkinSetupParameters(void) {
+    for (vector < pair <string, int> >::iterator it = skinSetupParameters.begin(); it != skinSetupParameters.end(); it++) {
+        string name = (*it).first;
+        int value = (*it).second;
+
+        InitSkinIterator();
+        string activeSkin = "";
+        bool skinFound = false;
+        while (GetSkin(activeSkin)) {
+            stringstream checkString;
+            checkString << activeSkin << ".";
+            size_t hit = name.find(checkString.str());
+            if (hit != 0)
+                continue;
+            skinFound = true;
+            break;
+        }
+        if (skinFound) {
+            cSkinSetup* skinSetup = GetSkinSetup(activeSkin);
+            if (skinSetup != NULL) {
+                string paramName = name.substr(activeSkin.size()+1);
+                cSkinSetupParameter *skinSetupParam = skinSetup->GetParameter(paramName);
+                if (skinSetupParam) {
+                    skinSetupParam->value = value;
+                    continue;
+                }
+            }
+        }
+        esyslog("skindesigner: ERROR Unknown Setup Parameter %s", name.c_str());
+    }
+}
+
+void cDesignerConfig::UpdateGlobals(void) {
+    string activeSkin = Setup.OSDSkin;
+    cSkinSetup *skinSetupActiveSkin = GetSkinSetup(activeSkin);
+    if (skinSetupActiveSkin && tmplGlobals) {
+        dsyslog("skindesigner: globals for skin %s adapted to skin setup", activeSkin.c_str());
+        skinSetupActiveSkin->AddToGlobals(tmplGlobals);
+    }
+}
+
+void cDesignerConfig::CheckDecimalPoint(void) {
+    struct lconv *pLocInfo;
+    pLocInfo = localeconv();
+    string decimalPoint = pLocInfo->decimal_point;
+    if (decimalPoint.compare(".")) {
+        dsyslog("skindesigner: using decimal point %s", decimalPoint.c_str());
+        replaceDecPoint = true;
+        decPoint = decimalPoint[0];
+    }
+}
+
+void cDesignerConfig::SetSkin(void) {
+    osdSkin =  Setup.OSDSkin;
+    osdTheme = Setup.OSDTheme;
+}
+
+bool cDesignerConfig::SkinChanged(void) {
+    bool changed = false;
+    if (osdSkin.compare(Setup.OSDSkin) != 0) {
+        dsyslog("skindesigner: skin changed from %s to %s", osdSkin.c_str(), Setup.OSDSkin);
+        changed = true;
+    }
+    if (osdTheme.compare(Setup.OSDTheme) != 0) {
+        dsyslog("skindesigner: theme changed from %s to %s", osdTheme.c_str(), Setup.OSDTheme);
+        changed = true;
+    }
+    if (changed)
+        SetSkin();
+    return changed;
+}
+
+void cDesignerConfig::SetOSDSize(void) {
+    osdSize.SetWidth(cOsd::OsdWidth());
+    osdSize.SetHeight(cOsd::OsdHeight());
+    osdSize.SetX(cOsd::OsdLeft());
+    osdSize.SetY(cOsd::OsdTop());
+}
+
+bool cDesignerConfig::OsdSizeChanged(void) {
+   if ((osdSize.Width() != cOsd::OsdWidth()) ||
+        (osdSize.Height() != cOsd::OsdHeight()) ||
+        (osdSize.X() != cOsd::OsdLeft()) ||
+        (osdSize.Y() != cOsd::OsdTop())) {
+        dsyslog("skindesigner: osd size changed");
+        dsyslog("skindesigner: old osd size: top %d left %d size %d * %d", osdSize.X(), osdSize.Y(), osdSize.Width(), osdSize.Height());
+        SetOSDSize();
+        dsyslog("skindesigner: new osd size: top %d left %d size %d * %d", osdSize.X(), osdSize.Y(), osdSize.Width(), osdSize.Height());
+        return true;
+    }
+    return false; 
+}
+
+void cDesignerConfig::SetOSDFonts(void) {
+    fontFix = Setup.FontFix;
+    fontOsd = Setup.FontOsd;
+    fontSml = Setup.FontSml;
+}
+
+bool cDesignerConfig::OsdFontsChanged(void) {
+    bool changed = false;
+    if (fontFix.compare(Setup.FontFix) != 0) {
+        changed = true;
+    }
+    if (fontOsd.compare(Setup.FontOsd) != 0) {
+        changed = true;
+    }
+    if (fontSml.compare(Setup.FontSml) != 0) {
+        changed = true;
+    }
+    if (changed)
+        SetOSDFonts();
+    return changed;
+}
+
+bool cDesignerConfig::OsdLanguageChanged(void) {
+    if (osdLanguage.compare(Setup.OSDLanguage)) {
+        osdLanguage = Setup.OSDLanguage;
+        return true;
+    }
+    return false;
+}
+
+cString cDesignerConfig::GetSkinRessourcePath(void) {
+    return cString::sprintf("%s%s", *skinPath, osdSkin.c_str());
+}
+
+void cDesignerConfig::AddPlugin(string name, map < int, string > &menus) {
+    plugins.insert(pair< string, map < int, string > >(name, menus));
+}
+
+void cDesignerConfig::InitPluginIterator(void) {
+    plugIt = plugins.begin();
+}
+
+map <int,string> *cDesignerConfig::GetPluginTemplates(string &name) {
+    if (plugIt == plugins.end())
+        return NULL;
+    name = plugIt->first;
+    map <int,string> *templates = &plugIt->second;
+    plugIt++;
+    return templates; 
+}
+
+cString cDesignerConfig::CheckSlashAtEnd(std::string path) {
+    try {
+        if (!(path.at(path.size()-1) == '/'))
+            return cString::sprintf("%s/", path.c_str());
+    } catch (...) {return path.c_str();}
+    return path.c_str();
+}
+
+bool cDesignerConfig::SetupParse(const char *Name, const char *Value) {
+    bool pluginSetupParam = true;
+    if      (!strcasecmp(Name, "DebugImageLoading"))       debugImageLoading = atoi(Value);
+    else if (!strcasecmp(Name, "LimitChannelLogoCache"))   limitLogoCache = atoi(Value);
+    else if (!strcasecmp(Name, "NumberLogosInitially"))    numLogosPerSizeInitial = atoi(Value);
+    else if (!strcasecmp(Name, "NumberLogosMax"))          numLogosMax = atoi(Value);
+    else if (!strcasecmp(Name, "RerunAmount"))             rerunAmount = atoi(Value);
+    else if (!strcasecmp(Name, "RerunDistance"))           rerunDistance = atoi(Value);
+    else if (!strcasecmp(Name, "RerunMaxChannel"))         rerunMaxChannel = atoi(Value);
+    else if (!strcasecmp(Name, "BlockFlush"))              blockFlush = atoi(Value);
+    else pluginSetupParam = false;
+
+    if (!pluginSetupParam) {
+        skinSetupParameters.push_back(pair <string, int>(Name, atoi(Value)));
+    }
+
+    return true;
+}
diff --git a/config.h b/config.h
new file mode 100644
index 0000000..a10ad5f
--- /dev/null
+++ b/config.h
@@ -0,0 +1,107 @@
+#ifndef __DESIGNER_CONFIG_H
+#define __DESIGNER_CONFIG_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include <vdr/tools.h>
+#include <vdr/skins.h>
+#include <vdr/plugin.h>
+#include "libcore/fontmanager.h"
+#include "libcore/imagecache.h"
+#include "libcore/recfolderinfo.h"
+#include "libcore/skinsetup.h"
+
+#define SCRIPTOUTPUTPATH "/tmp/skindesigner"
+
+class cDesignerConfig {
+private:
+    cString CheckSlashAtEnd(string path);
+    bool epgImagePathSet;
+    bool skinPathSet;
+    bool logoPathSet;
+    cRect osdSize;
+    string osdSkin;
+    string osdTheme;
+    string fontFix;
+    string fontOsd;
+    string fontSml;
+    string osdLanguage;
+    cGlobals *tmplGlobals;
+    map < string, map < int, string > > plugins;
+    map < string, map < int, string > >::iterator plugIt;
+    map < string, cSkinSetup* > skinSetups;
+    map < string, cSkinSetup* >::iterator setupIt;
+    vector < pair <string, int> > skinSetupParameters;
+public:
+    cDesignerConfig();
+    ~cDesignerConfig();
+    bool SetupParse(const char *Name, const char *Value);
+    void SetPathes(void);
+    void SetSkinPath(cString path);
+    void SetLogoPath(cString path);
+    void SetEpgImagePath(cString path);
+    void ReadSkins(void);
+    void ReadSkinSetup(string skin);
+    void InitSkinIterator(void) { skinIterator = skins.begin(); };
+    bool GetSkin(string &skin);
+    void ClearSkinSetups(void);
+    void DebugSkinSetups(void);
+    void DebugSkinSetupParameters(void);
+    cSkinSetup* GetSkinSetup(string &skin);
+    cSkinSetup* GetNextSkinSetup(void);
+    cSkinSetupMenu* GetSkinSetupMenu(string &skin, string &menu);
+    void InitSetupIterator(void) { setupIt = skinSetups.begin(); };
+    void TranslateSetup(void);
+    void SetSkinSetupParameters(void);
+    void UpdateSkinSetupParameter(string name, int value);
+    void SetGlobals(cGlobals *globals) { tmplGlobals = globals; };
+    void UpdateGlobals(void);
+    void CheckDecimalPoint(void);
+    void SetSkin(void);
+    bool SkinChanged(void);
+    void SetOSDSize(void);
+    bool OsdSizeChanged(void);
+    void SetOSDFonts(void);
+    bool OsdFontsChanged(void);
+    void SetOsdLanguage(void) { osdLanguage = Setup.OSDLanguage; };
+    bool OsdLanguageChanged(void);
+    cString GetSkinRessourcePath(void);
+    void AddPlugin(string name, map < int, string > &menus);
+    void InitPluginIterator(void);
+    map <int,string> *GetPluginTemplates(string &name);
+    cString skinPath;
+    cString logoPath;
+    cString epgImagePath;
+    vector<string> skins;
+    vector<string>::iterator skinIterator;
+    bool replaceDecPoint;
+    char decPoint;
+    //Setup Parameter
+    int numLogosPerSizeInitial;
+    int limitLogoCache;
+    int numLogosMax;
+    int debugImageLoading;
+    int rerunAmount;
+    int rerunDistance;
+    int rerunMaxChannel;
+    int blockFlush;
+    //TemplateReload on Setup Close
+    bool setupCloseDoReload;
+};
+
+#ifdef DEFINE_CONFIG
+    cDesignerConfig config;
+    cFontManager *fontManager = NULL;
+    cImageCache *imgCache = NULL;
+    cTheme Theme;
+    cRecordingsFolderInfo recFolderInfo(Recordings);
+#else
+    extern cDesignerConfig config;
+    extern cFontManager *fontManager;
+    extern cImageCache *imgCache;
+    extern cTheme Theme;
+    extern cRecordingsFolderInfo recFolderInfo;
+#endif
+
+#endif //__DESIGNER_CONFIG_H
diff --git a/designer.c b/designer.c
new file mode 100644
index 0000000..c279650
--- /dev/null
+++ b/designer.c
@@ -0,0 +1,349 @@
+#include "designer.h"
+#include "libcore/helpers.h"
+
+cSkinDesigner::cSkinDesigner(string skin) : cSkin(skin.c_str(), &::Theme) {
+    init = true;
+    this->skin = skin;
+
+    backupSkin = NULL;
+    useBackupSkin = false;
+    
+    globals = NULL;
+    channelTemplate = NULL;
+    menuTemplate = NULL;
+    messageTemplate = NULL;
+    replayTemplate = NULL;
+    volumeTemplate = NULL;
+    audiotracksTemplate = NULL;
+
+    currentMenu = NULL;
+
+    dsyslog("skindesigner: skin %s started", skin.c_str());
+}
+
+cSkinDesigner::~cSkinDesigner(void) {
+    if (globals)
+        delete globals;
+    DeleteTemplates();
+    if (backupSkin)
+        delete backupSkin;
+}
+
+const char *cSkinDesigner::Description(void) {
+  return skin.c_str();
+}
+
+cSkinDisplayChannel *cSkinDesigner::DisplayChannel(bool WithInfo) {
+    currentMenu = NULL;
+    cSkinDisplayChannel *displayChannel = NULL;
+    if (!useBackupSkin) {
+        Init();
+        displayChannel = new cSDDisplayChannel(channelTemplate, WithInfo);
+    } else {
+        displayChannel = backupSkin->DisplayChannel(WithInfo);
+    }
+    return displayChannel;
+}
+
+cSkinDisplayMenu *cSkinDesigner::DisplayMenu(void) {
+    if (!useBackupSkin) {
+        cSDDisplayMenu *displayMenu = NULL;
+        Init();
+        displayMenu = new cSDDisplayMenu(menuTemplate);
+        currentMenu = displayMenu;
+        return displayMenu;
+    } else {
+        cSkinDisplayMenu *displayMenu = backupSkin->DisplayMenu();
+        currentMenu = NULL;
+        return displayMenu;
+    }
+}
+
+cSkinDisplayReplay *cSkinDesigner::DisplayReplay(bool ModeOnly) {
+    currentMenu = NULL;
+    cSkinDisplayReplay *displayReplay = NULL;
+    if (!useBackupSkin) {
+        Init();
+        displayReplay = new cSDDisplayReplay(replayTemplate, ModeOnly);
+    } else {
+        displayReplay = backupSkin->DisplayReplay(ModeOnly);
+    }
+    return displayReplay;
+}
+
+cSkinDisplayVolume *cSkinDesigner::DisplayVolume(void) {
+    currentMenu = NULL;
+    cSkinDisplayVolume *displayVolume = NULL;
+    if (!useBackupSkin) {
+        Init();
+        displayVolume = new cSDDisplayVolume(volumeTemplate);
+    } else {
+        displayVolume = backupSkin->DisplayVolume();
+    }
+    return displayVolume;
+}
+
+cSkinDisplayTracks *cSkinDesigner::DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks) {
+    currentMenu = NULL;
+    cSkinDisplayTracks *displayTracks = NULL;
+    if (!useBackupSkin) {
+        Init();
+        displayTracks = new cSDDisplayTracks(audiotracksTemplate, Title, NumTracks, Tracks);
+    } else {
+        displayTracks = backupSkin->DisplayTracks(Title, NumTracks, Tracks);
+    }
+    return displayTracks;
+}
+
+cSkinDisplayMessage *cSkinDesigner::DisplayMessage(void) {
+    currentMenu = NULL;
+    cSkinDisplayMessage *displayMessage = NULL;
+    if (!useBackupSkin) {
+        Init();
+        displayMessage = new cSDDisplayMessage(messageTemplate);
+    } else {
+        displayMessage = backupSkin->DisplayMessage();
+    }
+    return displayMessage;
+}
+
+void cSkinDesigner::Reload(void) {
+    dsyslog("skindesigner: forcing full reload of templates");
+    if (cOsd::IsOpen()) {
+        esyslog("skindesigner: OSD is open, close first!");
+        return;
+    }
+    DeleteTemplates();
+    cStopWatch watch;
+    bool ok = LoadTemplates();
+    if (!ok) {
+        esyslog("skindesigner: error during loading of templates - using LCARS as backup");
+        if (!backupSkin)
+            backupSkin = new cSkinLCARS();
+        useBackupSkin = true;
+    } else {
+        CacheTemplates();
+        useBackupSkin = false;        
+        watch.Stop("templates reloaded and cache created");
+    }
+}
+
+void cSkinDesigner::ListAvailableFonts(void) {
+    fontManager->ListAvailableFonts();
+}
+
+bool cSkinDesigner::SetCustomToken(string option) {
+    splitstring s(option.c_str());
+    vector<string> flds = s.split('=', 0);
+
+    if (flds.size() != 2)
+        return false;
+
+    string key = trim(flds[0]);
+    string val = trim(flds[1]);
+
+    if (!globals)
+        return true;
+
+    if (isNumber(val)) {
+        globals->AddCustomInt(key, atoi(val.c_str()));
+    } else {
+        globals->AddCustomString(key, val);
+    }
+    return true;
+}
+
+void cSkinDesigner::ListCustomTokens(void) {
+    if (!globals)
+        return;
+    globals->ListCustomTokens();
+}
+
+/*********************************************************************************
+* PRIVATE FUNCTIONS
+*********************************************************************************/    
+void cSkinDesigner::Init(void) {
+    if (init || config.OsdSizeChanged() || config.SkinChanged() || config.OsdLanguageChanged() || config.setupCloseDoReload) {
+        config.setupCloseDoReload = false;
+        if (init) {
+            config.SetSkin();
+            config.SetOSDSize();
+            config.SetOSDFonts();
+        }
+        dsyslog("skindesigner: initializing skin %s", skin.c_str());
+        
+        config.CheckDecimalPoint();
+        
+        if (fontManager)
+            delete fontManager;
+        fontManager = new cFontManager();
+        if (imgCache)
+            delete imgCache;
+        imgCache = new cImageCache();
+        imgCache->SetPathes();
+
+        cStopWatch watch;
+        bool ok = LoadTemplates();
+        if (!ok) {
+            esyslog("skindesigner: error during loading of templates - using LCARS as backup");
+            backupSkin = new cSkinLCARS();
+            useBackupSkin = true;
+        } else {
+            CacheTemplates();
+            watch.Stop("templates loaded and cache created");
+        }
+        init = false;
+    } else if (config.OsdFontsChanged()) {
+        dsyslog("skindesigner: reloading fonts");
+        if (fontManager)
+            delete fontManager;
+        fontManager = new cFontManager();
+        cStopWatch watch;
+        bool ok = LoadTemplates();
+        if (!ok) {
+            esyslog("skindesigner: error during loading of templates - using LCARS as backup");
+            backupSkin = new cSkinLCARS();
+            useBackupSkin = true;
+        } else {
+            CacheTemplates();
+            watch.Stop("templates loaded and cache created");
+        }
+    }
+}
+
+void cSkinDesigner::DeleteTemplates(void) {
+    if (channelTemplate) {
+        delete channelTemplate;
+        channelTemplate = NULL;
+    }
+    if (menuTemplate) {
+        delete menuTemplate;
+        menuTemplate = NULL;
+    }
+    if (messageTemplate) {
+        delete messageTemplate;
+        messageTemplate = NULL;
+    }
+    if (replayTemplate) {
+        delete replayTemplate;
+        replayTemplate = NULL;
+    }
+    if (volumeTemplate) {
+        delete volumeTemplate;
+        volumeTemplate = NULL;
+    }
+    if (audiotracksTemplate) {
+        delete audiotracksTemplate;
+        audiotracksTemplate = NULL;
+    }
+}
+
+bool cSkinDesigner::LoadTemplates(void) {
+    if (globals)
+        delete globals;
+    globals = new cGlobals();
+    bool ok = globals->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error parsing globals, aborting");
+        return false;
+    }
+    config.SetGlobals(globals);
+
+    cSkinSetup *skinSetup = config.GetSkinSetup(skin);
+    if (skinSetup) {
+        skinSetup->AddToGlobals(globals);
+    }
+
+    DeleteTemplates();
+
+    channelTemplate = new cTemplate(vtDisplayChannel);
+    channelTemplate->SetGlobals(globals);
+    ok = channelTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displaychannel template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    channelTemplate->Translate();
+
+    menuTemplate = new cTemplate(vtDisplayMenu);
+    menuTemplate->SetGlobals(globals);
+    ok = menuTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displaymenu template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    menuTemplate->Translate();
+
+    messageTemplate = new cTemplate(vtDisplayMessage);
+    messageTemplate->SetGlobals(globals);
+    ok = messageTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displaymessage template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    messageTemplate->Translate();
+
+    replayTemplate = new cTemplate(vtDisplayReplay);
+    replayTemplate->SetGlobals(globals);
+    ok = replayTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displayreplay template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    replayTemplate->Translate();
+
+    volumeTemplate = new cTemplate(vtDisplayVolume);
+    volumeTemplate->SetGlobals(globals);
+    ok = volumeTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displayvolume template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    volumeTemplate->Translate();
+
+    audiotracksTemplate = new cTemplate(vtDisplayAudioTracks);
+    audiotracksTemplate->SetGlobals(globals);
+    ok = audiotracksTemplate->ReadFromXML();
+    if (!ok) {
+        esyslog("skindesigner: error reading displayaudiotracks template, aborting");
+        DeleteTemplates();
+        return false;
+    }
+    audiotracksTemplate->Translate();
+
+    dsyslog("skindesigner: templates successfully validated and parsed");        
+    return true;
+}
+
+void cSkinDesigner::CacheTemplates(void) {
+    channelTemplate->PreCache();
+    menuTemplate->PreCache();
+    messageTemplate->PreCache();
+    replayTemplate->PreCache();
+    volumeTemplate->PreCache();
+    audiotracksTemplate->PreCache();
+    dsyslog("skindesigner: templates cached");
+    fontManager->CacheFonts(channelTemplate);
+    fontManager->CacheFonts(menuTemplate);
+    fontManager->CacheFonts(messageTemplate);
+    fontManager->CacheFonts(replayTemplate);
+    fontManager->CacheFonts(volumeTemplate);
+    fontManager->CacheFonts(audiotracksTemplate);
+    dsyslog("skindesigner: fonts cached");
+    dsyslog("skindesigner: caching images...");
+    imgCache->Clear();
+    imgCache->SetPathes();
+    channelTemplate->CacheImages();
+    menuTemplate->CacheImages();
+    messageTemplate->CacheImages();
+    replayTemplate->CacheImages();
+    volumeTemplate->CacheImages();
+    audiotracksTemplate->CacheImages();
+    imgCache->Debug(false);
+}
+
diff --git a/designer.h b/designer.h
new file mode 100644
index 0000000..abb63bc
--- /dev/null
+++ b/designer.h
@@ -0,0 +1,52 @@
+#ifndef __SKINDESIGNER_H
+#define __SKINDESIGNER_H
+
+#include "config.h"
+#include "libtemplate/template.h"
+#include "libtemplate/xmlparser.h"
+#include "displaychannel.h"
+#include "displaymenu.h"
+#include "displayreplay.h"
+#include "displayvolume.h"
+#include "displaytracks.h"
+#include "displaymessage.h"
+#include <vdr/skinlcars.h>
+
+class cSkinDesigner : public cSkin {
+private:
+    bool init;
+    string skin;
+    cSkinLCARS *backupSkin;
+    bool useBackupSkin;
+    cGlobals *globals;
+    cTemplate *channelTemplate;
+    cTemplate *menuTemplate;
+    cTemplate *messageTemplate;
+    cTemplate *replayTemplate;
+    cTemplate *volumeTemplate;
+    cTemplate *audiotracksTemplate;
+    cSDDisplayMenu *currentMenu;
+    void Init(void);
+    void ReloadCaches(void);
+    void DeleteTemplates(void);
+    bool LoadTemplates(void);
+    void CacheTemplates(void);
+public:
+    cSkinDesigner(string skin);
+    virtual ~cSkinDesigner(void);
+    virtual const char *Description(void);
+    virtual cSkinDisplayChannel *DisplayChannel(bool WithInfo);
+    virtual cSkinDisplayMenu *DisplayMenu(void);
+    virtual cSkinDisplayReplay *DisplayReplay(bool ModeOnly);
+    virtual cSkinDisplayVolume *DisplayVolume(void);
+    virtual cSkinDisplayTracks *DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks);
+    virtual cSkinDisplayMessage *DisplayMessage(void);
+    void ActivateBackupSkin(void) { useBackupSkin = true; };
+    void Reload(void);
+    void ListAvailableFonts(void);
+    bool SetCustomToken(string option);
+    void ListCustomTokens(void);
+    cSDDisplayMenu *GetDisplayMenu(void) { return currentMenu; };
+};
+
+#endif //__SKINDESIGNER_H
diff --git a/displaychannel.c b/displaychannel.c
new file mode 100644
index 0000000..711f05a
--- /dev/null
+++ b/displaychannel.c
@@ -0,0 +1,206 @@
+#include "displaychannel.h"
+#include "libcore/timers.h"
+
+cSDDisplayChannel::cSDDisplayChannel(cTemplate *channelTemplate, bool WithInfo) {
+    channelView = NULL;
+
+    if (!channelTemplate) {
+        doOutput = false;
+        return;
+    } else {
+        doOutput = true;
+    }
+    groupSep = false;
+    present = NULL;
+    currentLast = 0;
+    channelChange = false;
+    initial = true;
+    devicesLast = cTimeMs::Now();
+
+    channelView = new cDisplayChannelView(channelTemplate->GetRootView());
+    if (!channelView->createOsd()) {
+        doOutput = false;
+        return;
+    }
+}
+
+cSDDisplayChannel::~cSDDisplayChannel() {
+    if (channelView)
+        delete channelView;
+}
+
+void cSDDisplayChannel::SetChannel(const cChannel *Channel, int Number) {
+    if (!doOutput)
+        return;
+
+    channelChange = true;
+    groupSep = false;
+
+    cString ChannelNumber("");
+    cString ChannelName("");
+    cString ChannelID("");
+
+    if (Channel) {
+        ChannelName = Channel->Name() ? Channel->Name() : "";
+        ChannelID = Channel->GetChannelID().ToString();
+        if (!Channel->GroupSep()) {
+            ChannelNumber = cString::sprintf("%d%s", Channel->Number(), Number ? "-" : "");
+        } else {
+            groupSep = true;
+        }
+    } else if (Number) {
+        ChannelNumber = cString::sprintf("%d-", Number);
+    } else {
+        ChannelName = ChannelString(NULL, 0);
+    }
+    channelView->ClearChannel();
+    channelView->ClearEPGInfo();
+    channelView->ClearStatusIcons();
+    channelView->ClearChannelGroups();
+    channelView->ClearScraperContent();
+    channelView->ClearAudioInfo();
+    if (!groupSep) {
+        channelView->DrawChannel(ChannelNumber, ChannelName, ChannelID, (Number > 0)?true:false);
+        channelView->DrawProgressBarBack();
+        channelView->DrawSignalBackground();
+        if (Channel) {
+            channelView->DrawStatusIcons(Channel);
+            channelView->DrawAudioInfo();
+        }
+    } else {
+        channelView->ClearSignal();
+        channelView->ClearSignalBackground();
+        channelView->ClearProgressBar();
+        channelView->ClearProgressBarBack();
+        if (Channel)
+            channelView->DrawChannelGroups(Channel, ChannelName);
+    }
+
+}
+
+void cSDDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) {
+    if (!doOutput)
+        return;
+
+    present = Present;
+    channelView->ClearProgressBar();
+    if (!groupSep) {
+        channelView->ClearEPGInfo();
+    }
+
+    cGlobalSortedTimers SortedTimers;// local and remote timers
+
+    bool recPresent = false;
+    if (Present) {
+        if (!groupSep) {
+            SetProgressBar(Present);
+        }
+        eTimerMatch TimerMatch = tmNone;
+        const cTimer *Timer = Timers.GetMatch(Present, &TimerMatch);
+        if (Timer && Timer->Recording()) {
+            recPresent = true;
+        }
+        for (int i = 0; i < SortedTimers.Size() && !recPresent; i++) 
+            if (const cTimer *Timer = SortedTimers[i]) 
+                if (Timer->Channel()->GetChannelID() == Present->ChannelID()) 
+                    if (const cEvent *timerEvent = Timer->Event())
+                        if (Present->EventID() == timerEvent->EventID())
+                            recPresent = Timer->Recording();
+        
+    }
+    bool recFollowing = false;
+    if (Following) {
+        recFollowing = Following->HasTimer();
+        for (int i = 0; i < SortedTimers.Size() && !recFollowing; i++) 
+            if (const cTimer *Timer = SortedTimers[i]) 
+                if (Timer->Channel()->GetChannelID() == Following->ChannelID()) 
+                    if (const cEvent *timerEvent = Timer->Event())
+                        if (Following->EventID() == timerEvent->EventID())
+                            recFollowing = true;
+    }
+
+    if (Present || Following) {
+        channelView->DrawEPGInfo(Present, Following, recPresent, recFollowing);
+        channelView->DrawScraperContent(Present);
+    }
+}
+
+void cSDDisplayChannel::SetProgressBar(const cEvent *present) {
+    int Current = 0;
+    int Total = 0;
+    time_t t = time(NULL);
+    if (t > present->StartTime())
+        Current = t - present->StartTime();
+    Total = present->Duration();
+    if ((Current > currentLast + 3) || initial || channelChange) {
+        currentLast = Current;
+        cString start = present->GetTimeString();
+        cString stop = present->GetEndTimeString();
+        channelView->DrawProgressBar(start, stop, Current, Total);
+    }
+}
+
+
+void cSDDisplayChannel::SetMessage(eMessageType Type, const char *Text) {
+    if (!doOutput)
+        return;
+    channelView->ClearChannel();
+    channelView->ClearEPGInfo();
+    channelView->ClearStatusIcons();
+    channelView->ClearScreenResolution();
+    channelView->ClearProgressBar();
+    channelView->ClearProgressBarBack();
+    channelView->ClearSignal();
+    channelView->ClearSignalBackground();
+    channelView->ClearScraperContent();
+    channelView->ClearAudioInfo();
+    channelView->DisplayMessage(Type, Text);
+    groupSep = true;
+}
+
+void cSDDisplayChannel::Flush(void) {
+    if (!doOutput)
+        return;
+
+    if (initial) {
+        channelView->DrawBackground();
+        channelView->DrawSignalBackground();
+        channelView->DrawCurrentWeather();
+        channelView->DrawCustomTokens();
+    }
+
+    if (initial || channelChange) {
+        channelView->DrawDate();
+    }
+    channelView->DrawTime();
+
+    if (present) {
+        SetProgressBar(present);
+    } else {
+        channelView->ClearProgressBar();
+    }
+
+    if (!groupSep) {
+        channelView->DrawScreenResolution();
+        channelView->DrawSignal();
+        channelView->DrawAudioInfo();
+        if (initial || cTimeMs::Now() - devicesLast  > 500) {
+            channelView->DrawDevices(initial);
+            devicesLast = cTimeMs::Now();
+        }
+    } else {
+        channelView->ClearStatusIcons();
+        channelView->ClearScreenResolution();
+        channelView->ClearSignal();
+        channelView->ClearSignalBackground();
+        channelView->ClearDevices();
+    }
+
+    if (initial) {
+        channelView->DoStart();
+    }
+
+    initial = false;
+    channelChange = false;
+    channelView->Flush();
+}
\ No newline at end of file
diff --git a/displaychannel.h b/displaychannel.h
new file mode 100644
index 0000000..12c6922
--- /dev/null
+++ b/displaychannel.h
@@ -0,0 +1,32 @@
+#ifndef __DISPLAYCHANNEL_H
+#define __DISPLAYCHANNEL_H
+
+#include <vdr/thread.h>
+#include "config.h"
+#include "libtemplate/template.h"
+#include "views/displaychannelview.h"
+
+class cSDDisplayChannel : public cSkinDisplayChannel {
+private:
+    cDisplayChannelView *channelView;
+    bool doOutput;
+    bool initial;
+    bool groupSep;
+    bool channelChange;
+    time_t lastSignalDisplay;
+    int lastSignalStrength;
+    int lastSignalQuality;
+    int lastScreenWidth;
+    int currentLast;
+    uint64_t devicesLast;
+    const cEvent *present;
+    void SetProgressBar(const cEvent *present);
+public:
+    cSDDisplayChannel(cTemplate *channelTemplate, bool WithInfo);
+    virtual ~cSDDisplayChannel();
+    virtual void SetChannel(const cChannel *Channel, int Number);
+    virtual void SetEvents(const cEvent *Present, const cEvent *Following);
+    virtual void SetMessage(eMessageType Type, const char *Text);
+    virtual void Flush(void);
+};
+#endif //__DISPLAYCHANNEL_H
\ No newline at end of file
diff --git a/displaymenu.c b/displaymenu.c
new file mode 100644
index 0000000..2d922cd
--- /dev/null
+++ b/displaymenu.c
@@ -0,0 +1,308 @@
+#include "displaymenu.h"
+#include "libcore/helpers.h"
+
+cSDDisplayMenu::cSDDisplayMenu(cTemplate *menuTemplate) {
+    textAreaFont = NULL;
+    rootView = NULL;
+    doOutput = true;
+    state = vsInit;
+    pluginMenu = -1;
+    pluginName = "";
+    pluginMenuType = mtUnknown;
+    if (!menuTemplate) {
+        doOutput = false;
+        esyslog("skindesigner: displayMenu no valid template - aborting");
+        return;
+    } 
+    rootView = new cDisplayMenuRootView(menuTemplate->GetRootView());
+    if (!rootView->createOsd()) {
+        doOutput = false;
+        return;
+    }
+}
+
+cSDDisplayMenu::~cSDDisplayMenu() {
+    if (rootView)
+        delete rootView;
+    if (textAreaFont)
+        delete textAreaFont;
+}
+
+void cSDDisplayMenu::Scroll(bool Up, bool Page) {
+    if (!doOutput)
+        return;
+    rootView->KeyInput(Up, Page);
+}
+
+int cSDDisplayMenu::MaxItems(void) {
+    if (!doOutput)
+        return 0;
+    int maxItems = rootView->GetMaxItems();
+    return maxItems;
+}
+
+void cSDDisplayMenu::Clear(void) {
+    if (!doOutput)
+        return;
+    rootView->Clear();
+}
+
+void cSDDisplayMenu::SetMenuCategory(eMenuCategory MenuCat) {
+    if (!doOutput)
+        return;
+    rootView->SetMenu(MenuCat, (state == vsInit) ? true : false);
+    cSkinDisplayMenu::SetMenuCategory(MenuCat);
+    if (state != vsInit)
+        state = vsMenuInit;
+}
+
+void cSDDisplayMenu::SetPluginMenu(string name, int menu, int type, bool init) {
+    pluginName = name;
+    pluginMenu = menu;
+    pluginMenuType = (ePluginMenuType)type;
+    rootView->SetPluginMenu(pluginName, pluginMenu, pluginMenuType);
+    if (!init) {
+        rootView->SetMenu(mcPlugin, false);        
+    }
+}
+
+void cSDDisplayMenu::SetTitle(const char *Title) {
+    if (!doOutput)
+        return;
+    rootView->SetTitle(Title);
+}
+
+void cSDDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) {
+    if (!doOutput)
+        return;
+    rootView->SetButtonTexts(Red, Green, Yellow, Blue);
+    if (state != vsInit && MenuCategory() != mcMain)
+        state = vsMenuInit;
+}
+
+void cSDDisplayMenu::SetMessage(eMessageType Type, const char *Text) {
+    if (!doOutput)
+        return;
+    rootView->SetMessage(Type, Text);
+    rootView->DoFlush();
+}
+
+bool cSDDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch) {
+    if (!doOutput)
+        return true;
+    if (!rootView->SubViewAvailable())
+        return false;
+    if (config.blockFlush)
+        rootView->LockFlush();
+    bool isFav = false;
+    if (MenuCategory() == mcSchedule && Channel) {
+        isFav = true;
+        rootView->SetEpgSearchFavorite();
+    }
+    const cChannel *channel = Channel;
+    if (MenuCategory() == mcSchedule) {
+        if (!channel) {
+            channel = rootView->GetChannel();
+        } 
+        if (!channel && Event) {
+            channel = Channels.GetByChannelID(Event->ChannelID());
+        }
+        rootView->SetChannel(channel);
+    }
+
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list)
+        return false;
+    list->AddSchedulesMenuItem(Index, Event, channel, TimerMatch, MenuCategory(), isFav, Current, Selectable);
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+    return true;
+}
+
+bool cSDDisplayMenu::SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable) {
+    if (!doOutput)
+        return true;
+    if (!rootView->SubViewAvailable())
+        return false;
+    if (config.blockFlush)
+        rootView->LockFlush();
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list)
+        return false;
+    list->AddTimersMenuItem(Index, Timer, Current, Selectable);
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+    return true;
+}
+
+bool cSDDisplayMenu::SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider) {
+    if (!doOutput)
+        return true;
+    if (!rootView->SubViewAvailable())
+        return false;
+    if (config.blockFlush)
+        rootView->LockFlush();
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list)
+        return false;
+    list->AddChannelsMenuItem(Index, Channel, WithProvider, Current, Selectable);
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+    return true;
+}
+
+bool cSDDisplayMenu::SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New) {
+    if (!doOutput)
+        return true;
+    if (!rootView->SubViewAvailable())
+        return false;
+    if (config.blockFlush)
+        rootView->LockFlush();
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list)
+        return false;
+    list->AddRecordingMenuItem(Index, Recording, Level, Total, New, Current, Selectable);
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+    return true;
+}
+
+bool cSDDisplayMenu::SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable) {
+    if (!doOutput)
+        return true;
+    if (!rootView->SubViewAvailable())
+        return false;
+    if (config.blockFlush)
+        rootView->LockFlush();
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list)
+        return false;
+    list->AddPluginMenuItem(stringTokens, intTokens, loopTokens, Index, Current, Selectable);
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+    return true;
+}
+
+void cSDDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) {
+    if (!doOutput)
+        return;
+    cDisplayMenuListView *list = rootView->GetListView();
+    if (!list) {
+        return;
+    }
+    if (config.blockFlush)
+        rootView->LockFlush();
+    eMenuCategory cat = MenuCategory();
+    if (cat == mcMain && rootView->SubViewAvailable()) {
+        list->AddMainMenuItem(Index, Text, Current, Selectable);
+    } else if (cat == mcSetup && rootView->SubViewAvailable()) {
+        list->AddSetupMenuItem(Index, Text, Current, Selectable);        
+    } else {
+        rootView->CorrectDefaultMenu();
+        string *tabTexts = new string[MaxTabs];
+        for (int i=0; i<MaxTabs; i++) {
+            const char *s = GetTabbedText(Text, i);
+            if (s) {
+                if (strlen(s) == 0)
+                    tabTexts[i] = " ";
+                else
+                    tabTexts[i] = s;
+            } else {
+                tabTexts[i] = "";
+            }
+        }
+        list->AddDefaultMenuItem(Index, tabTexts, Current, Selectable);
+        SetEditableWidth( rootView->GetListViewWidth() / 2);
+    }
+    if (state == vsIdle)
+        state = vsMenuUpdate;
+}
+
+void cSDDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5) {
+    if (!doOutput)
+        return;
+    rootView->SetTabs(Tab1, Tab2, Tab3, Tab4, Tab5);
+}
+
+int cSDDisplayMenu::GetTextAreaWidth(void) const {
+    int areaWidth = rootView->GetTextAreaWidth();
+    return areaWidth;
+}
+
+const cFont *cSDDisplayMenu::GetTextAreaFont(bool FixedFont) const {
+    if (textAreaFont)
+        return textAreaFont;
+    textAreaFont = rootView->GetTextAreaFont();
+    return textAreaFont;
+}
+
+void cSDDisplayMenu::SetScrollbar(int Total, int Offset) {
+    if (!doOutput)
+        return;
+    rootView->RenderMenuScrollBar(Total, Offset);
+}
+
+void cSDDisplayMenu::SetEvent(const cEvent *Event) {
+    if (!doOutput)
+        return;
+    rootView->SetDetailedViewEvent(Event);
+    state = vsMenuDetail;
+}
+
+void cSDDisplayMenu::SetRecording(const cRecording *Recording) {
+    if (!doOutput)
+        return;
+    rootView->SetDetailedViewRecording(Recording);
+    state = vsMenuDetail;
+}
+
+void cSDDisplayMenu::SetText(const char *Text, bool FixedFont) {
+    if (!doOutput)
+        return;
+    rootView->SetDetailedViewText(Text);
+    state = vsMenuDetail;
+}
+
+bool cSDDisplayMenu::SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens) {
+    if (!doOutput)
+        return true;
+    bool tmplOk = rootView->SetDetailedViewPlugin(stringTokens, intTokens, loopTokens);
+    state = vsMenuDetail;
+    return tmplOk;
+}
+
+void cSDDisplayMenu::Flush(void) {
+    if (!doOutput)
+        return;
+
+    bool doFlush = false;
+    if (state == vsInit) {
+        rootView->Start();
+        rootView->RenderMenuItems();
+        doFlush = true;
+    } else if (state == vsMenuInit) {
+        rootView->Render();
+        rootView->RenderMenuItems();
+        doFlush = true;
+    } else if (state == vsMenuUpdate) {
+        rootView->RenderMenuItems();
+        doFlush = true;
+    } else if (state == vsMenuDetail) {
+        rootView->OpenFlush();
+        rootView->Render();
+        rootView->DoFlush();
+        rootView->RenderDetailView();
+        rootView->DoFlush();
+    }
+
+    if (rootView->RenderDynamicElements()) {
+        doFlush = true;
+    }
+
+    if (doFlush) {
+        if (config.blockFlush)
+            rootView->OpenFlush();
+        rootView->DoFlush();
+    }
+    state = vsIdle;
+}
diff --git a/displaymenu.h b/displaymenu.h
new file mode 100644
index 0000000..850b7e9
--- /dev/null
+++ b/displaymenu.h
@@ -0,0 +1,54 @@
+#ifndef __DISPLAYMENU_H
+#define __DISPLAYMENU_H
+
+#include "libtemplate/template.h"
+#include "views/displaymenurootview.h"
+
+enum eViewState {
+    vsInit,
+    vsMenuInit,
+    vsMenuUpdate,
+    vsMenuDetail,
+    vsIdle
+};
+
+class cSDDisplayMenu : public cSkinDisplayMenu {
+private:
+    cDisplayMenuRootView *rootView;
+    eViewState state;
+    bool doOutput;
+    string pluginName;
+    int pluginMenu;
+    ePluginMenuType pluginMenuType;
+    mutable cFont *textAreaFont;
+protected:
+    int Tab(int n);
+public:
+    cSDDisplayMenu(cTemplate *menuTemplate);
+    virtual ~cSDDisplayMenu();
+    virtual void Scroll(bool Up, bool Page);
+    virtual int MaxItems(void);
+    virtual void Clear(void);
+    virtual void SetMenuCategory(eMenuCategory MenuCat);
+    virtual void SetPluginMenu(string name, int menu, int type, bool init);
+    virtual void SetTitle(const char *Title);
+    virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
+    virtual void SetMessage(eMessageType Type, const char *Text);
+    virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable);
+    virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch);
+    virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable);
+    virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
+    virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New);
+    virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable);
+    virtual void SetScrollbar(int Total, int Offset);
+    virtual void SetEvent(const cEvent *Event);
+    virtual void SetRecording(const cRecording *Recording);
+    virtual void SetText(const char *Text, bool FixedFont);
+    virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens);
+    virtual void Flush(void);
+    virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0);
+    virtual int GetTextAreaWidth(void) const;
+    virtual const cFont *GetTextAreaFont(bool FixedFont) const;
+};
+
+#endif //__DISPLAYMENU_H
diff --git a/displaymessage.c b/displaymessage.c
new file mode 100644
index 0000000..94c1bdd
--- /dev/null
+++ b/displaymessage.c
@@ -0,0 +1,45 @@
+#include "displaymessage.h"
+
+cSDDisplayMessage::cSDDisplayMessage(cTemplate *messageTemplate) {
+    messageView = NULL;
+    doOutput = true;
+    initial = true;
+    if (!messageTemplate) {
+        doOutput = false;
+        esyslog("skindesigner: displayMessage no valid template - aborting");
+        return;
+    }
+    messageView = new cDisplayMessageView(messageTemplate->GetRootView());
+    if (!messageView->createOsd()) {
+        doOutput = false;
+        return;
+    }
+    messageView->DrawBackground();
+}
+
+cSDDisplayMessage::~cSDDisplayMessage() {
+    if (messageView)
+        delete messageView;
+}
+
+void cSDDisplayMessage::SetMessage(eMessageType Type, const char *Text) {
+    if (!doOutput)
+        return;
+    messageView->ClearMessage();
+    if (!Text) {
+        return;
+    }
+    messageView->DrawMessage(Type, Text);
+}
+
+
+void cSDDisplayMessage::Flush(void) {
+    if (!doOutput)
+        return;
+    if (initial) {
+        messageView->DoFadeIn();
+        initial = false;
+    } else {
+        messageView->Flush();
+    }
+}
diff --git a/displaymessage.h b/displaymessage.h
new file mode 100644
index 0000000..f1fd01b
--- /dev/null
+++ b/displaymessage.h
@@ -0,0 +1,22 @@
+#ifndef __DISPLAYMESSAGE_H
+#define __DISPLAYMESSAGE_H
+
+#include <vdr/thread.h>
+#include <vdr/skins.h>
+#include "config.h"
+#include "libtemplate/template.h"
+#include "views/displaymessageview.h"
+
+class cSDDisplayMessage : public cSkinDisplayMessage {
+private:
+    cDisplayMessageView *messageView;
+    bool doOutput;
+    bool initial;
+public:
+    cSDDisplayMessage(cTemplate *messageTemplate);
+    virtual ~cSDDisplayMessage();
+    virtual void SetMessage(eMessageType Type, const char *Text);
+    virtual void Flush(void);
+};
+
+#endif //__DISPLAYMESSAGE_H
\ No newline at end of file
diff --git a/displayreplay.c b/displayreplay.c
new file mode 100644
index 0000000..88d6802
--- /dev/null
+++ b/displayreplay.c
@@ -0,0 +1,99 @@
+#define __STL_CONFIG_H
+#include "displayreplay.h"
+
+cSDDisplayReplay::cSDDisplayReplay(cTemplate *replayTemplate, bool ModeOnly) {
+    doOutput = true;
+    initial = true;
+    modeOnly = ModeOnly;
+    replayView = NULL;
+    if (!replayTemplate) {
+        doOutput = false;
+        esyslog("skindesigner: displayReplay no valid template - aborting");
+        return;
+    }
+    replayView = new cDisplayReplayView(replayTemplate->GetRootView());
+    if (!replayView->createOsd()) {
+        doOutput = false;
+        return;
+    }
+}
+
+cSDDisplayReplay::~cSDDisplayReplay() {
+    if (replayView)
+        delete replayView;
+}
+
+void cSDDisplayReplay::SetRecording(const cRecording *Recording) {
+    if (!doOutput || !Recording)
+        return;
+    replayView->DrawTitle(Recording);
+    replayView->DrawRecordingInformation(Recording);
+    replayView->DrawScraperContent(Recording);
+}
+
+void cSDDisplayReplay::SetTitle(const char *Title) {
+    if (!doOutput || !Title)
+        return;
+    replayView->DrawTitle(Title);
+}
+
+void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
+    if (!doOutput)
+        return;
+    if (!Play && Speed < 0) {
+        replayView->DrawOnPause(modeOnly);
+    } else {
+        replayView->ClearOnPause();
+    }
+    replayView->DrawControlIcons(Play, Forward, Speed, modeOnly);
+}
+
+void cSDDisplayReplay::SetProgress(int Current, int Total) {
+    if (!doOutput)
+        return;
+    replayView->DelayOnPause();
+    replayView->DrawProgressBar(Current, Total);
+    replayView->DrawMarks(marks, Current, Total);
+}
+
+void cSDDisplayReplay::SetCurrent(const char *Current) {
+    if (!doOutput)
+        return;
+    replayView->DrawCurrent(Current);
+}
+
+void cSDDisplayReplay::SetTotal(const char *Total) {
+    if (!doOutput)
+        return;
+    replayView->DrawTotal(Total);
+}
+
+void cSDDisplayReplay::SetJump(const char *Jump) {
+    if (!doOutput)
+        return;
+    replayView->DrawJump(Jump);    
+}
+
+void cSDDisplayReplay::SetMessage(eMessageType Type, const char *Text) {
+    if (!doOutput)
+        return;
+    replayView->DrawMessage(Type, Text);
+}
+
+void cSDDisplayReplay::Flush(void) {
+    if (!doOutput)
+        return;
+    if (!modeOnly) {
+        replayView->DrawDate();
+        replayView->DrawTime();
+    }
+
+    if (initial) {
+        replayView->DrawBackground(modeOnly);
+        replayView->DrawCustomTokens();
+        replayView->DoFadeIn();
+        initial = false;
+    } else {
+        replayView->Flush();
+    }
+}
diff --git a/displayreplay.h b/displayreplay.h
new file mode 100644
index 0000000..836febb
--- /dev/null
+++ b/displayreplay.h
@@ -0,0 +1,30 @@
+#ifndef __DISPLAYREPLAY_H
+#define __DISPLAYREPLAY_H
+
+#include <vdr/skins.h>
+#include <vdr/thread.h>
+#include "config.h"
+#include "libtemplate/template.h"
+#include "views/displayreplayview.h"
+
+class cSDDisplayReplay : public cSkinDisplayReplay {
+private:
+    cDisplayReplayView *replayView;
+    bool initial;
+    bool doOutput;
+    bool modeOnly;
+public:
+    cSDDisplayReplay(cTemplate *replayTemplate, bool ModeOnly);
+    virtual ~cSDDisplayReplay();
+    virtual void SetRecording(const cRecording *Recording);
+    virtual void SetTitle(const char *Title);
+    virtual void SetMode(bool Play, bool Forward, int Speed);
+    virtual void SetProgress(int Current, int Total);
+    virtual void SetCurrent(const char *Current);
+    virtual void SetTotal(const char *Total);
+    virtual void SetJump(const char *Jump);
+    virtual void SetMessage(eMessageType Type, const char *Text);
+    virtual void Flush(void);
+};
+
+#endif //__DISPLAYREPLAY_H
\ No newline at end of file
diff --git a/displaytracks.c b/displaytracks.c
new file mode 100644
index 0000000..8e28095
--- /dev/null
+++ b/displaytracks.c
@@ -0,0 +1,58 @@
+#include "displaytracks.h"
+
+
+cSDDisplayTracks::cSDDisplayTracks(cTemplate *audiotracksTemplate, const char *Title, int NumTracks, const char * const *Tracks) {
+    initial = true;
+    numTracks = NumTracks;
+    tracksView = NULL;
+    doOutput = true;
+    currentTrack = 0;
+    menuTitle = Title;
+    if (!audiotracksTemplate) {
+        esyslog("skindesigner: displayTracks no valid template - aborting");
+        doOutput = false;
+        return;
+    }
+    tracksView = new cDisplayAudiotracksView(NumTracks, audiotracksTemplate->GetRootView());
+    if (!tracksView->createOsd()) {
+        doOutput = false;
+        return;
+    }
+    tracksView->DrawBackground();
+
+    cDisplayMenuListView *list = tracksView->GetListView();
+    if (list) {
+        for (int i = 0; i < NumTracks; i++) {
+            list->AddTracksMenuItem(i, Tracks[i], (i==currentTrack)?true:false, true);
+        }
+    }    
+}
+
+cSDDisplayTracks::~cSDDisplayTracks() {
+    if (tracksView)
+        delete tracksView;
+}
+
+void cSDDisplayTracks::SetTrack(int Index, const char * const *Tracks) {
+    cDisplayMenuListView *list = tracksView->GetListView();
+    if (list) {
+        list->AddTracksMenuItem(currentTrack, Tracks[currentTrack], false, true);
+        list->AddTracksMenuItem(Index, Tracks[Index], true, true);
+        currentTrack = Index;
+    }
+}
+
+void cSDDisplayTracks::SetAudioChannel(int AudioChannel) {
+    tracksView->DrawHeader(menuTitle, AudioChannel);
+}
+
+void cSDDisplayTracks::Flush(void) {
+    if (!doOutput)
+        return;
+    if (initial) {
+        tracksView->DoFadeIn();
+    }
+    initial = false;
+    tracksView->RenderMenuItems();
+    tracksView->Flush();
+}
diff --git a/displaytracks.h b/displaytracks.h
new file mode 100644
index 0000000..4dd978c
--- /dev/null
+++ b/displaytracks.h
@@ -0,0 +1,27 @@
+#ifndef __DISPLAYTRACKS_H
+#define __DISPLAYTRACKS_H
+
+#include <vdr/skins.h>
+#include <vdr/thread.h>
+#include "config.h"
+#include "libtemplate/template.h"
+#include "views/displayaudiotracksview.h"
+
+class cSDDisplayTracks : public cSkinDisplayTracks {
+private:
+    cDisplayAudiotracksView *tracksView;
+    bool initial;
+    int numTracks;
+    bool doOutput;
+    int currentTrack;
+    const char *menuTitle;
+public:
+    cSDDisplayTracks(cTemplate *audiotracksTemplate, const char *Title, int NumTracks, const char * const *Tracks);
+    virtual ~cSDDisplayTracks();
+    virtual void SetTrack(int Index, const char * const *Tracks);
+    virtual void SetAudioChannel(int AudioChannel);
+    virtual void Flush(void);
+};
+
+
+#endif //__DISPLAYTRACKS_H
\ No newline at end of file
diff --git a/displayvolume.c b/displayvolume.c
new file mode 100644
index 0000000..9ee28a5
--- /dev/null
+++ b/displayvolume.c
@@ -0,0 +1,43 @@
+#include "displayvolume.h"
+
+#include "config.h"
+#include "libcore/helpers.h"
+
+cSDDisplayVolume::cSDDisplayVolume(cTemplate *volumeTemplate) {
+    volumeView = NULL;
+    doOutput = true;
+    initial = true;
+    if (!volumeTemplate) {
+        doOutput = false;
+        esyslog("skindesigner: displayVolume no valid template - aborting");
+        return;
+    }
+    volumeView = new cDisplayVolumeView(volumeTemplate->GetRootView());
+    if (!volumeView->createOsd()) {
+        doOutput = false;
+    } else {
+        volumeView->DrawBackground();
+    }
+}
+
+cSDDisplayVolume::~cSDDisplayVolume() {
+    if (volumeView)
+        delete volumeView;
+}
+
+void cSDDisplayVolume::SetVolume(int Current, int Total, bool Mute) {
+    if (!doOutput)
+        return;
+    volumeView->DrawVolume(Current, Total, Mute);
+}
+
+void cSDDisplayVolume::Flush(void) {
+    if (!doOutput)
+        return;
+    if (initial) {
+        volumeView->DoFadeIn();
+        initial = false;
+    } else {
+        volumeView->Flush();
+    }
+}
diff --git a/displayvolume.h b/displayvolume.h
new file mode 100644
index 0000000..1bfc877
--- /dev/null
+++ b/displayvolume.h
@@ -0,0 +1,21 @@
+#ifndef __DISPLAYVOLUME_H
+#define __DISPLAYVOLUME_H
+
+#include <vdr/skins.h>
+#include "config.h"
+#include "libtemplate/template.h"
+#include "views/displayvolumeview.h"
+
+class cSDDisplayVolume : public cSkinDisplayVolume {
+private:
+    cDisplayVolumeView *volumeView;
+    bool doOutput;
+    bool initial;
+public:
+    cSDDisplayVolume(cTemplate *volumeTemplate);
+    virtual ~cSDDisplayVolume();
+    virtual void SetVolume(int Current, int Total, bool Mute);
+    virtual void Flush(void);
+};
+
+#endif //__DISPLAYVOLUME_H
\ No newline at end of file
diff --git a/dtd/displayaudiotracks.dtd b/dtd/displayaudiotracks.dtd
new file mode 100644
index 0000000..e6cd869
--- /dev/null
+++ b/dtd/displayaudiotracks.dtd
@@ -0,0 +1,42 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displayaudiotracks (background | header | menuitems)*>
+<!ATTLIST displayaudiotracks
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area|areascroll)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT header (area|areascroll)*>
+<!ATTLIST header
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT menuitems (listelement)>
+<!ATTLIST menuitems
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  align (left|top|center|bottom|right) #IMPLIED
+  menuitemwidth CDATA #IMPLIED
+  numlistelements CDATA #REQUIRED
+  orientation (horizontal|vertical) #REQUIRED
+>
+
+<!ELEMENT listelement (area|areascroll)*>
+
+%functions;
\ No newline at end of file
diff --git a/dtd/displaychannel.dtd b/dtd/displaychannel.dtd
new file mode 100644
index 0000000..c3d3761
--- /dev/null
+++ b/dtd/displaychannel.dtd
@@ -0,0 +1,111 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displaychannel (background | channelinfo | epginfo | progressbar | progressbarback |  
+                          statusinfo | audioinfo | screenresolution | channelgroup | 
+                          signalquality | signalqualityback | devices | currentweather | scrapercontent |  
+                          datetime | time | message | customtokens)* >
+<!ATTLIST displaychannel
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT channelinfo (area|areascroll)*>
+<!ATTLIST channelinfo
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT epginfo (area|areascroll)*>
+<!ATTLIST epginfo
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT progressbar (area|areascroll)*>
+<!ATTLIST progressbar
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT progressbarback (area)*>
+<!ATTLIST progressbarback
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT statusinfo (area|areascroll)*>
+<!ATTLIST statusinfo
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT audioinfo (area|areascroll)*>
+<!ATTLIST audioinfo
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT screenresolution (area|areascroll)*>
+<!ATTLIST screenresolution
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT channelgroup (area|areascroll)*>
+<!ATTLIST channelgroup
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT signalquality (area|areascroll)*>
+<!ATTLIST signalquality
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT signalqualityback (area|areascroll)*>
+<!ATTLIST signalqualityback
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT devices (area|areascroll)*>
+<!ATTLIST devices
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currentweather (area|areascroll)*>
+<!ATTLIST currentweather
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT scrapercontent (area|areascroll)*>
+<!ATTLIST scrapercontent
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT datetime (area|areascroll)*>
+<!ATTLIST datetime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT time (area|areascroll)*>
+<!ATTLIST time
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT message (area|areascroll)*>
+<!ATTLIST message
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT customtokens (area|areascroll)*>
+<!ATTLIST customtokens
+  debug CDATA #IMPLIED
+>
+
+%functions;
diff --git a/dtd/displaymenu.dtd b/dtd/displaymenu.dtd
new file mode 100644
index 0000000..b14c3da
--- /dev/null
+++ b/dtd/displaymenu.dtd
@@ -0,0 +1,276 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displaymenu (background,header,datetime,time*,message,colorbuttons,
+                       menudefault,menumain*,menusetup*,menuschedules*,
+                       menutimers*,menuchannels*,menurecordings*,
+                       menudetailedepg,menudetailedrecording,
+                       menudetailedtext)>
+<!ATTLIST displaymenu
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT header (area|areascroll)*>
+<!ATTLIST header
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT datetime (area|areascroll)*>
+<!ATTLIST datetime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT time (area|areascroll)*>
+<!ATTLIST time
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT message (area|areascroll)*>
+<!ATTLIST message
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT colorbuttons (area|areascroll)*>
+<!ATTLIST colorbuttons
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT timers (area|areascroll)*>
+<!ATTLIST timers
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT discusage (area|areascroll)*>
+<!ATTLIST discusage
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT devices (area|areascroll)*>
+<!ATTLIST devices
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT systemload (area|areascroll)*>
+<!ATTLIST systemload
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT temperatures (area|areascroll)*>
+<!ATTLIST temperatures
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currentschedule (area|areascroll)*>
+<!ATTLIST currentschedule
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currentweather (area|areascroll)*>
+<!ATTLIST currentweather
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT customtokens (area|areascroll)*>
+<!ATTLIST customtokens
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT scrollbar (area|areascroll)*>
+<!ATTLIST scrollbar
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT detailheader (area|areascroll)*>
+<!ATTLIST detailheader
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT tablabels (area|areascroll)*>
+<!ATTLIST tablabels
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT menudefault (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menudefault
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menumain (background | header | datetime | time | colorbuttons | scrollbar | timers | 
+                    discusage | devices | systemload | temperatures | currentschedule | currentweather | customtokens | menuitems)*>
+<!ATTLIST menumain
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menusetup (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menusetup
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menuschedules (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menuschedules
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menutimers (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menutimers
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menuchannels (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menuchannels
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menurecordings (background | header | datetime | time | colorbuttons | scrollbar | menuitems)*>
+<!ATTLIST menurecordings
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menudetailedepg (background | header | datetime | time | colorbuttons | scrollbar |
+                           detailheader | tab | tablabels)*>
+<!ATTLIST menudetailedepg
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menudetailedrecording (background | header | datetime | time | colorbuttons | scrollbar |
+                                 detailheader | tab | tablabels)*>
+<!ATTLIST menudetailedrecording
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menudetailedtext (background | header | datetime | time | colorbuttons | scrollbar |
+                            detailheader | tab )*>
+<!ATTLIST menudetailedtext
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT menuitems (listelement,currentelement?)>
+<!ATTLIST menuitems
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  align (left|top|center|bottom|right) #IMPLIED
+  menuitemwidth CDATA #IMPLIED
+  determinatefont CDATA #IMPLIED
+  numlistelements CDATA #REQUIRED
+  orientation (horizontal|vertical) #REQUIRED
+>
+
+<!ELEMENT listelement (area|areascroll)*>
+<!ATTLIST listelement
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currentelement (area|areascroll)*>
+<!ATTLIST currentelement
+  delay CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT tab (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse)*>
+<!ATTLIST tab
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  layer CDATA #REQUIRED
+  name CDATA #REQUIRED
+  scrollheight CDATA #REQUIRED
+  transparency CDATA #IMPLIED
+  condition CDATA #IMPLIED
+  debug (true|false) #IMPLIED
+>
+
+%functions;
\ No newline at end of file
diff --git a/dtd/displaymenuplugin.dtd b/dtd/displaymenuplugin.dtd
new file mode 100644
index 0000000..bcd005c
--- /dev/null
+++ b/dtd/displaymenuplugin.dtd
@@ -0,0 +1,96 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT menuplugin (background|header|datetime|message|colorbuttons|scrollbar|detailheader|menuitems|tab|tablabels)*>
+<!ATTLIST menuplugin
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT header (area|areascroll)*>
+<!ATTLIST header
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT datetime (area|areascroll)*>
+<!ATTLIST datetime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT message (area|areascroll)*>
+<!ATTLIST message
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT colorbuttons (area|areascroll)*>
+<!ATTLIST colorbuttons
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT scrollbar (area|areascroll)*>
+<!ATTLIST scrollbar
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT detailheader (area|areascroll)*>
+<!ATTLIST detailheader
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT tablabels (area|areascroll)*>
+<!ATTLIST tablabels
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT menuitems (listelement,currentelement?)>
+<!ATTLIST menuitems
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  align (left|top|center|bottom|right) #IMPLIED
+  menuitemwidth CDATA #IMPLIED
+  numlistelements CDATA #REQUIRED
+  orientation (horizontal|vertical) #REQUIRED
+>
+
+<!ELEMENT listelement (area|areascroll)*>
+<!ATTLIST listelement
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currentelement (area|areascroll)*>
+<!ATTLIST currentelement
+  delay CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT tab (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse)*>
+<!ATTLIST tab
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  layer CDATA #REQUIRED
+  name CDATA #REQUIRED
+  scrollheight CDATA #REQUIRED
+  transparency CDATA #IMPLIED
+  condition CDATA #IMPLIED
+  debug (true|false) #IMPLIED
+>
+
+%functions;
\ No newline at end of file
diff --git a/dtd/displaymessage.dtd b/dtd/displaymessage.dtd
new file mode 100644
index 0000000..223ea2d
--- /dev/null
+++ b/dtd/displaymessage.dtd
@@ -0,0 +1,28 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displaymessage (background | message)*>
+<!ATTLIST displaymessage
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT message (area|areascroll)*>
+<!ATTLIST message
+  debug CDATA #IMPLIED
+>
+
+%functions;
\ No newline at end of file
diff --git a/dtd/displayreplay.dtd b/dtd/displayreplay.dtd
new file mode 100644
index 0000000..c2333c3
--- /dev/null
+++ b/dtd/displayreplay.dtd
@@ -0,0 +1,116 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displayreplay (background | backgroundmodeonly |datetime | time | 
+                         scrapercontent | rectitle | recinfo | currenttime | 
+                         totaltime | progressbar | cutmarks | controlicons | 
+                         controliconsmodeonly | jump | message | onpause | 
+                         onpausemodeonly | customtokens)*>
+<!ATTLIST displayreplay
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT backgroundmodeonly (area)*>
+<!ATTLIST backgroundmodeonly
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT datetime (area|areascroll)*>
+<!ATTLIST datetime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT time (area|areascroll)*>
+<!ATTLIST time
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT scrapercontent (area|areascroll)*>
+<!ATTLIST scrapercontent
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT rectitle (area|areascroll)*>
+<!ATTLIST rectitle
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT recinfo (area|areascroll)*>
+<!ATTLIST recinfo
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT currenttime (area|areascroll)*>
+<!ATTLIST currenttime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT totaltime (area|areascroll)*>
+<!ATTLIST totaltime
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT progressbar (area|areascroll)*>
+<!ATTLIST progressbar
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT cutmarks (area|areascroll)*>
+<!ATTLIST cutmarks
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT controlicons (area|areascroll)*>
+<!ATTLIST controlicons
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT controliconsmodeonly (area|areascroll)*>
+<!ATTLIST controliconsmodeonly
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT jump (area|areascroll)*>
+<!ATTLIST jump
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT message (area|areascroll)*>
+<!ATTLIST message
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT onpause (area|areascroll)*>
+<!ATTLIST onpause
+  debug CDATA #IMPLIED
+  delay CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+>
+
+<!ELEMENT onpausemodeonly (area|areascroll)*>
+<!ATTLIST onpausemodeonly
+  debug CDATA #IMPLIED
+  delay CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+>
+
+<!ELEMENT customtokens (area|areascroll)*>
+<!ATTLIST customtokens
+  debug CDATA #IMPLIED
+>
+
+%functions;
\ No newline at end of file
diff --git a/dtd/displayvolume.dtd b/dtd/displayvolume.dtd
new file mode 100644
index 0000000..2be597d
--- /dev/null
+++ b/dtd/displayvolume.dtd
@@ -0,0 +1,28 @@
+<?xml encoding="UTF-8"?>
+
+<!ENTITY % functions SYSTEM "functions.dtd">
+
+<!ELEMENT displayvolume (background | volume)*>
+<!ATTLIST displayvolume
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  fadetime CDATA #IMPLIED
+  scaletvx CDATA #IMPLIED
+  scaletvy CDATA #IMPLIED
+  scaletvwidth CDATA #IMPLIED
+  scaletvheight CDATA #IMPLIED
+>
+
+<!ELEMENT background (area)*>
+<!ATTLIST background
+  debug CDATA #IMPLIED
+>
+
+<!ELEMENT volume (area|areascroll)*>
+<!ATTLIST volume
+  debug CDATA #IMPLIED
+>
+
+%functions;
diff --git a/dtd/functions.dtd b/dtd/functions.dtd
new file mode 100644
index 0000000..27ba561
--- /dev/null
+++ b/dtd/functions.dtd
@@ -0,0 +1,146 @@
+<!ELEMENT area (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)*>
+<!ATTLIST area
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #IMPLIED
+  height CDATA #IMPLIED
+  layer CDATA #REQUIRED
+  transparency CDATA #IMPLIED
+  condition CDATA #IMPLIED
+  debug (true|false) #IMPLIED
+>
+
+<!ELEMENT areascroll (loop|fill|drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)*>
+<!ATTLIST areascroll
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #IMPLIED
+  height CDATA #IMPLIED
+  layer CDATA #REQUIRED
+  transparency CDATA #IMPLIED
+  mode (forthandback|carriagereturn) #REQUIRED
+  orientation (horizontal|vertical) #REQUIRED
+  scrollelement CDATA #IMPLIED
+  scrollspeed (slow|medium|fast) #REQUIRED
+  condition CDATA #IMPLIED
+  delay CDATA #REQUIRED
+  debug (true|false) #IMPLIED
+>
+
+<!ELEMENT loop (drawtext|drawtextbox|drawimage|drawrectangle|drawellipse|drawslope)+>
+<!ATTLIST loop
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #IMPLIED
+  height CDATA #IMPLIED
+  columnwidth CDATA #IMPLIED
+  rowheight CDATA #IMPLIED
+  name CDATA #REQUIRED
+  orientation (horizontal|vertical|absolute) #REQUIRED
+  overflow (linewrap|cut) #IMPLIED
+  maxitems CDATA #IMPLIED
+  debug (true|false) #IMPLIED
+>
+
+<!ELEMENT fill EMPTY>
+<!ATTLIST fill
+  color CDATA #REQUIRED
+  condition CDATA #IMPLIED
+  debug (true|false) #IMPLIED
+>
+
+<!ELEMENT drawtext EMPTY>
+<!ATTLIST drawtext
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #IMPLIED
+  align (left|center|right) #IMPLIED
+  valign (top|center|bottom) #IMPLIED
+  color CDATA #REQUIRED
+  font CDATA #REQUIRED
+  fontsize CDATA #REQUIRED
+  name NMTOKEN #IMPLIED
+  text CDATA #REQUIRED
+  condition CDATA #IMPLIED
+  debug (true|false) #IMPLIED  
+>
+
+<!ELEMENT drawtextbox EMPTY>
+<!ATTLIST drawtextbox
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #REQUIRED
+  height CDATA #IMPLIED
+  align (left|center|right) #IMPLIED
+  maxlines CDATA #IMPLIED
+  floatwidth CDATA #IMPLIED
+  floatheight CDATA #IMPLIED
+  float (topleft|topright) #IMPLIED
+  color CDATA #REQUIRED
+  font CDATA #REQUIRED
+  fontsize CDATA #REQUIRED
+  name NMTOKEN #IMPLIED
+  text CDATA #REQUIRED
+  condition CDATA #IMPLIED
+  debug NMTOKEN #IMPLIED
+>
+
+<!ELEMENT drawrectangle EMPTY>
+<!ATTLIST drawrectangle
+  x CDATA #REQUIRED
+  y CDATA #REQUIRED
+  width CDATA #IMPLIED
+  height CDATA #IMPLIED
+  align (left|center|right) #IMPLIED
+  valign (top|center|bottom) #IMPLIED
+  color CDATA #REQUIRED
+  name NMTOKEN #IMPLIED
+  condition CDATA #IMPLIED
+  debug NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT drawellipse EMPTY>
+<!ATTLIST drawellipse
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #IMPLIED
+  height CDATA #IMPLIED
+  align (left|center|right) #IMPLIED
+  valign (top|center|bottom) #IMPLIED
+  color CDATA #REQUIRED
+  quadrant CDATA #REQUIRED
+  name NMTOKEN #IMPLIED
+  condition CDATA #IMPLIED
+  debug NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT drawslope EMPTY>
+<!ATTLIST drawslope
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  align (left|center|right) #IMPLIED
+  valign (top|center|bottom) #IMPLIED
+  color CDATA #REQUIRED
+  type CDATA #REQUIRED
+  name NMTOKEN #IMPLIED
+  condition CDATA #IMPLIED
+  debug NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT drawimage EMPTY>
+<!ATTLIST drawimage
+  x CDATA #IMPLIED
+  y CDATA #IMPLIED
+  width CDATA #REQUIRED
+  height CDATA #REQUIRED
+  align (left|center|right) #IMPLIED
+  valign (top|center|bottom) #IMPLIED
+  imagetype (channellogo|seplogo|skinpart|menuicon|icon|image) #REQUIRED
+  cache (true|false) #IMPLIED
+  path CDATA #REQUIRED
+  name CDATA #IMPLIED
+  condition CDATA #IMPLIED
+  debug NMTOKEN #IMPLIED
+>
diff --git a/dtd/globals.dtd b/dtd/globals.dtd
new file mode 100644
index 0000000..d7a463c
--- /dev/null
+++ b/dtd/globals.dtd
@@ -0,0 +1,29 @@
+<?xml encoding="UTF-8"?>
+
+<!ELEMENT globals (colors | variables | translations | fonts)*>
+<!ELEMENT colors (color)*>
+<!ELEMENT variables (var)*>
+<!ELEMENT translations (token)*>
+<!ELEMENT fonts (font)*>
+
+<!ELEMENT color (#PCDATA)>
+<!ATTLIST color
+  name NMTOKEN #REQUIRED>
+
+<!ELEMENT var (#PCDATA)>
+<!ATTLIST var
+  name NMTOKEN #REQUIRED
+  type (int|double|string) #REQUIRED>
+
+<!ELEMENT token (trans)+>
+<!ATTLIST token
+  name CDATA #REQUIRED>
+
+<!ELEMENT trans (#PCDATA)>
+<!ATTLIST trans
+  lang NMTOKEN #REQUIRED>
+
+<!ELEMENT font (#PCDATA)>
+<!ATTLIST font
+  name NMTOKEN #REQUIRED>
+
diff --git a/dtd/setup.dtd b/dtd/setup.dtd
new file mode 100644
index 0000000..d56fc40
--- /dev/null
+++ b/dtd/setup.dtd
@@ -0,0 +1,28 @@
+<?xml encoding="UTF-8"?>
+
+<!ELEMENT setup (menu,translations)>
+<!ELEMENT menu (submenu | parameter)*>
+<!ELEMENT translations (token)*>
+
+<!ELEMENT submenu (submenu | parameter)*>
+<!ATTLIST submenu
+  name NMTOKEN #REQUIRED
+  displaytext CDATA #REQUIRED
+  >
+
+<!ELEMENT parameter (#PCDATA)>
+<!ATTLIST parameter
+  name NMTOKEN #REQUIRED
+  type (int|bool) #REQUIRED
+  min NMTOKEN #IMPLIED
+  max NMTOKEN #IMPLIED
+  displaytext CDATA #REQUIRED
+  >
+
+<!ELEMENT token (trans)+>
+<!ATTLIST token
+  name CDATA #REQUIRED>
+
+<!ELEMENT trans (#PCDATA)>
+<!ATTLIST trans
+  lang NMTOKEN #REQUIRED>
diff --git a/extrecinfo/template.txt b/extrecinfo/template.txt
new file mode 100644
index 0000000..5a7e76b
--- /dev/null
+++ b/extrecinfo/template.txt
@@ -0,0 +1,4 @@
+General;<mediainfo>
+Video;<res_width>%Width%</res_width><res_height>%Height%</res_height><aspectratio>%DisplayAspectRatio/String%</aspectratio><codec>%Codec%</codec><format>%Format_Commercial%</format><framerate>%FrameRate%</framerate><interlace>%Interlacement%</interlace>
+Audio;<track><codec>%Format_Commercial%</codec><bitrate>%BitRate%</bitrate><language>%Language%</language></track>
+File_End;</mediainfo>
diff --git a/fonts/VDROpenSans/Apache License.txt b/fonts/VDROpenSans/Apache License.txt
new file mode 100644
index 0000000..989e2c5
--- /dev/null
+++ b/fonts/VDROpenSans/Apache License.txt	
@@ -0,0 +1,201 @@
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
\ No newline at end of file
diff --git a/fonts/VDROpenSans/VDROpenSans-Bold.ttf b/fonts/VDROpenSans/VDROpenSans-Bold.ttf
new file mode 100644
index 0000000..9d51f27
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-Bold.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-BoldItalic.ttf b/fonts/VDROpenSans/VDROpenSans-BoldItalic.ttf
new file mode 100644
index 0000000..61fc899
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-BoldItalic.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-ExtraBold.ttf b/fonts/VDROpenSans/VDROpenSans-ExtraBold.ttf
new file mode 100644
index 0000000..3701480
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-ExtraBold.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-ExtraBoldItalic.ttf b/fonts/VDROpenSans/VDROpenSans-ExtraBoldItalic.ttf
new file mode 100644
index 0000000..b760f90
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-ExtraBoldItalic.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-Italic.ttf b/fonts/VDROpenSans/VDROpenSans-Italic.ttf
new file mode 100644
index 0000000..4fc4fe1
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-Italic.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-Light.ttf b/fonts/VDROpenSans/VDROpenSans-Light.ttf
new file mode 100644
index 0000000..4806a9c
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-Light.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-LightItalic.ttf b/fonts/VDROpenSans/VDROpenSans-LightItalic.ttf
new file mode 100644
index 0000000..4380547
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-LightItalic.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-Regular.ttf b/fonts/VDROpenSans/VDROpenSans-Regular.ttf
new file mode 100644
index 0000000..eaa8273
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-Regular.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-Semibold.ttf b/fonts/VDROpenSans/VDROpenSans-Semibold.ttf
new file mode 100644
index 0000000..2394fe1
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-Semibold.ttf differ
diff --git a/fonts/VDROpenSans/VDROpenSans-SemiboldItalic.ttf b/fonts/VDROpenSans/VDROpenSans-SemiboldItalic.ttf
new file mode 100644
index 0000000..1afcda3
Binary files /dev/null and b/fonts/VDROpenSans/VDROpenSans-SemiboldItalic.ttf differ
diff --git a/libcore/extrecinfo.c b/libcore/extrecinfo.c
new file mode 100644
index 0000000..435d43b
--- /dev/null
+++ b/libcore/extrecinfo.c
@@ -0,0 +1,96 @@
+#include "../config.h"
+#include "helpers.h"
+#include "extrecinfo.h"
+
+cExtRecInfo::cExtRecInfo(const char *xml) {
+	this->xml = xml;
+}
+
+cExtRecInfo::~cExtRecInfo(void) {
+	
+}
+
+bool cExtRecInfo::Parse(void) {
+	//read media info
+	string mediaInfoXml;
+	StripXmlTag(xml, mediaInfoXml, "mediainfo");
+	if (mediaInfoXml.size() == 0) {
+		return false;
+	}
+	StripXmlTag(mediaInfoXml, resWidth, "res_width");
+	StripXmlTag(mediaInfoXml, resHeight, "res_height");
+	resString = GetScreenResolutionString(resWidth, resHeight, &isHD);
+	StripXmlTag(mediaInfoXml, aspectratio, "aspectratio");
+	isWideScreen = !aspectratio.compare("16:9");
+	StripXmlTag(mediaInfoXml, codec, "codec");
+	StripXmlTag(mediaInfoXml, format, "format");
+ 	StripXmlTag(mediaInfoXml, framerate, "framerate");
+	StripXmlTag(mediaInfoXml, interlace, "interlace");
+
+	size_t found = 0;
+	isDolby = false;
+	do {
+		string track;
+		found = StripXmlTag(mediaInfoXml, track, "track", found);
+		if (found == string::npos)
+			break;
+		tAudioTrack sTrack;
+		StripXmlTag(track, sTrack.codec, "codec");
+		StripXmlTag(track, sTrack.bitrate, "bitrate");
+		StripXmlTag(track, sTrack.language, "language");
+		if (!sTrack.codec.compare("AC-3"))
+			isDolby = true;
+		tracks.push_back(sTrack);
+	} while (found != string::npos);
+
+	return true;
+}
+
+//get content of <tag> ... </tag> inside xml
+size_t cExtRecInfo::StripXmlTag(string &xmlstring, string &content, const char *tag, int start) {
+    // set the search strings
+    stringstream strStart, strStop;
+    strStart << "<" << tag << ">";
+    strStop << "</" << tag << ">";
+    // find the strings
+    size_t locStart = xmlstring.find(strStart.str(), start);
+    size_t locStop  = xmlstring.find(strStop.str(), start);
+    if (locStart == string::npos || locStop == string::npos)
+        return string::npos;
+    // extract relevant text
+    int pos = locStart + strStart.str().size();
+    int len = locStop - pos;
+    
+    content = (len < 0) ? "" : xmlstring.substr(pos, len);
+    return locStop + strStop.str().size();
+}
+
+size_t cExtRecInfo::StripXmlTag(string &xmlstring, int &content, const char *tag, int start) {
+    // set the search strings
+    stringstream strStart, strStop;
+    strStart << "<" << tag << ">";
+    strStop << "</" << tag << ">";
+    // find the strings
+    size_t locStart = xmlstring.find(strStart.str(), start);
+    size_t locStop  = xmlstring.find(strStop.str(), start);
+    if (locStart == string::npos || locStop == string::npos)
+        return string::npos;
+    // extract relevant text
+    int pos = locStart + strStart.str().size();
+    int len = locStop - pos;
+    
+    string value = (len < 0) ? "" : xmlstring.substr(pos, len);
+    content = atoi(value.c_str());
+    return locStop + strStop.str().size();
+}
+
+void cExtRecInfo::Debug(void) {
+	dsyslog("skindesigner: extRecInfo xml: %s", xml.c_str());
+	dsyslog("skindesigner: : res_width %d, res_height %d, res %s, aspectratio %s, codec %s, format %s, framerate %s, interlace %s, hd %s, widescreen %s", 
+			resWidth, resHeight, resString.c_str(), aspectratio.c_str(), codec.c_str(), format.c_str(), framerate.c_str(), interlace.c_str(),
+			isHD ? "true": "false", isWideScreen ? "true" : "false");
+	int numTrack = 1;
+	for (vector<tAudioTrack>::iterator it = tracks.begin(); it != tracks.end(); it++) {
+		dsyslog("skindesigner: audio track %d, codec %s, bitrate %s, language: %s", numTrack++, (*it).codec.c_str(), (*it).bitrate.c_str(), (*it).language.c_str());
+	}
+}
diff --git a/libcore/extrecinfo.h b/libcore/extrecinfo.h
new file mode 100644
index 0000000..9fb5bab
--- /dev/null
+++ b/libcore/extrecinfo.h
@@ -0,0 +1,36 @@
+#ifndef __EXTRECINFO_H
+#define __EXTRECINFO_H
+
+#include <vdr/recording.h>
+
+struct tAudioTrack {
+  string codec;
+  string bitrate;
+  string language;
+};
+
+class cExtRecInfo {
+private:
+  string xml;
+  size_t StripXmlTag(string &xmlstring, string &content, const char *tag, int start = 0);
+  size_t StripXmlTag(string &xmlstring, int &content, const char *tag, int start = 0);
+public:
+  cExtRecInfo(const char *xml);
+  ~cExtRecInfo(void);
+  bool Parse(void);
+  void Debug(void);
+  int resWidth;
+  int resHeight;
+  string resString;
+  bool isHD;
+  string aspectratio;
+  bool isWideScreen;
+  string codec;
+  string format;
+  string framerate;
+  string interlace;
+  bool isDolby;
+  vector< tAudioTrack > tracks; 
+};
+
+#endif // __EXTRECINFO_H
\ No newline at end of file
diff --git a/libcore/fontmanager.c b/libcore/fontmanager.c
new file mode 100644
index 0000000..1f45af7
--- /dev/null
+++ b/libcore/fontmanager.c
@@ -0,0 +1,180 @@
+#include "fontmanager.h"
+#include "../config.h"
+#include <ft2build.h>   
+#include FT_FREETYPE_H
+
+using namespace std;
+
+cMutex cFontManager::mutex;
+
+cFontManager::cFontManager() {
+}
+
+cFontManager::~cFontManager() {
+    DeleteFonts();
+}
+
+void cFontManager::CacheFonts(cTemplate *tpl) {
+    cMutexLock MutexLock(&mutex);
+
+    vector< pair<string, int> > usedFonts = tpl->GetUsedFonts();
+
+    cStringList availableFonts;
+    cFont::GetAvailableFontNames(&availableFonts);
+
+    for (vector< pair<string, int> >::iterator ft = usedFonts.begin(); ft != usedFonts.end(); ft++) {
+        string fontName = ft->first;
+        int fontSize = ft->second;
+        if (fontSize < 1) {
+            continue;
+        }
+
+        int fontAvailable = availableFonts.Find(fontName.c_str());
+        if (fontAvailable == -1) {
+            esyslog("skindesigner: font %s not available, skipping", fontName.c_str());
+            continue;
+        }
+
+        InsertFont(fontName, fontSize);
+    }
+}
+
+void cFontManager::Debug(void) {
+    dsyslog("skindesigner: fontmanager fonts available:");
+    for (map < string, map< int, cFont* > >::iterator fts = fonts.begin(); fts != fonts.end(); fts++) {
+        dsyslog("skindesigner: FontName %s", fts->first.c_str());
+        for (map<int, cFont*>::iterator ftSizes = (fts->second).begin(); ftSizes != (fts->second).end(); ftSizes++) {
+            int confHeight = ftSizes->first;
+            int realHeight = (ftSizes->second)->Height();
+            dsyslog("skindesigner: fontSize %d, fontHeight %d, ratio %f", confHeight, realHeight, (double)confHeight / (double)realHeight);
+        }
+    }
+}
+
+void cFontManager::ListAvailableFonts(void) {
+    cStringList availableFonts;
+    cFont::GetAvailableFontNames(&availableFonts);
+    int numFonts = availableFonts.Size();
+    esyslog("skindesigner: %d Fonts available:", numFonts);
+    for (int i=0; i<numFonts; i++) {
+        esyslog("skindesigner: font %d: %s", i, availableFonts[i]);
+    }
+}
+
+void cFontManager::DeleteFonts() {
+    cMutexLock MutexLock(&mutex);
+    for(map<string, map<int,cFont*> >::iterator it = fonts.begin(); it != fonts.end(); it++) {
+        for(map<int,cFont*>::iterator it2 = (it->second).begin(); it2 != (it->second).end(); it2++) {
+            delete it2->second;
+        }
+    }
+    fonts.clear();
+}
+
+int cFontManager::Width(string fontName, int fontSize, const char *text) {
+    cMutexLock MutexLock(&mutex);
+    if (!text)
+        return 0;
+    cFont *font = GetFont(fontName, fontSize);
+    //if not already cached, load it new
+    if (!font)
+        InsertFont(fontName, fontSize);
+    font = GetFont(fontName, fontSize);
+    if (!font)
+        return 0;
+    int width = font->Width(text);
+    return width;
+}
+
+int cFontManager::Height(string fontName, int fontSize) {
+    cMutexLock MutexLock(&mutex);
+    cFont *font = GetFont(fontName, fontSize);
+    //if not already cached, load it new
+    if (!font)
+        InsertFont(fontName, fontSize);
+    font = GetFont(fontName, fontSize);
+    if (!font)
+        return 0;
+    return font->Height();
+}
+
+cFont *cFontManager::Font(string fontName, int fontSize) {
+    cMutexLock MutexLock(&mutex);
+    cFont *font = GetFont(fontName, fontSize);
+    //if not already cached, load it new
+    if (!font)
+        InsertFont(fontName, fontSize);
+    font = GetFont(fontName, fontSize);
+    return font;
+}
+
+cFont *cFontManager::FontUncached(string fontName, int fontSize) {
+    cMutexLock MutexLock(&mutex);
+    cFont *font = CreateFont(fontName, fontSize);
+    return font;
+}
+
+/********************************************************************************
+* Private Functions 
+********************************************************************************/
+
+cFont *cFontManager::CreateFont(string name, int size) {
+    cMutexLock MutexLock(&mutex);
+    cFont *fontTmp = cFont::CreateFont(name.c_str(), size);
+    if (!fontTmp)
+        fontTmp = cFont::CreateFont(Setup.FontOsd, size);
+    int realHeight = fontTmp->Height();
+    delete fontTmp;
+    cFont *font = cFont::CreateFont(name.c_str(), (double)size / (double)realHeight * (double)size);
+    if (!font)
+        font = cFont::CreateFont(Setup.FontOsd, (double)size / (double)realHeight * (double)size);
+    return font;
+}
+
+void cFontManager::InsertFont(string name, int size) {
+    cFont *newFont = CreateFont(name, size);
+    if (!newFont)
+        return;
+    map < string, map< int, cFont* > >::iterator hit = fonts.find(name);
+    if (hit != fonts.end()) {
+        (hit->second).insert(pair<int, cFont*>(size, newFont));
+    } else {
+        map<int, cFont*> fontsizes;
+        fontsizes.insert(pair<int, cFont*>(size, newFont));
+        fonts.insert(pair<string, map<int, cFont*> >(name, fontsizes));
+    }
+}
+
+cFont *cFontManager::GetFont(string name, int size) {
+    map< string, map<int,cFont*> >::iterator hitName = fonts.find(name);
+    if (hitName == fonts.end())
+        return NULL;
+    map<int,cFont*>::iterator hitSize = (hitName->second).find(size);
+    if (hitSize == (hitName->second).end())
+        return NULL;
+    return hitSize->second;
+}
+
+int cFontManager::GetFontHeight(const char *name, int height, int charWidth) {
+    FT_Library library;
+    FT_Face face;
+    cString fontFileName = cFont::GetFontFileName(name);
+    
+    int descender = 0;
+    int y_ppem = 0;
+    int error = FT_Init_FreeType(&library);
+    if (error) return 0;
+    error = FT_New_Face(library, fontFileName, 0, &face);
+    if (error) return 0;
+    error = FT_Set_Char_Size(face, charWidth * 64, height * 64, 0, 0);
+    if (error) return 0;
+
+    descender = face->size->metrics.descender/64;
+    y_ppem = face->size->metrics.y_ppem;
+    int realHeight = y_ppem + descender;
+
+    FT_Done_Face(face);
+    FT_Done_FreeType(library);
+
+    return realHeight;
+}
diff --git a/libcore/fontmanager.h b/libcore/fontmanager.h
new file mode 100644
index 0000000..bfabb5c
--- /dev/null
+++ b/libcore/fontmanager.h
@@ -0,0 +1,36 @@
+#ifndef __FONTMANAGER_H
+#define __FONTMANAGER_H
+
+#include <string>
+#include <map>
+#include <vector>
+#include <vdr/skins.h>
+
+#include "../libtemplate/template.h"
+
+using namespace std;
+
+class cFontManager {
+    private:
+        static cMutex mutex;
+        map < string, map< int, cFont* > > fonts;
+        cFont *CreateFont(string name, int size);
+        void InsertFont(string name, int size);
+        cFont *GetFont(string name, int size);
+        int GetFontHeight(const char *name, int height, int charWidth = 0);
+    public:
+        cFontManager();
+        ~cFontManager();
+        void Lock(void) { mutex.Lock(); };
+        void Unlock(void) { mutex.Unlock(); };
+        void CacheFonts(cTemplate *tpl);
+        void DeleteFonts(void);
+        int Width(string fontName, int fontSize, const char *text);
+        int Height(string fontName, int fontSize);
+        cFont *Font(string fontName, int fontSize);
+        cFont *FontUncached(string fontName, int fontSize);
+        void Debug(void);
+        void ListAvailableFonts(void);
+};
+
+#endif //__FONTMANAGER_H
\ No newline at end of file
diff --git a/libcore/helpers.c b/libcore/helpers.c
new file mode 100644
index 0000000..3e08e11
--- /dev/null
+++ b/libcore/helpers.c
@@ -0,0 +1,234 @@
+#include <string>
+#include <sstream>
+#include <vector>
+#include "helpers.h"
+#include <vdr/skins.h>
+
+cPlugin *GetScraperPlugin(void) {
+    static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+    if( !pScraper ) // if it doesn't exit, try tvscraper
+        pScraper = cPluginManager::GetPlugin("tvscraper");
+    return pScraper;
+}
+
+cSize ScaleToFit(int widthMax, int heightMax, int widthOriginal, int heightOriginal) {
+    int width = 1;
+    int height = 1;
+
+    if ((widthMax == 0)||(heightMax==0)||(widthOriginal==0)||(heightOriginal==0))
+        return cSize(width, height);
+
+    if ((widthOriginal <= widthMax) && (heightOriginal <= heightMax)) {
+        width = widthOriginal;
+        height = heightOriginal;
+    } else if ((widthOriginal > widthMax) && (heightOriginal <= heightMax)) {
+        width = widthMax;
+        height = (double)width/(double)widthOriginal * heightOriginal;
+    } else if ((widthOriginal <= widthMax) && (heightOriginal > heightMax)) {
+        height = heightMax;
+        width = (double)height/(double)heightOriginal * widthOriginal;
+    } else {
+        width = widthMax;
+        height = (double)width/(double)widthOriginal * heightOriginal;
+        if (height > heightMax) {
+            height = heightMax;
+            width = (double)height/(double)heightOriginal * widthOriginal;
+        }
+    }
+    return cSize(width, height);
+}
+
+int Minimum(int a, int b, int c, int d, int e, int f) {
+    int min = a;
+    if (b < min) min = b;
+    if (c < min) min = c;
+    if (d < min) min = d;
+    if (e < min) min = e;
+    if (f < min) min = f;
+    return min;
+}
+
+string CutText(string &text, int width, string fontName, int fontSize) {
+    if (width <= fontManager->Font(fontName, fontSize)->Size())
+        return text.c_str();
+    cTextWrapper twText;
+    twText.Set(text.c_str(), fontManager->Font(fontName, fontSize), width);
+    string cuttedTextNative = twText.GetLine(0);
+    stringstream sstrText;
+    sstrText << cuttedTextNative << "...";
+    string cuttedText = sstrText.str();
+    int actWidth = fontManager->Width(fontName, fontSize, cuttedText.c_str());
+    if (actWidth > width) {
+        int overlap = actWidth - width;
+        int charWidth = fontManager->Width(fontName, fontSize, ".");
+        if (charWidth == 0)
+            charWidth = 1;
+        int cutChars = overlap / charWidth;
+        if (cutChars > 0) {
+            cuttedTextNative = cuttedTextNative.substr(0, cuttedTextNative.length() - cutChars);
+            stringstream sstrText2;
+            sstrText2 << cuttedTextNative << "...";
+            cuttedText = sstrText2.str();
+        }
+    }
+    return cuttedText;    
+}
+
+
+string StrToLowerCase(string str) {
+    string lowerCase = str;
+    const int length = lowerCase.length();
+    for(int i=0; i < length; ++i) {
+        lowerCase[i] = std::tolower(lowerCase[i]);
+    }
+    return lowerCase;
+}
+
+bool isNumber(const string& s) {
+    string::const_iterator it = s.begin();
+    while (it != s.end() && std::isdigit(*it)) ++it;
+    return !s.empty() && it == s.end();
+}
+
+bool IsToken(const string& token) {
+    if ((token.find("{") == 0) && (token.find("}") == (token.size()-1)))
+        return true;
+    return false;
+}
+
+bool FileExists(const string &fullpath) {
+    struct stat buffer;
+    return (stat (fullpath.c_str(), &buffer) == 0); 
+}
+
+bool FileExists(const string &path, const string &name, const string &ext) {
+    stringstream fileName;
+    fileName << path << name << "." << ext;
+    struct stat buffer;
+    return (stat (fileName.str().c_str(), &buffer) == 0); 
+}
+
+bool FolderExists(const string &path) {
+    struct stat buffer;
+    return stat(path.c_str(), &buffer) == 0 && S_ISDIR(buffer.st_mode);
+}
+
+bool FirstFileInFolder(string &path, string &extension, string &fileName) {
+    DIR *folder = NULL;
+    struct dirent *file;
+    folder = opendir(path.c_str());
+    if (!folder)
+        return false;
+    while (file = readdir(folder)) {
+        if (endswith(file->d_name, extension.c_str())) {
+            string currentFileName = file->d_name;
+            int strlength = currentFileName.size();
+            if (strlength < 8)
+                continue;
+            fileName = currentFileName;
+            return true;
+        }
+    }
+    return false;
+}
+
+// trim from start
+string &ltrim(string &s) {
+    s.erase(s.begin(), find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace))));
+    return s;
+}
+
+// trim from end
+string &rtrim(string &s) {
+    s.erase(find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(), s.end());
+    return s;
+}
+
+// trim from both ends
+string &trim(string &s) {
+    return ltrim(rtrim(s));
+}
+
+// split: receives a char delimiter; returns a vector of strings
+// By default ignores repeated delimiters, unless argument rep == 1.
+vector<string>& splitstring::split(char delim, int rep) {
+    if (!flds.empty()) flds.clear();  // empty vector if necessary
+    string work = data();
+    string buf = "";
+    int i = 0;
+    while (i < work.length()) {
+        if (work[i] != delim)
+            buf += work[i];
+        else if (rep == 1) {
+            flds.push_back(buf);
+            buf = "";
+        } else if (buf.length() > 0) {
+            flds.push_back(buf);
+            buf = "";
+        }
+        i++;
+    }
+    if (!buf.empty())
+        flds.push_back(buf);
+    return flds;
+}
+
+cStopWatch::cStopWatch(const char* message) {
+    start = cTimeMs::Now();
+    last = start;
+    if (message) {
+        dsyslog("skindesigner: Starting StopWatch %s", message);        
+    }
+}
+
+void cStopWatch::Report(const char* message) {
+    dsyslog("skindesigner: %s - needed %d ms", message, (int)(cTimeMs::Now() - last));
+    last = cTimeMs::Now();
+}
+
+void cStopWatch::Stop(const char* message) {
+    dsyslog("skindesigner: %s - needed %d ms", message, (int)(cTimeMs::Now() - start));
+}
+
+//View Helpers
+string GetScreenResolutionString(int width, int height, bool *isHD) {
+    string name = "";
+    switch (width) {
+        case 1920:
+        case 1440:
+            name = "hd1080i";
+            *isHD = true;
+            break;
+        case 1280:
+            if (height == 720)
+                name = "hd720p";
+            else
+                name = "hd1080i";
+            *isHD = true;
+            break;
+        case 720:
+            name = "sd576i";
+            break;
+        default:
+            name = "sd576i";
+            break;
+    }
+    return name;
+}
+
+string GetScreenAspectString(double aspect, bool *isWideScreen) {
+    string name = "";
+    *isWideScreen = false;
+    if (aspect == 4.0/3.0) {
+        name = "4:3";
+        *isWideScreen = false;
+    } else if (aspect == 16.0/9.0) {
+        name = "16:9";
+        *isWideScreen = true;
+    } else if (aspect == 2.21) {
+        name = "21:9";
+        *isWideScreen = true;
+    }
+    return name;
+}
+
diff --git a/libcore/helpers.h b/libcore/helpers.h
new file mode 100644
index 0000000..cfcd70d
--- /dev/null
+++ b/libcore/helpers.h
@@ -0,0 +1,46 @@
+#ifndef __HELPERS_H
+#define __HELPERS_H
+
+#include <vdr/osd.h>
+#include <vdr/plugin.h>
+#include "../config.h"
+
+cPlugin *GetScraperPlugin(void);
+
+cSize ScaleToFit(int widthMax, int heightMax, int widthOriginal, int heightOriginal);
+int Minimum(int a, int b, int c, int d, int e, int f);
+std::string CutText(string &text, int width, string fontName, int fontSize);
+std::string StrToLowerCase(string str);
+bool isNumber(const string& s);
+bool IsToken(const string& token);
+bool FileExists(const string &fullpath);
+bool FileExists(const string &path, const string &name, const string &ext);
+bool FolderExists(const string &path);
+bool FirstFileInFolder(string &path, string &extension, string &fileName);
+
+string &ltrim(string &s);
+string &rtrim(string &s);
+string &trim(string &s);
+
+class splitstring : public std::string {
+    std::vector<std::string> flds;
+public:
+    splitstring(const char *s) : std::string(s) { };
+    std::vector<std::string>& split(char delim, int rep=0);
+};
+
+class cStopWatch {
+private:
+	uint64_t start;
+	uint64_t last;
+public:
+	cStopWatch(const char* message = NULL);
+	~cStopWatch(void) {};
+	void Report(const char* message);
+	void Stop(const char* message);
+};
+
+string GetScreenResolutionString(int width, int height, bool *isHD);
+string GetScreenAspectString(double aspect, bool *isWideScreen);
+
+#endif // __HELPERS_H
diff --git a/libcore/imagecache.c b/libcore/imagecache.c
new file mode 100644
index 0000000..2a9a948
--- /dev/null
+++ b/libcore/imagecache.c
@@ -0,0 +1,476 @@
+#include <string>
+#include <sstream>
+#include <map>
+#include <fstream>
+#include <sys/stat.h>
+#include "imagecache.h"
+#include "../config.h"
+#include "helpers.h"
+
+
+cMutex cImageCache::mutex;
+
+string cImageCache::items[16] = { "Schedule", "Channels", "Timers", "Recordings", "Setup", "Commands",
+                   "OSD", "EPG", "DVB", "LNB", "CAM", "Recording", "Replay", "Miscellaneous", "Plugins", "Restart"};
+
+cImageCache::cImageCache() {
+    tempStaticLogo = NULL;
+}
+
+cImageCache::~cImageCache() {
+    Clear();
+    if (tempStaticLogo) {
+        delete tempStaticLogo;
+        tempStaticLogo = NULL;
+    }
+}
+
+void cImageCache::SetPathes(void) {
+    string logoPathSkin = *cString::sprintf("%s%s/themes/%s/logos/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme);
+    if (FolderExists(logoPathSkin)) {
+        logoPath = logoPathSkin;
+    } else {
+        logoPath = *config.logoPath;
+    }
+
+    iconPathSkin = *cString::sprintf("%s%s/", *config.skinPath, Setup.OSDSkin);
+    skinPartsPathSkin = *cString::sprintf("%s%s/skinparts/", *config.skinPath, Setup.OSDSkin);
+
+    iconPathTheme = *cString::sprintf("%s%s/themes/%s/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme);
+    skinPartsPathTheme = *cString::sprintf("%s%s/themes/%s/skinparts/", *config.skinPath, Setup.OSDSkin, Setup.OSDTheme);
+
+    dsyslog("skindesigner: using channel logo path %s", logoPath.c_str());
+    dsyslog("skindesigner: using icon path %s", iconPathTheme.c_str());
+    dsyslog("skindesigner: using skinparts path %s", skinPartsPathTheme.c_str());
+}
+
+void cImageCache::CacheLogo(int width, int height) {
+    if (config.numLogosPerSizeInitial == 0)
+        return;
+    if (width == 0 || height == 0)
+        return;
+    
+    int logosCached = 0;     
+    
+    for (const cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) {
+        if (logosCached >= config.numLogosPerSizeInitial)
+            break;
+        if (channel->GroupSep()) {
+            continue;
+        }
+        stringstream logoName;
+        logoName << *channel->GetChannelID().ToString() << "_" << width << "x" << height;
+        map<string, cImage*>::iterator hit = channelLogoCache.find(logoName.str());
+        if (hit != channelLogoCache.end()) {
+            continue;
+        }
+        bool success = LoadLogo(channel);
+        if (success) {
+            logosCached++;
+            cImage *image = CreateImage(width, height);
+            channelLogoCache.insert(pair<string, cImage*>(logoName.str(), image));
+        }
+    }
+}
+
+cImage *cImageCache::GetLogo(string channelID, int width, int height) {
+    cMutexLock MutexLock(&mutex);
+
+    stringstream logoName;
+    logoName << channelID << "_" << width << "x" << height;
+
+    std::map<std::string, cImage*>::iterator hit = channelLogoCache.find(logoName.str());
+
+    if (hit != channelLogoCache.end()) {
+        return (cImage*)hit->second;
+    } else {
+        tChannelID chanID = tChannelID::FromString(channelID.c_str());
+        const cChannel *channel = Channels.GetByChannelID(chanID);
+        if (!channel)
+            return NULL;
+        bool success = LoadLogo(channel);
+        if (success) {
+            if (config.limitLogoCache && (channelLogoCache.size() >= config.numLogosMax)) {
+                //logo cache is full, don't cache anymore
+                if (tempStaticLogo) {
+                    delete tempStaticLogo;
+                    tempStaticLogo = NULL;
+                }
+                tempStaticLogo = CreateImage(width, height);
+                return tempStaticLogo;
+            } else {
+                //add requested logo to cache
+                cImage *image = CreateImage(width, height);
+                channelLogoCache.insert(pair<string, cImage*>(logoName.str(), image));
+                hit = channelLogoCache.find(logoName.str());
+                if (hit != channelLogoCache.end()) {
+                    return (cImage*)hit->second;
+                }
+            }
+        }
+    }
+    return NULL;
+}
+
+cImage *cImageCache::GetSeparatorLogo(string name, int width, int height) {
+    cMutexLock MutexLock(&mutex);
+
+    stringstream logoName;
+    logoName << name << "_" << width << "x" << height;
+
+    std::map<std::string, cImage*>::iterator hit = channelLogoCache.find(logoName.str());
+
+    if (hit != channelLogoCache.end()) {
+        return (cImage*)hit->second;
+    } else {
+        bool success = LoadSeparatorLogo(name);
+        if (success) {
+            //add requested logo to cache
+            cImage *image = CreateImage(width, height);
+            channelLogoCache.insert(pair<string, cImage*>(logoName.str(), image));
+            hit = channelLogoCache.find(logoName.str());
+            if (hit != channelLogoCache.end()) {
+                return (cImage*)hit->second;
+            }
+        }
+    }
+    return NULL;
+}
+
+bool cImageCache::LogoExists(string channelID) {
+    tChannelID chanID = tChannelID::FromString(channelID.c_str());
+    const cChannel *channel = Channels.GetByChannelID(chanID);
+    if (!channel)
+        return false;
+    string logoLower = StrToLowerCase(channel->Name());
+
+    return (FileExists(logoPath.c_str(), logoLower, "svg") ||
+            FileExists(logoPath.c_str(), logoLower, "png") ||
+            FileExists(logoPath.c_str(), channelID, "svg") ||
+            FileExists(logoPath.c_str(), channelID, "png"));
+}
+
+bool cImageCache::SeparatorLogoExists(string name) {
+    string separatorPath = *cString::sprintf("%sseparatorlogos/", logoPath.c_str());
+    string nameLower = StrToLowerCase(name.c_str());
+
+    return (FileExists(separatorPath, nameLower, "svg") ||
+            FileExists(separatorPath, nameLower, "png"));
+}
+
+void cImageCache::CacheIcon(eImageType type, string name, int width, int height) {
+    if (width < 1 || width > 1920 || height < 1 || height > 1080)
+        return;
+    GetIcon(type, name, width, height);
+}
+
+cImage *cImageCache::GetIcon(eImageType type, string name, int width, int height) {
+    if (width < 1 || width > 1920 || height < 1 || height > 1080)
+        return NULL;
+    cMutexLock MutexLock(&mutex);
+    stringstream iconName;
+    iconName << name << "_" << width << "x" << height;
+    map<string, cImage*>::iterator hit = iconCache.find(iconName.str());
+    if (hit != iconCache.end()) {
+        return (cImage*)hit->second;
+    } else {
+        bool success = LoadIcon(type, name);
+        if (!success) 
+            return NULL;
+        cImage *image = CreateImage(width, height, true);
+        iconCache.insert(pair<string, cImage*>(iconName.str(), image));
+        hit = iconCache.find(iconName.str());
+        if (hit != iconCache.end()) {
+            return (cImage*)hit->second;
+        }
+    }
+    return NULL;    
+}
+
+string cImageCache::GetIconName(string label, eMenuCategory cat) {
+    //if cat is set, use standard menu entries
+    switch (cat) {
+        case mcSchedule:
+        case mcScheduleNow:
+        case mcScheduleNext:
+        case mcEvent:
+            return "standardicons/Schedule";
+        case mcChannel:
+        case mcChannelEdit:
+            return "standardicons/Channels";
+        case mcTimer:
+        case mcTimerEdit:
+            return "standardicons/Timers";
+        case mcRecording:
+        case mcRecordingInfo:
+        case mcSetupRecord:
+        case mcSetupReplay:
+            return "standardicons/Recordings";
+        case mcPlugin: {
+            //check for Plugins
+            for (int i = 0; ; i++) {
+                cPlugin *p = cPluginManager::GetPlugin(i);
+                if (p) {
+                    const char *mainMenuEntry = p->MainMenuEntry();
+                    if (mainMenuEntry) {
+                        string plugMainEntry = mainMenuEntry;
+                        try {
+                            if (label.substr(0, plugMainEntry.size()) == plugMainEntry) {
+                                return *cString::sprintf("pluginicons/%s", p->Name());
+                            }
+                        } catch (...) {}
+                    }
+                } else
+                    break;
+            }
+            return "standardicons/Plugins";
+        } 
+        case mcPluginSetup:
+        case mcSetupPlugins:
+            return "standardicons/Plugins";
+        case mcSetup:
+            return "standardicons/Setup";
+        case mcSetupOsd:
+            return "standardicons/OSD";
+        case mcSetupEpg:
+            return "standardicons/EPG";
+        case mcSetupDvb:
+            return "standardicons/DVB";
+        case mcSetupLnb:
+            return "standardicons/LNB";
+        case mcSetupCam:
+            return "standardicons/CAM";
+        case mcSetupMisc:
+            return "standardicons/Miscellaneous";    
+        case mcCommand:
+            return "standardicons/Commands";
+    }
+    //check for standard menu entries
+    for (int i=0; i<16; i++) {
+        string s = trVDR(items[i].c_str());
+        if (s == label) {
+            return *cString::sprintf("standardicons/%s", items[i].c_str());
+        }
+    }
+    //check for special main menu entries "stop recording", "stop replay"
+    string stopRecording = skipspace(trVDR(" Stop recording "));
+    string stopReplay = skipspace(trVDR(" Stop replaying"));
+    try {
+        if (label.substr(0, stopRecording.size()) == stopRecording) {
+            return "standardicons/StopRecording";
+        }
+        if (label.substr(0, stopReplay.size()) == stopReplay) {
+            return "standardicons/StopReplay";
+        }
+    } catch (...) {}
+    //check for Plugins
+    for (int i = 0; ; i++) {
+        cPlugin *p = cPluginManager::GetPlugin(i);
+        if (p) {
+            const char *mainMenuEntry = p->MainMenuEntry();
+            if (mainMenuEntry) {
+                string plugMainEntry = mainMenuEntry;
+                try {
+                    if (label.substr(0, plugMainEntry.size()) == plugMainEntry) {
+                        return *cString::sprintf("pluginicons/%s", p->Name());
+                    }
+                } catch (...) {}
+            }
+        } else
+            break;
+    }
+    return *cString::sprintf("customicons/%s", label.c_str());
+}
+
+bool cImageCache::MenuIconExists(string name) {
+    //first check in theme specific icon folder
+    cString iconThemePath = cString::sprintf("%smenuicons/", iconPathTheme.c_str());
+    if (FileExists(*iconThemePath, name, "svg")) {
+        return true;
+    }
+    if (FileExists(*iconThemePath, name, "png")) {
+        return true;
+    }
+    //then check skin icon folder
+    cString iconSkinPath = cString::sprintf("%smenuicons/", iconPathSkin.c_str());
+    if (FileExists(*iconSkinPath, name, "svg")) {
+        return true;
+    }
+    if (FileExists(*iconSkinPath, name, "png")) {
+        return true;
+    }
+    return false;
+}
+
+void cImageCache::CacheSkinpart(string name, int width, int height) {
+    if (width < 1 || width > 1920 || height < 1 || height > 1080)
+        return;
+    GetSkinpart(name, width, height);
+}
+
+cImage *cImageCache::GetSkinpart(string name, int width, int height) {
+    if (width < 1 || width > 1920 || height < 1 || height > 1080)
+        return NULL;
+    cMutexLock MutexLock(&mutex);
+    stringstream iconName;
+    iconName << name << "_" << width << "x" << height;
+    map<string, cImage*>::iterator hit = skinPartsCache.find(iconName.str());
+    if (hit != skinPartsCache.end()) {
+        return (cImage*)hit->second;
+    } else {
+        bool success = LoadSkinpart(name);
+        if (!success) 
+            return NULL;
+        cImage *image = CreateImage(width, height, false);
+        skinPartsCache.insert(pair<string, cImage*>(iconName.str(), image));
+        hit = skinPartsCache.find(iconName.str());
+        if (hit != skinPartsCache.end()) {
+            return (cImage*)hit->second;
+        }
+    }
+    return NULL;    
+}
+
+bool cImageCache::LoadIcon(eImageType type, string name) {
+    cString subdir("");
+    if (type == itMenuIcon)
+        subdir = "menuicons";
+    else if (type == itIcon)
+        subdir = "icons";
+
+    //first check in theme specific icon path
+    cString subIconThemePath = cString::sprintf("%s%s/", iconPathTheme.c_str(), *subdir);
+
+    if (FileExists(*subIconThemePath, name, "svg"))
+        return LoadImage(*subIconThemePath, name, "svg");
+    else if (FileExists(*subIconThemePath, name, "png"))
+        return LoadImage(*subIconThemePath, name, "png");
+
+    //then check in skin icon path
+    cString subIconSkinPath = cString::sprintf("%s%s/", iconPathSkin.c_str(), *subdir);
+
+    if (FileExists(*subIconSkinPath, name, "svg"))
+        return LoadImage(*subIconSkinPath, name, "svg");
+    else 
+        return LoadImage(*subIconSkinPath, name, "png");
+}
+
+bool cImageCache::LoadLogo(const cChannel *channel) {
+    if (!channel)
+        return false;
+    string channelID = StrToLowerCase(*(channel->GetChannelID().ToString()));
+    string logoLower = StrToLowerCase(channel->Name());
+
+    if (FileExists(logoPath.c_str(), channelID.c_str(), "svg"))
+        return LoadImage(logoPath.c_str(), channelID.c_str(), "svg");
+    if (FileExists(logoPath.c_str(), channelID.c_str(), "png"))
+        return LoadImage(logoPath.c_str(), channelID.c_str(), "png");
+    if (FileExists(logoPath.c_str(), logoLower.c_str(), "svg"))
+        return LoadImage(logoPath.c_str(), logoLower.c_str(), "svg");
+    if (FileExists(logoPath.c_str(), logoLower.c_str(), "png"))
+        return LoadImage(logoPath.c_str(), logoLower.c_str(), "png");
+
+    return false;
+}
+
+bool cImageCache::LoadSeparatorLogo(string name) {
+    string separatorPath = *cString::sprintf("%sseparatorlogos/", logoPath.c_str());
+    string nameLower = StrToLowerCase(name.c_str());
+    if (FileExists(separatorPath, nameLower.c_str(), "svg"))
+        return LoadImage(separatorPath, nameLower.c_str(), "svg");
+    else
+        return LoadImage(separatorPath, nameLower.c_str(), "png");
+}
+
+bool cImageCache::LoadSkinpart(string name) {
+    if (FileExists(skinPartsPathTheme.c_str(), name, "svg"))
+        return LoadImage(skinPartsPathTheme.c_str(), name, "svg");
+    
+    else if (FileExists(skinPartsPathTheme.c_str(), name, "png"))
+        return LoadImage(skinPartsPathTheme.c_str(), name, "png");
+    
+    else if (FileExists(skinPartsPathSkin.c_str(), name, "svg"))
+        return LoadImage(skinPartsPathSkin.c_str(), name, "svg");
+    
+    else 
+        return LoadImage(skinPartsPathSkin.c_str(), name, "png");
+}
+
+void cImageCache::Clear(void) {
+    for(map<string, cImage*>::const_iterator it = iconCache.begin(); it != iconCache.end(); it++) {
+        cImage *img = (cImage*)it->second;
+        delete img;
+    }
+    iconCache.clear();
+
+    for(map<string, cImage*>::const_iterator it = channelLogoCache.begin(); it != channelLogoCache.end(); it++) {
+        cImage *img = (cImage*)it->second;
+        delete img;
+    }
+    channelLogoCache.clear();
+
+    for(map<std::string, cImage*>::const_iterator it = skinPartsCache.begin(); it != skinPartsCache.end(); it++) {
+        cImage *img = (cImage*)it->second;
+        delete img;
+    }
+    skinPartsCache.clear();
+}
+
+void cImageCache::Debug(bool full) {
+    int sizeIconCache = 0;
+    int numIcons = 0;
+    GetIconCacheSize(numIcons, sizeIconCache);
+    dsyslog("skindesigner: cached %d icons - size %d byte", numIcons, sizeIconCache);
+    if (full) {
+        for(std::map<std::string, cImage*>::const_iterator it = iconCache.begin(); it != iconCache.end(); it++) {
+            string name = it->first;
+            dsyslog("skindesigner: cached icon %s", name.c_str());
+        }
+    }
+
+    int sizeLogoCache = 0;
+    int numLogos = 0;
+    GetLogoCacheSize(numLogos, sizeLogoCache);
+    dsyslog("skindesigner: cached %d logos - size %d byte", numLogos, sizeLogoCache);
+    if (full) {
+        for(std::map<std::string, cImage*>::const_iterator it = channelLogoCache.begin(); it != channelLogoCache.end(); it++) {
+            string name = it->first;
+            dsyslog("skindesigner: cached logo %s", name.c_str());
+        }
+    }
+
+    int sizeSkinpartCache = 0;
+    int numSkinparts = 0;
+    GetSkinpartsCacheSize(numSkinparts, sizeSkinpartCache);
+    dsyslog("skindesigner: cached %d skinparts - size %d byte", numSkinparts, sizeSkinpartCache);
+    if (full) {
+        for(std::map<std::string, cImage*>::const_iterator it = skinPartsCache.begin(); it != skinPartsCache.end(); it++) {
+            string name = it->first;
+            dsyslog("skindesigner: cached skinpart %s", name.c_str());
+        }
+    }
+}
+
+void cImageCache::GetIconCacheSize(int &num, int &size) {
+    num = iconCache.size();
+    for (map<string, cImage*>::iterator icon = iconCache.begin(); icon != iconCache.end(); icon++) {
+        cImage* img = icon->second;
+        size += img->Width() * img->Height() * sizeof(tColor);
+    }
+}
+
+void cImageCache::GetLogoCacheSize(int &num, int &size) {
+    num = channelLogoCache.size();
+    for (map<string, cImage*>::iterator logo = channelLogoCache.begin(); logo != channelLogoCache.end(); logo++) {
+        cImage* img = logo->second;
+        size += img->Width() * img->Height() * sizeof(tColor);
+    }
+}
+
+void cImageCache::GetSkinpartsCacheSize(int &num, int &size) {
+    num = skinPartsCache.size();
+    for (map<string, cImage*>::iterator skinpart = skinPartsCache.begin(); skinpart != skinPartsCache.end(); skinpart++) {
+        cImage* img = skinpart->second;
+        size += img->Width() * img->Height() * sizeof(tColor);
+    }    
+}
diff --git a/libcore/imagecache.h b/libcore/imagecache.h
new file mode 100644
index 0000000..086d8e4
--- /dev/null
+++ b/libcore/imagecache.h
@@ -0,0 +1,57 @@
+#ifndef __NOPACITY_IMAGECACHE_H
+#define __NOPACITY_IMAGECACHE_H
+
+#define X_DISPLAY_MISSING
+
+#include <vdr/osd.h>
+#include <vdr/skins.h>
+#include <vector>
+#include "imageloader.h"
+#include "../libtemplate/templatefunction.h"
+
+class cImageCache : public cImageLoader {
+public:
+    cImageCache();
+    ~cImageCache();
+    void Lock(void) { mutex.Lock(); }
+    void Unlock(void) { mutex.Unlock(); }
+    void SetPathes(void);
+    //channel logos
+    void CacheLogo(int width, int height);
+    cImage *GetLogo(string channelID, int width, int height);
+    bool LogoExists(string channelID);
+    cImage *GetSeparatorLogo(string name, int width, int height);
+    bool SeparatorLogoExists(string name);
+    //icons
+    void CacheIcon(eImageType type, string path, int width, int height);
+    cImage *GetIcon(eImageType type, string name, int width, int height);
+    string GetIconName(string label, eMenuCategory cat = mcUndefined);
+    bool MenuIconExists(string name);
+    //skinparts
+    void CacheSkinpart(string path, int width, int height);
+    cImage *GetSkinpart(string name, int width, int height);
+    //helpers
+    void Clear(void);
+    void Debug(bool full);
+    void GetIconCacheSize(int &num, int &size);
+    void GetLogoCacheSize(int &num, int &size);
+    void GetSkinpartsCacheSize(int &num, int &size);
+private:
+    static cMutex mutex;
+    static string items[16];
+    cImage *tempStaticLogo;
+    string logoPath;
+    string iconPathSkin;
+    string skinPartsPathSkin;
+    string iconPathTheme;
+    string skinPartsPathTheme;
+    map<string, cImage*> iconCache;
+    map<string, cImage*> channelLogoCache;
+    map<string, cImage*> skinPartsCache;
+    bool LoadIcon(eImageType type, string name);
+    bool LoadLogo(const cChannel *channel);
+    bool LoadSeparatorLogo(string name);
+    bool LoadSkinpart(string name);
+};
+
+#endif //__NOPACITY_IMAGECACHE_H
diff --git a/libcore/imageloader.c b/libcore/imageloader.c
new file mode 100644
index 0000000..9b2a5b7
--- /dev/null
+++ b/libcore/imageloader.c
@@ -0,0 +1,368 @@
+#include "../config.h"
+#include "helpers.h"
+#include "imageloader.h"
+#include <string>
+#include <dirent.h>
+#include <iostream>
+
+cImageLoader::cImageLoader() {
+    importer = NULL;
+}
+
+cImageLoader::~cImageLoader() {
+    delete(importer);
+}
+
+cImage *cImageLoader::CreateImage(int width, int height, bool preserveAspect) {
+    if (!importer)
+        return NULL;
+    int w, h;
+    importer->GetImageSize(w, h);
+    if (width == 0)
+        width = w;
+    if (height == 0)
+        height = h;
+
+    cairo_surface_t *surface;
+    surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
+
+    cairo_t *cr;
+    cr = cairo_create(surface);
+
+    double sx = width / (double)w;
+    double sy = height / (double)h;
+    if (preserveAspect) {
+        double tx = 0;
+        double ty = 0;
+        if (sx < sy) {
+            sy = sx;
+            ty = (height - h * sy) / 2;
+        }
+        if (sy < sx) {
+            sx = sy;
+            tx = (width - w * sx) / 2;
+        }
+        cairo_translate(cr, tx, ty);
+    }
+    cairo_scale(cr, sx, sy);
+
+    importer->DrawToCairo(cr);
+
+    cairo_status_t status = cairo_status(cr);
+    if (status && config.debugImageLoading)
+        dsyslog("skindesigner: Cairo CreateImage Error %s", cairo_status_to_string(status));
+
+    unsigned char *data = cairo_image_surface_get_data(surface);
+    cImage *image = new cImage(cSize(width, height), (tColor*)data);
+
+    cairo_destroy(cr);
+    cairo_surface_destroy(surface);
+
+    return image;
+}
+
+bool cImageLoader::LoadImage(const char *fullpath) {
+    if ((fullpath == NULL) || (strlen(fullpath) < 5))
+        return false;
+
+    if (config.debugImageLoading)
+        dsyslog("skindesigner: trying to load: %s", fullpath);
+
+    delete(importer);
+    importer = NULL;
+
+    if (endswith(fullpath, ".png"))
+        importer = new cImageImporterPNG;
+    else if (endswith(fullpath, ".svg"))
+        importer = new cImageImporterSVG;
+    else if (endswith(fullpath, ".jpg"))
+        importer = new cImageImporterJPG;
+    else
+        return false;
+
+    return importer->LoadImage(fullpath);
+}
+
+// Just a different way to call LoadImage. Calls the above one.
+bool cImageLoader::LoadImage(std::string Path, std::string FileName, std::string Extension) {
+    std::stringstream sstrImgFile;
+    sstrImgFile << Path << FileName << "." << Extension;
+    std::string imgFile = sstrImgFile.str();
+    return LoadImage(imgFile.c_str());
+}
+
+//
+// Image importer for PNG
+//
+
+cImageImporterPNG::cImageImporterPNG() {
+    surface = NULL;
+}
+
+cImageImporterPNG::~cImageImporterPNG() {
+    if (surface)
+        cairo_surface_destroy(surface);
+}
+
+bool cImageImporterPNG::LoadImage(const char *path) {
+    if (surface)
+        cairo_surface_destroy(surface);
+
+    surface = cairo_image_surface_create_from_png(path);
+
+    if (cairo_surface_status(surface)) {
+        if (config.debugImageLoading)
+            dsyslog("skindesigner: Cairo LoadImage Error: %s", cairo_status_to_string(cairo_surface_status(surface)));
+        surface = NULL;
+        return false;
+    }
+
+    return true;
+}
+
+void cImageImporterPNG::DrawToCairo(cairo_t *cr) {
+    if (surface) {
+        cairo_set_source_surface(cr, surface, 0, 0);
+        cairo_paint(cr);
+    }
+}
+
+void cImageImporterPNG::GetImageSize(int &width, int &height) {
+    if (surface) {
+        width = cairo_image_surface_get_width(surface);
+        height = cairo_image_surface_get_height(surface);
+    }
+}
+
+//
+// Image importer for SVG
+//
+
+cImageImporterSVG::cImageImporterSVG() {
+    handle = NULL;
+}
+
+cImageImporterSVG::~cImageImporterSVG() {
+    if (handle) {
+        rsvg_handle_close(handle, NULL);
+        g_object_unref(handle);
+    }
+}
+
+bool cImageImporterSVG::LoadImage(const char *path) {
+    if (handle) {
+        rsvg_handle_close(handle, NULL);
+        g_object_unref(handle);
+    }
+
+    GError *error = NULL;
+    handle = rsvg_handle_new_from_file(path, &error);
+    if (!handle) {
+        if (config.debugImageLoading && error) {
+            dsyslog("skindesigner: RSVG Error: %s", error->message);
+        }
+        return false;
+    }
+
+    // 90 dpi is the hardcoded default setting of the Inkscape SVG editor
+    rsvg_handle_set_dpi(handle, 90);
+
+    return true;
+}
+
+void cImageImporterSVG::DrawToCairo(cairo_t *cr) {
+    if (handle)
+        rsvg_handle_render_cairo(handle, cr);
+}
+
+void cImageImporterSVG::GetImageSize(int &width, int &height) {
+    if (handle) {
+        RsvgDimensionData dim;
+        rsvg_handle_get_dimensions(handle, &dim);
+        width = dim.width;
+        height = dim.height;
+    }
+}
+
+void cImageImporterSVG::InitLibRSVG() {
+    #if !GLIB_CHECK_VERSION(2, 35, 0)
+        g_type_init();
+    #endif
+}
+
+//
+// Image importer for JPG
+//
+
+struct my_error_mgr {
+    struct jpeg_error_mgr pub; // "public" fields
+    jmp_buf setjmp_buffer;     // for return to caller
+};
+
+METHODDEF(void)
+my_error_exit(j_common_ptr cinfo) {
+    // cinfo->err really points to a my_error_mgr struct, so coerce pointer
+    my_error_mgr *myerr = (my_error_mgr*) cinfo->err;
+
+    // Always display the message.
+    (*cinfo->err->output_message) (cinfo);
+
+    // Return control to the setjmp point
+    longjmp(myerr->setjmp_buffer, 1);
+}
+
+METHODDEF(void)
+my_output_message(j_common_ptr cinfo) {
+    char buf[JMSG_LENGTH_MAX];
+    cinfo->err->format_message(cinfo, buf);
+    if (config.debugImageLoading)
+        dsyslog("skindesigner: libjpeg error: %s", buf);
+}
+
+cImageImporterJPG::cImageImporterJPG() {
+    cinfo = NULL;
+}
+
+cImageImporterJPG::~cImageImporterJPG() {
+    if (cinfo) {
+        jpeg_destroy_decompress(cinfo);
+        free(cinfo);
+        fclose(infile);
+    }
+}
+
+bool cImageImporterJPG::LoadImage(const char *path) {
+    if (cinfo) {
+        jpeg_destroy_decompress(cinfo);
+        free(cinfo);
+        fclose(infile);
+        cinfo = NULL;
+    }
+
+    // Open input file
+    if ((infile = fopen(path, "rb")) == NULL) {
+        if (config.debugImageLoading)
+            dsyslog("skindesigner: Can't open %s", path);
+        return false;
+    }
+
+    // Allocate space for our decompress struct
+    cinfo = (j_decompress_ptr)malloc(sizeof(struct jpeg_decompress_struct));
+
+    // We set up the normal JPEG error routines, then override error_exit
+    // and output_message.
+    struct my_error_mgr jerr;
+    cinfo->err = jpeg_std_error(&jerr.pub);
+    jerr.pub.error_exit = my_error_exit;
+    jerr.pub.output_message = my_output_message;
+    // Establish the setjmp return context for my_error_exit to use.
+    if (setjmp(jerr.setjmp_buffer)) {
+        // If we get here, the JPEG code has signaled an error.
+        jpeg_destroy_decompress(cinfo);
+        free(cinfo);
+        fclose(infile);
+        cinfo = NULL;
+        return false;
+    }
+
+    // Now we can initialize the JPEG decompression object.
+    jpeg_create_decompress(cinfo);
+
+    // Step 2: specify data source (eg, a file)
+    jpeg_stdio_src(cinfo, infile);
+
+    // Step 3: read file parameters with jpeg_read_header()
+    (void) jpeg_read_header(cinfo, TRUE);
+    return true;
+}
+
+void cImageImporterJPG::DrawToCairo(cairo_t *cr) {
+    if (!cinfo)
+        return;
+
+    unsigned char *bmp_buffer = NULL;
+
+    // Re-establish error handling. We have to do this again as the saved
+    // calling environment of "LoadImage" is invalid if we reach here!
+    struct my_error_mgr jerr;
+    cinfo->err = jpeg_std_error(&jerr.pub);
+    jerr.pub.error_exit = my_error_exit;
+    jerr.pub.output_message = my_output_message;
+    if (setjmp(jerr.setjmp_buffer)) {
+        jpeg_destroy_decompress(cinfo);
+        free(cinfo);
+        fclose(infile);
+        free(bmp_buffer);
+        cinfo = NULL;
+        return;
+    }
+
+    // Step 4: set parameters for decompression
+    cinfo->out_color_space = JCS_RGB;
+
+    // Step 5: Start decompressor
+    (void) jpeg_start_decompress(cinfo);
+
+    // Allocate buffer. Directly allocate the space needed for ARGB
+    unsigned int width = cinfo->output_width;
+    unsigned int height = cinfo->output_height;
+    bmp_buffer = (unsigned char*)malloc(width * height * 4);
+
+    // Step 6: while (scan lines remain to be read)
+    int jpg_stride = width * cinfo->output_components;
+    while (cinfo->output_scanline < height) {
+        unsigned char *buffer_array[1];
+        buffer_array[0] = bmp_buffer + (cinfo->output_scanline) * jpg_stride;
+        jpeg_read_scanlines(cinfo, buffer_array, 1);
+    }
+
+    // Step 7: Finish decompression.
+    (void)jpeg_finish_decompress(cinfo);
+
+    // Cleanup. In this "ImageImporter" we clean up everything in "DrawToCairo"
+    // as I'm not really sure whether we are able to draw a second time.
+    fclose(infile);
+    jpeg_destroy_decompress(cinfo);
+    free(cinfo);
+    cinfo = NULL;
+
+    // --> At this point we have raw RGB data in bmp_buffer
+
+    // Do some ugly byte shifting.
+    // Byte order in libjpeg: RGB
+    // Byte order in cairo and VDR: BGRA
+    unsigned char temp[3];
+    for (int index = (width * height) - 1; index >= 0; index--) {
+        unsigned char *target = bmp_buffer + (index * 4);
+        unsigned char *source = bmp_buffer + (index * 3);
+        memcpy(&temp[0], source + 2, 1);
+        memcpy(&temp[1], source + 1, 1);
+        memcpy(&temp[2], source, 1);
+        memcpy(target, &temp, 3);
+    }
+
+    // Create new Cairo surface from our raw image data
+    cairo_surface_t *surface;
+    surface = cairo_image_surface_create_for_data(bmp_buffer,
+                                                  CAIRO_FORMAT_RGB24,
+                                                  width,
+                                                  height,
+                                                  width * 4);
+
+    // Draw surface to Cairo
+    if (surface) {
+        cairo_set_source_surface(cr, surface, 0, 0);
+        cairo_paint(cr);
+        cairo_surface_destroy(surface);
+    }
+
+    // Free our memory
+    free(bmp_buffer);
+}
+
+void cImageImporterJPG::GetImageSize(int &width, int &height) {
+    if (cinfo) {
+        width = cinfo->image_width;
+        height = cinfo->image_height;
+    }
+}
diff --git a/libcore/imageloader.h b/libcore/imageloader.h
new file mode 100644
index 0000000..6a83dec
--- /dev/null
+++ b/libcore/imageloader.h
@@ -0,0 +1,87 @@
+#ifndef __NOPACITY_IMAGELOADER_H
+#define __NOPACITY_IMAGELOADER_H
+
+#include <cairo.h>
+#include <librsvg/rsvg.h>
+#ifndef LIBRSVG_CHECK_VERSION // Workaround for librsvg < 2.36.2
+    #include <librsvg/rsvg-cairo.h>
+    #include <librsvg/librsvg-features.h>
+#endif
+#include <jpeglib.h>
+#include <setjmp.h>
+#include <vdr/osd.h>
+#include <vdr/tools.h>
+
+//
+// Image importers
+//
+class cImageImporter {
+public:
+    cImageImporter() {};
+    virtual ~cImageImporter() {};
+    virtual bool LoadImage(const char *path) { return false; };
+    virtual void DrawToCairo(cairo_t *cr) {};
+    virtual void GetImageSize(int &width, int &height) {};
+};
+
+// Image importer for PNG
+class cImageImporterPNG : public cImageImporter {
+public:
+    cImageImporterPNG();
+    ~cImageImporterPNG();
+    bool LoadImage(const char *path);
+    void DrawToCairo(cairo_t *cr);
+    void GetImageSize(int &width, int &height);
+private:
+    cairo_surface_t *surface;
+};
+
+// Image importer for SVG
+#if !LIBRSVG_CHECK_VERSION(2, 36, 0)
+    #error librsvg version 2.36.0 or above required!
+#endif
+
+class cImageImporterSVG : public cImageImporter {
+public:
+    cImageImporterSVG();
+    ~cImageImporterSVG();
+    bool LoadImage(const char *path);
+    void DrawToCairo(cairo_t *cr);
+    void GetImageSize(int &width, int &height);
+    static void InitLibRSVG();
+private:
+    RsvgHandle *handle;
+};
+
+// Image importer for JPG
+#if BITS_IN_JSAMPLE != 8
+    #error libjpeg has to be compiled with 8-bit samples!
+#endif
+
+class cImageImporterJPG : public cImageImporter {
+public:
+    cImageImporterJPG();
+    ~cImageImporterJPG();
+    bool LoadImage(const char *path);
+    void DrawToCairo(cairo_t *cr);
+    void GetImageSize(int &width, int &height);
+private:
+    j_decompress_ptr cinfo;
+    FILE *infile;
+};
+
+//
+// Image loader class
+//
+class cImageLoader {
+private:
+    cImageImporter *importer;
+public:
+    cImageLoader();
+    virtual ~cImageLoader();
+    cImage *CreateImage(int width, int height, bool preserveAspect = true);
+    bool LoadImage(std::string Path, std::string FileName, std::string Extension);
+    bool LoadImage(const char *fullpath);
+};
+
+#endif //__NOPACITY_IMAGELOADER_H
diff --git a/libcore/pixmapcontainer.c b/libcore/pixmapcontainer.c
new file mode 100644
index 0000000..69a47ca
--- /dev/null
+++ b/libcore/pixmapcontainer.c
@@ -0,0 +1,487 @@
+#define __STL_CONFIG_H
+#include "pixmapcontainer.h"
+#include "../config.h"
+
+cMutex cPixmapContainer::mutex;
+cOsd *cPixmapContainer::osd = NULL;
+eFlushState cPixmapContainer::flushState = fsOpen;
+
+cPixmapContainer::cPixmapContainer(int numPixmaps) {
+    this->numPixmaps = numPixmaps;
+    pixContainerInit = true;
+    mutex.Lock();
+    pixmaps = new cPixmap*[numPixmaps];
+    pixmapsTransparency = new int[numPixmaps];
+    for(int i=0; i < numPixmaps; i++) {
+        pixmaps[i] = NULL;
+        pixmapsTransparency[i] = 0;
+    }
+    mutex.Unlock();
+    checkRunning = false;
+    fadeTime = 0;
+    deleteOsdOnExit = false;
+}
+
+cPixmapContainer::~cPixmapContainer(void) {
+    for (int i=0; i < numPixmaps; i++) {
+        mutex.Lock();
+        if (pixmaps[i] && osd) {
+            osd->DestroyPixmap(pixmaps[i]);
+            pixmaps[i] = NULL;
+        }
+        mutex.Unlock();
+    }
+    delete[] pixmaps;
+    delete[] pixmapsTransparency;
+    if (deleteOsdOnExit && osd) {
+        mutex.Lock();
+        delete osd;
+        osd = NULL;
+        mutex.Unlock();
+    }
+    flushState = fsOpen;
+}
+
+bool cPixmapContainer::CreateOsd(int Left, int Top, int Width, int Height) {
+    if (osd) {
+        return false;
+    }
+    cOsd *newOsd = cOsdProvider::NewOsd(Left, Top);
+    if (newOsd) {
+        tArea Area = { 0, 0, Width, Height,  32 };
+        if (newOsd->SetAreas(&Area, 1) == oeOk) {
+            osd = newOsd;
+            return true;
+        }
+    }
+    return false;
+}
+
+void cPixmapContainer::LockFlush(void) {
+    flushState = fsLock; 
+}
+
+void cPixmapContainer::OpenFlush(void) { 
+    flushState = fsOpen; 
+}
+
+bool cPixmapContainer::PixmapExists(int num) {
+    cMutexLock MutexLock(&mutex);
+    if (pixmaps[num])
+        return true;
+    return false;
+}
+
+void cPixmapContainer::DoFlush(void) {
+    cMutexLock MutexLock(&mutex);
+    if (!osd || (checkRunning && !Running()))
+        return;
+    if (flushState == fsOpen) {
+        osd->Flush();
+    }
+}
+
+void cPixmapContainer::CreatePixmap(int num, int Layer, const cRect &ViewPort, const cRect &DrawPort) {
+    cMutexLock MutexLock(&mutex);
+    if (!osd || (checkRunning && !Running()))
+        return;
+    pixmaps[num] = osd->CreatePixmap(Layer, ViewPort, DrawPort);
+    pixmaps[num]->Fill(clrTransparent);
+    if (pixContainerInit && fadeTime) {
+        pixmaps[num]->SetAlpha(0);
+    } else if (pixmapsTransparency[num] > 0) {
+        int alpha = (100 - pixmapsTransparency[num])*255/100;
+        pixmaps[num]->SetAlpha(alpha);
+    }
+}
+
+bool cPixmapContainer::DestroyPixmap(int num) {
+    cMutexLock MutexLock(&mutex);
+    if (pixmaps[num] && osd) {
+        osd->DestroyPixmap(pixmaps[num]);
+        pixmaps[num] = NULL;
+        return true;
+    }
+    return false;
+}
+
+void cPixmapContainer::DrawText(int num, const cPoint &Point, const char *s, tColor ColorFg, tColor ColorBg, std::string fontName, int fontSize) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    fontManager->Lock();
+    cFont *font = fontManager->Font(fontName, fontSize);
+    if (font)
+        pixmaps[num]->DrawText(Point, s, ColorFg, ColorBg, font);
+    fontManager->Unlock();    
+}
+
+
+void cPixmapContainer::DrawRectangle(int num, const cRect &Rect, tColor Color) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->DrawRectangle(Rect, Color);
+}
+
+void cPixmapContainer::DrawEllipse(int num, const cRect &Rect, tColor Color, int Quadrants) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->DrawEllipse(Rect, Color, Quadrants);
+}
+
+void cPixmapContainer::DrawSlope(int num, const cRect &Rect, tColor Color, int Type) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->DrawSlope(Rect, Color, Type);
+}
+
+void cPixmapContainer::DrawImage(int num, const cPoint &Point, const cImage &Image) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->DrawImage(Point, Image);
+}
+
+void cPixmapContainer::DrawBitmap(int num, const cPoint &Point, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool Overlay) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->DrawBitmap(Point, Bitmap, ColorFg, ColorBg, Overlay);    
+}
+
+void cPixmapContainer::Fill(int num, tColor Color) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->Fill(Color);
+}
+
+void cPixmapContainer::SetAlpha(int num, int Alpha) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->SetAlpha(Alpha);
+}
+
+void cPixmapContainer::SetTransparency(int num, int Transparency) {
+    if (Transparency < 0 && Transparency > 100)
+        return;
+    pixmapsTransparency[num] = Transparency;
+}
+
+void cPixmapContainer::SetLayer(int num, int Layer) {
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->SetLayer(Layer);
+}
+
+int cPixmapContainer::Width(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int width = pixmaps[num]->ViewPort().Width();
+    return width;
+}
+
+int cPixmapContainer::Height(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int height = pixmaps[num]->ViewPort().Height();
+    return height;
+}
+
+int cPixmapContainer::DrawportWidth(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int width = pixmaps[num]->DrawPort().Width();
+    return width;
+}
+
+int cPixmapContainer::DrawportHeight(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int height = pixmaps[num]->DrawPort().Height();
+    return height;
+}
+
+int cPixmapContainer::DrawportX(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int x = pixmaps[num]->DrawPort().X();
+    return x;
+}
+
+int cPixmapContainer::DrawportY(int num) {
+    if (checkRunning && !Running())
+        return 0;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return 0;
+    int y = pixmaps[num]->DrawPort().Y();
+    return y;
+}
+
+void cPixmapContainer::SetDrawPortPoint(int num, const cPoint &Point) {
+    if (checkRunning && !Running())
+        return;
+    cMutexLock MutexLock(&mutex);
+    if (!pixmaps[num])
+        return;
+    pixmaps[num]->SetDrawPortPoint(Point);
+}
+
+/***************************************************************************
+* HELPERS -- do not access the pixmaps array directly, use wrapper functions
+*            to ensure that a proper lock is set before accessing pixmaps
+****************************************************************************/
+
+void cPixmapContainer::FadeIn(void) {
+    if (!fadeTime)
+        return;
+    uint64_t Start = cTimeMs::Now();
+    int FadeFrameTime = fadeTime / 10;
+    while (Running()) {
+        uint64_t Now = cTimeMs::Now();
+        double t = min(double(Now - Start) / fadeTime, 1.0);
+        int Alpha = t * ALPHA_OPAQUE;
+        for (int i = 0; i < numPixmaps; i++) {
+            if (!PixmapExists(i))
+                continue;
+            if (pixmapsTransparency[i] > 0) {
+                int alpha = (100 - pixmapsTransparency[i])*Alpha/100;
+                SetAlpha(i, alpha);
+            } else {
+                SetAlpha(i, Alpha);
+            }
+        }
+        DoFlush();
+        int Delta = cTimeMs::Now() - Now;
+        if (Running() && (Delta < FadeFrameTime))
+            cCondWait::SleepMs(FadeFrameTime - Delta);
+        if ((int)(Now - Start) > fadeTime)
+            break;
+    }
+}
+
+void cPixmapContainer::FadeOut(void) {
+    if (!fadeTime)
+        return;
+    uint64_t Start = cTimeMs::Now();
+    int FadeFrameTime = fadeTime / 10;
+    while (true) {
+        uint64_t Now = cTimeMs::Now();
+        double t = min(double(Now - Start) / fadeTime, 1.0);
+        int Alpha = (1 - t) * ALPHA_OPAQUE;
+        for (int i = 0; i < numPixmaps; i++) {
+            if (!PixmapExists(i))
+                continue;
+            if (pixmapsTransparency[i] > 0) {
+                int alpha = (100 - pixmapsTransparency[i])*Alpha/100;
+                SetAlpha(i, alpha);
+            } else {
+                SetAlpha(i, Alpha);
+            }
+        }
+        DoFlush();
+        int Delta = cTimeMs::Now() - Now;
+        if (Running() && (Delta < FadeFrameTime))
+            cCondWait::SleepMs(FadeFrameTime - Delta);
+        if ((int)(Now - Start) > fadeTime)
+            break;
+    }
+}
+
+/*****************************************
+* scrollSpeed: 1 slow
+*              2 medium
+*              3 fast
+******************************************/
+void cPixmapContainer::ScrollHorizontal(int num, int scrollDelay, int scrollSpeed, int scrollMode) {
+    bool carriageReturn = (scrollMode == 1) ? true : false;
+    
+    int scrollDelta = 1;
+    int drawPortX;
+
+    int FrameTime = 0;
+    if (scrollSpeed == 1)
+        FrameTime = 50;
+    else if (scrollSpeed == 2)
+        FrameTime = 30;
+    else
+        FrameTime = 15;
+    if (!Running())
+        return;
+    int maxX = DrawportWidth(num) - Width(num);
+    bool doSleep = false;
+    while (Running()) {
+        if (doSleep) {
+            DoSleep(scrollDelay);
+            doSleep = false;
+        }
+        if (!Running())
+            return;
+        uint64_t Now = cTimeMs::Now();
+        drawPortX = DrawportX(num);
+        drawPortX -= scrollDelta;
+
+        if (abs(drawPortX) > maxX) {
+            DoSleep(scrollDelay);
+            if (carriageReturn)
+                drawPortX = 0;
+            else {
+                scrollDelta *= -1;
+                drawPortX -= scrollDelta;
+            }
+            doSleep = true;
+        }
+        if (!carriageReturn && (drawPortX == 0)) {
+            scrollDelta *= -1;
+            doSleep = true;
+        }
+        SetDrawPortPoint(num, cPoint(drawPortX, 0));
+        int Delta = cTimeMs::Now() - Now;
+        DoFlush();
+        if (Running() && (Delta < FrameTime))
+            cCondWait::SleepMs(FrameTime - Delta);
+    }
+}
+
+/*****************************************
+* scrollSpeed: 1 slow
+*              2 medium
+*              3 fast
+******************************************/
+void cPixmapContainer::ScrollVertical(int num, int scrollDelay, int scrollSpeed) {
+    if (!scrollSpeed)
+        return;
+    DoSleep(scrollDelay);
+    int drawPortY;
+    int FrameTime = 0;
+    if (scrollSpeed == 1)
+        FrameTime = 50;
+    else if (scrollSpeed == 2)
+        FrameTime = 30;
+    else 
+        FrameTime = 15;
+    int maxY = DrawportHeight(num) - Height(num);
+    bool doSleep = false;
+    while (Running()) {
+        if (doSleep) {
+            doSleep = false;
+            DoSleep(scrollDelay);
+        }
+        uint64_t Now = cTimeMs::Now();
+        drawPortY = DrawportY(num);
+        drawPortY -= 1;
+        if (abs(drawPortY) > maxY) {
+            doSleep = true;
+            DoSleep(scrollDelay);
+            drawPortY = 0;
+        }
+        SetDrawPortPoint(num, cPoint(0, drawPortY));
+        if (doSleep) {
+            DoSleep(scrollDelay);
+        }
+        int Delta = cTimeMs::Now() - Now;
+        DoFlush();
+        if (Running() && (Delta < FrameTime))
+            cCondWait::SleepMs(FrameTime - Delta);
+    }
+}
+
+void cPixmapContainer::CancelSave(void) {
+    Cancel(-1);
+    while (Active())
+        cCondWait::SleepMs(10);    
+}
+
+void cPixmapContainer::DoSleep(int duration) {
+    int sleepSlice = 10;
+    for (int i = 0; Running() && (i*sleepSlice < duration); i++)
+        cCondWait::SleepMs(sleepSlice);
+}
+
+void cPixmapContainer::DrawBlendedBackground(int num, int xStart, int width, tColor color, tColor colorBlending, bool fromTop) {
+    int height = Height(num);
+    int numSteps = 16;
+    int alphaStep = 0x0F;
+    int alpha = 0x00;
+    int step, begin, end;
+    if (fromTop) {
+        step = 1;
+        begin = 0;
+        end = numSteps;
+    } else {
+        step = -1;
+        begin = height;
+        end = height - numSteps;
+    }
+    tColor clr;
+    bool cont = true;
+    for (int i = begin; cont; i = i + step) {
+        clr = AlphaBlend(color, colorBlending, alpha);
+        DrawRectangle(num, cRect(xStart,i,width,1), clr);
+        alpha += alphaStep;
+        if (i == end)
+            cont = false;
+    }
+}
+
+void cPixmapContainer::DrawRoundedCorners(int num, int radius, int x, int y, int width, int height) {
+    if (radius > 2) {
+        DrawEllipse(num, cRect(x, y, radius, radius), clrTransparent, -2);
+        DrawEllipse(num, cRect(x + width - radius, y , radius, radius), clrTransparent, -1);
+        DrawEllipse(num, cRect(x, y + height - radius, radius, radius), clrTransparent, -3);
+        DrawEllipse(num, cRect(x + width - radius, y + height - radius, radius, radius), clrTransparent, -4);
+    }
+}
+
+void cPixmapContainer::DrawRoundedCornersWithBorder(int num, tColor borderColor, int radius, int width, int height) {
+    if (radius < 3)
+        return;
+    DrawEllipse(num, cRect(0,0,radius,radius), borderColor, -2);
+    DrawEllipse(num, cRect(-1,-1,radius,radius), clrTransparent, -2);
+
+    DrawEllipse(num, cRect(width-radius,0,radius,radius), borderColor, -1);
+    DrawEllipse(num, cRect(width-radius+1,-1,radius,radius), clrTransparent, -1);
+
+    DrawEllipse(num, cRect(0,height-radius,radius,radius), borderColor, -3);
+    DrawEllipse(num, cRect(-1,height-radius+1,radius,radius), clrTransparent, -3);
+
+    DrawEllipse(num, cRect(width-radius,height-radius,radius,radius), borderColor, -4);
+    DrawEllipse(num, cRect(width-radius+1,height-radius+1,radius,radius), clrTransparent, -4);
+}
diff --git a/libcore/pixmapcontainer.h b/libcore/pixmapcontainer.h
new file mode 100644
index 0000000..3b3105a
--- /dev/null
+++ b/libcore/pixmapcontainer.h
@@ -0,0 +1,74 @@
+#ifndef __PIXMAP_CONTAINER_H
+#define __PIXMAP_CONTAINER_H
+
+#include <string>
+#include <vdr/plugin.h>
+#include "fontmanager.h"
+
+enum eFlushState {
+    fsOpen,
+    fsLock,
+    fsCount,
+};
+
+class cPixmapContainer : public cThread {
+private:
+    static cMutex mutex;
+    static cOsd *osd;
+    static eFlushState flushState;
+    bool pixContainerInit;
+    int numPixmaps;
+    cPixmap **pixmaps;
+    int *pixmapsTransparency;
+    bool checkRunning;
+    int fadeTime;
+    bool deleteOsdOnExit;
+protected:
+    void SetInitFinished(void) { pixContainerInit = false; };
+    bool CreateOsd(int Left, int Top, int Width, int Height);
+    void DeleteOsdOnExit(void) { deleteOsdOnExit = true; };
+    //Wrappers for access to pixmaps
+    bool PixmapExists(int num);
+    int NumPixmaps(void) { return numPixmaps; };
+    void CreatePixmap(int num, int Layer, const cRect &ViewPort, const cRect &DrawPort = cRect::Null);
+    bool DestroyPixmap(int num);
+    void DrawText(int num, const cPoint &Point, const char *s, tColor ColorFg, tColor ColorBg, std::string fontName, int fontSize);
+    void DrawRectangle(int num, const cRect &Rect, tColor Color);
+    void DrawEllipse(int num, const cRect &Rect, tColor Color, int Quadrants = 0);
+    void DrawSlope(int num, const cRect &Rect, tColor Color, int Type);
+    void DrawImage(int num, const cPoint &Point, const cImage &Image);
+    void DrawBitmap(int num, const cPoint &Point, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0, bool Overlay = false);
+    void Fill(int num, tColor Color);
+    void SetAlpha(int num, int Alpha);
+    void SetTransparency(int num, int Transparency);
+    void SetLayer(int num, int Layer);
+    int Width(int num);
+    int Height(int num);
+    int DrawportWidth(int num);
+    int DrawportHeight(int num);
+    int DrawportX(int num);
+    int DrawportY(int num);
+    void SetDrawPortPoint(int num, const cPoint &Point);
+    void SetCheckRunning(void) { checkRunning = true; };
+    void UnsetCheckRunning(void) { checkRunning = false; };
+    //HELPERS -- do not access the pixmaps array directly, use wrapper functions
+    void SetFadeTime(int fade) { fadeTime = fade; };
+    void FadeIn(void);
+    void FadeOut(void);
+    void ScrollVertical(int num, int scrollDelay, int scrollSpeed);
+    void ScrollHorizontal(int num, int scrollDelay, int scrollSpeed, int scrollMode);
+    void CancelSave(void);
+    void DoSleep(int duration);
+    void DrawBlendedBackground(int num, int xStart, int width, tColor color, tColor colorBlending, bool fromTop);
+    void DrawRoundedCorners(int num, int radius, int x, int y, int width, int height);
+    void DrawRoundedCornersWithBorder(int num, tColor borderColor, int radius, int width, int height);
+public:
+    cPixmapContainer(int numPixmaps);
+    virtual ~cPixmapContainer(void);
+    void LockFlush(void);
+    void OpenFlush(void);
+    void DoFlush(void);
+    virtual void Action(void) {};
+};
+
+#endif //__PIXMAP_CONTAINER_H
\ No newline at end of file
diff --git a/libcore/recfolderinfo.c b/libcore/recfolderinfo.c
new file mode 100644
index 0000000..d03ed6c
--- /dev/null
+++ b/libcore/recfolderinfo.c
@@ -0,0 +1,219 @@
+#include "recfolderinfo.h"
+
+
+class cFolderInfoInternList;
+
+class cRecordingsFolderInfo::cFolderInfoIntern:public cListObject {
+private:
+  cFolderInfoIntern         *_parent;
+  cList<cFolderInfoIntern>  *_subFolders;
+
+  cString   _name;
+  time_t    _latest;
+  int       _count;
+  cString   _latestFileName;
+
+  void UpdateData(cRecording *Recording);
+  cFolderInfoIntern *FindSubFolder(const char *Name) const;
+
+public:
+  cFolderInfoIntern(cFolderInfoIntern *Parent, const char *Name);
+  virtual ~cFolderInfoIntern(void);
+
+  // split Name and find folder-info in tree
+  // if "Add", missing folders are created
+  cFolderInfoIntern *Find(const char *Name, bool Add);
+
+  void Add(cRecording *Recording);
+
+  cRecordingsFolderInfo::cFolderInfo *GetInfo(void) const;
+
+  cString FullName(void) const;
+  cString ToText(void) const;
+  cString DebugOutput(void) const;
+};
+
+
+cRecordingsFolderInfo::cFolderInfo::cFolderInfo(const char *Name, const char *FullName, time_t Latest, int Count, const char *LatestFileName)
+{
+  this->Name = Name;
+  this->FullName = FullName;
+  this->Latest = Latest;
+  this->Count = Count;
+  this->LatestFileName= LatestFileName;
+}
+
+
+cRecordingsFolderInfo::cRecordingsFolderInfo(cRecordings &Recordings)
+:_recordings(Recordings)
+,_root(NULL)
+{
+  Rebuild();
+}
+
+cRecordingsFolderInfo::~cRecordingsFolderInfo(void)
+{
+  delete _root;
+  _root = NULL;
+}
+
+void cRecordingsFolderInfo::Rebuild(void)
+{
+  delete _root;
+  _root = new cFolderInfoIntern(NULL, "");
+
+  cThreadLock RecordingsLock(&_recordings);
+  // re-get state with lock held
+  _recordings.StateChanged(_recState);
+  cFolderInfoIntern *info;
+  cString folder;
+  for (cRecording *rec = _recordings.First(); rec; rec = _recordings.Next(rec)) {
+#if APIVERSNUM < 20102
+      //cRecording::Folder() first available since VDR 2.1.2
+      const char *recName = rec->Name();
+      if (const char *s = strrchr(recName, FOLDERDELIMCHAR)) {
+         folder = recName;
+         folder.Truncate(s - recName);
+         }
+      else
+         folder = "";
+#else
+      folder = rec->Folder();
+#endif
+      info = _root->Find(*folder, true);
+      info->Add(rec);
+      }
+}
+
+cRecordingsFolderInfo::cFolderInfo  *cRecordingsFolderInfo::Get(const char *Folder)
+{
+  cMutexLock lock(&_rootLock);
+
+  if (_recordings.StateChanged(_recState) || (_root == NULL))
+     Rebuild();
+
+  cFolderInfoIntern *info = _root->Find(Folder, false);
+  if (info == NULL)
+     return NULL;
+
+  return info->GetInfo();
+}
+
+cString cRecordingsFolderInfo::DebugOutput(void) const
+{
+  cMutexLock lock(&_rootLock);
+
+  return _root->DebugOutput();
+}
+
+
+cRecordingsFolderInfo::cFolderInfoIntern::cFolderInfoIntern(cFolderInfoIntern *Parent, const char *Name)
+:_parent(Parent)
+,_name(Name)
+,_latest(0)
+,_count(0)
+,_latestFileName("")
+{
+  _subFolders = new cList<cFolderInfoIntern>();
+}
+
+cRecordingsFolderInfo::cFolderInfoIntern::~cFolderInfoIntern(void)
+{
+  delete _subFolders;
+  _subFolders = NULL;
+}
+
+cRecordingsFolderInfo::cFolderInfoIntern *cRecordingsFolderInfo::cFolderInfoIntern::Find(const char *Name, bool Add)
+{
+  cFolderInfoIntern *info = NULL;
+  if (Add)
+     info = this;
+
+  if (Name && *Name) {
+     static char delim[2] = { FOLDERDELIMCHAR, 0 };
+     char *strtok_next;
+     cFolderInfoIntern *next;
+     char *folder = strdup(Name);
+     info = this;
+     for (char *t = strtok_r(folder, delim, &strtok_next); t; t = strtok_r(NULL, delim, &strtok_next)) {
+         next = info->FindSubFolder(t);
+         if (next == NULL) {
+            if (!Add) {
+               info = NULL;
+               break;
+               }
+
+            next = new cFolderInfoIntern(info, t);
+            info->_subFolders->Add(next);
+            }
+         info = next;
+         }
+     free(folder);
+     }
+
+  return info;
+}
+
+void cRecordingsFolderInfo::cFolderInfoIntern::UpdateData(cRecording *Recording)
+{
+  // count every recording
+  _count++;
+
+  // update date if newer
+  time_t recdate = Recording->Start();
+  if (_latest < recdate) {
+     _latest = recdate;
+     _latestFileName = Recording->FileName();
+     }
+}
+
+cRecordingsFolderInfo::cFolderInfoIntern *cRecordingsFolderInfo::cFolderInfoIntern::FindSubFolder(const char *Name) const
+{
+  for (cRecordingsFolderInfo::cFolderInfoIntern *info = _subFolders->First(); info; info = _subFolders->Next(info)) {
+      if (strcmp(info->_name, Name) == 0)
+         return info;
+      }
+  return NULL;
+}
+
+void cRecordingsFolderInfo::cFolderInfoIntern::Add(cRecording *Recording)
+{
+  if (Recording == NULL)
+     return;
+
+  // update this and all parent folders
+  for (cFolderInfoIntern *p = this; p; p = p->_parent)
+     p->UpdateData(Recording);
+}
+
+cRecordingsFolderInfo::cFolderInfo *cRecordingsFolderInfo::cFolderInfoIntern::GetInfo(void) const
+{
+  return new cRecordingsFolderInfo::cFolderInfo(*_name, *FullName(), _latest, _count, *_latestFileName);
+}
+
+cString cRecordingsFolderInfo::cFolderInfoIntern::FullName(void) const
+{
+  static char delim[2] = { FOLDERDELIMCHAR, 0 };
+
+  cString name = _name;
+  for (cFolderInfoIntern *p = _parent; p; p = p->_parent) {
+      // don't add FOLDERDELIMCHAR at start of FullName
+      if (p->_parent == NULL)
+         break;
+      name = cString::sprintf("%s%s%s", *p->_name, delim, *name);
+      }
+  return name;
+}
+
+cString cRecordingsFolderInfo::cFolderInfoIntern::ToText(void) const
+{
+  return cString::sprintf("%s (%d recordings, latest: %s)\n", *FullName(), _count, *ShortDateString(_latest));
+}
+
+cString cRecordingsFolderInfo::cFolderInfoIntern::DebugOutput(void) const
+{
+  cString output = ToText();
+  for (cFolderInfoIntern *i = _subFolders->First(); i; i = _subFolders->Next(i))
+      output = cString::sprintf("%s%s", *output, *i->DebugOutput());
+  return output;
+}
\ No newline at end of file
diff --git a/libcore/recfolderinfo.h b/libcore/recfolderinfo.h
new file mode 100644
index 0000000..8148ea7
--- /dev/null
+++ b/libcore/recfolderinfo.h
@@ -0,0 +1,43 @@
+#ifndef __RECFOLDERINFO_H
+#define __RECFOLDERINFO_H
+
+#include <vdr/recording.h>
+
+
+class cRecordingsFolderInfo {
+public:
+  class cFolderInfoIntern;
+
+private:
+  cRecordings        &_recordings;
+  int                 _recState;
+  cFolderInfoIntern  *_root;
+  mutable cMutex      _rootLock;
+
+  void Rebuild(void);
+
+public:
+  class cFolderInfo {
+  public:
+    cString Name;
+    cString FullName;
+    time_t  Latest;
+    int     Count;
+    cString LatestFileName;
+
+    cFolderInfo(const char *Name, const char *FullName, time_t Latest, int Count, const char *LatestFileName);
+  };
+
+  cRecordingsFolderInfo(cRecordings &Recordings);
+  ~cRecordingsFolderInfo(void);
+
+  // caller must delete the cInfo object!
+  // returns NULL if folder doesn't exists
+  // will rebuild tree if recordings' state has changed
+  // is thread-safe
+  cFolderInfo  *Get(const char *Folder);
+
+  cString DebugOutput(void) const;
+};
+
+#endif // __RECFOLDERINFO_H
\ No newline at end of file
diff --git a/libcore/skinsetup.c b/libcore/skinsetup.c
new file mode 100644
index 0000000..88901c8
--- /dev/null
+++ b/libcore/skinsetup.c
@@ -0,0 +1,308 @@
+#include "skinsetup.h"
+#include "../config.h"
+#include "../libtemplate/xmlparser.h"
+
+// --- cSkinSetupParameter -----------------------------------------------------------
+
+cSkinSetupParameter::cSkinSetupParameter(void) {
+    type = sptUnknown;
+    name = "";
+    displayText = "";
+    min = 0;
+    max = 1000;
+    value = 0; 
+}
+
+void cSkinSetupParameter::Debug(void) {
+    string sType = "unknown";
+    if (type == sptBool)
+        sType = "bool";
+    else if (type == sptInt)
+        sType = "int";
+    dsyslog("skindesigner: name \"%s\", type %s, displayText \"%s\", Value %d", name.c_str(), sType.c_str(), displayText.c_str(), value);
+    if (type == sptInt)
+        dsyslog("skindesigner: min %d, max %d", min, max);
+}
+
+// --- cSkinSetupMenu -----------------------------------------------------------
+cSkinSetupMenu::cSkinSetupMenu(void) {
+    name = "";
+    displayText = "";
+    parent = NULL;
+}
+
+cSkinSetupMenu::~cSkinSetupMenu(void) {
+    for (map < string, cSkinSetupParameter* >::iterator p = parameters.begin(); p != parameters.end(); p++) {
+        delete p->second;
+    }
+    for (vector < cSkinSetupMenu* >::iterator s = subMenus.begin(); s != subMenus.end(); s++) {
+        delete (*s);
+    }
+}
+
+cSkinSetupParameter *cSkinSetupMenu::GetNextParameter(bool deep) {
+    cSkinSetupParameter *param = NULL;
+    if (paramIt != parameters.end()) {
+        param = paramIt->second;
+        paramIt++;
+        return param;
+    }
+    if (!deep)
+        return NULL;
+
+    if (subMenuIt != subMenus.end()) {
+        param = (*subMenuIt)->GetNextParameter();
+        if (!param) {
+            subMenuIt++;
+            if (subMenuIt != subMenus.end()) {
+                (*subMenuIt)->InitIterators();
+                param = (*subMenuIt)->GetNextParameter();
+            }
+        }
+    }
+    return param;
+}
+
+cSkinSetupParameter *cSkinSetupMenu::GetParameter(string name) {
+    map < string, cSkinSetupParameter* >::iterator hit = parameters.find(name);
+    if (hit != parameters.end())
+        return hit->second;
+
+    cSkinSetupParameter *paramHit = NULL;
+    for (vector < cSkinSetupMenu* >::iterator subMenu = subMenus.begin(); subMenu != subMenus.end(); subMenu++) {
+        paramHit = (*subMenu)->GetParameter(name);
+        if (paramHit)
+            return paramHit;
+    }
+    return NULL;
+}
+
+void cSkinSetupMenu::InitIterators(void) {
+    paramIt = parameters.begin();
+    subMenuIt = subMenus.begin();
+    while (subMenuIt != subMenus.end()) {
+        (*subMenuIt)->InitIterators();
+        subMenuIt++;
+    }
+    subMenuIt = subMenus.begin();
+}
+
+void cSkinSetupMenu::SetParameter(eSetupParameterType paramType, xmlChar *name, xmlChar* displayText, xmlChar *min, xmlChar *max, xmlChar *value) {
+    cSkinSetupParameter *param = new cSkinSetupParameter();
+    param->type = paramType;
+    param->name = (const char*)name;
+    param->displayText = (const char*)displayText;
+
+    if (min && paramType == sptInt) {
+        param->min = atoi((const char*)min);
+    }
+    if (max && paramType == sptInt) {
+        param->max = atoi((const char*)max);
+    }
+    param->value = atoi((const char*)value);
+
+    parameters.insert(pair< string, cSkinSetupParameter* >(param->name, param));
+}
+
+cSkinSetupMenu *cSkinSetupMenu::GetMenu(string &name) {
+    for (vector<cSkinSetupMenu*>::iterator m = subMenus.begin(); m != subMenus.end(); m++) {
+        cSkinSetupMenu *menu = (*m);
+        if (!name.compare(menu->GetName()))
+            return menu;
+        menu = menu->GetMenu(name);
+        if (menu)
+            return menu;  
+    }
+    return NULL;
+}
+
+cSkinSetupMenu *cSkinSetupMenu::GetNextSubMenu(bool deep) {
+    cSkinSetupMenu *menu = NULL;
+    if (subMenuIt != subMenus.end()) {
+        if (deep) {
+            menu = (*subMenuIt)->GetNextSubMenu(deep);
+            if (menu)
+                return menu;
+        }
+        menu = *subMenuIt;
+        subMenuIt++;
+        return menu;
+    }
+    return NULL;
+}
+
+
+void cSkinSetupMenu::Debug(bool deep) {
+    dsyslog("skindesigner: Menu %s Setup Parameters", name.c_str());
+    for (map < string, cSkinSetupParameter* >::iterator p = parameters.begin(); p != parameters.end(); p++) {
+        (p->second)->Debug();
+    }
+    if (subMenus.empty())
+        return;
+    for (vector < cSkinSetupMenu* >::iterator s = subMenus.begin(); s != subMenus.end(); s++) {
+        dsyslog("skindesigner: SubMenu %s, Parent %s", ((*s)->GetName()).c_str(), ((*s)->GetParent()->GetName()).c_str());
+        if (deep)
+            (*s)->Debug();
+    }
+}
+// --- cSkinSetup -----------------------------------------------------------
+
+cSkinSetup::cSkinSetup(string skin) {
+	this->skin = skin;
+    rootMenu = new cSkinSetupMenu();
+    rootMenu->SetName("root");
+    currentMenu = rootMenu;
+}
+
+cSkinSetup::~cSkinSetup() {
+    delete rootMenu;
+}
+
+bool cSkinSetup::ReadFromXML(void) {
+    string xmlPath = *cString::sprintf("%s%s/setup.xml", *config.skinPath, skin.c_str());
+    cXmlParser parser;
+    if (!parser.ReadSkinSetup(this, xmlPath)) {
+        return false;
+    }
+    parser.ParseSkinSetup(skin);
+    return true;
+}
+
+void cSkinSetup::SetSubMenu(xmlChar *name, xmlChar *displayText) {
+    cSkinSetupMenu *subMenu = new cSkinSetupMenu();
+    subMenu->SetName((const char*)name);
+    subMenu->SetDisplayText((const char*)displayText);
+    subMenu->SetParent(currentMenu);
+    currentMenu->AddSubMenu(subMenu);
+    currentMenu = subMenu;
+}
+
+void cSkinSetup::SubMenuDone(void) {
+    cSkinSetupMenu *parent = currentMenu->GetParent();
+    if (parent) {
+        currentMenu = parent;
+    }
+}
+
+void cSkinSetup::SetParameter(xmlChar *type, xmlChar *name, xmlChar* displayText, xmlChar *min, xmlChar *max, xmlChar *value) {
+    if (!type || !name || !displayText || !value) {
+        esyslog("skindesigner: invalid setup parameter for skin %s", skin.c_str());
+        return;
+    }
+    eSetupParameterType paramType = sptUnknown;
+    if (!xmlStrcmp(type, (const xmlChar *) "int")) {
+        paramType = sptInt;
+    } else if (!xmlStrcmp(type, (const xmlChar *) "bool")) {
+        paramType = sptBool;
+    }
+    if (paramType == sptUnknown) {
+        esyslog("skindesigner: invalid setup parameter for skin %s", skin.c_str());
+        return;
+    }
+    currentMenu->SetParameter(paramType, name, displayText, min, max, value);
+}
+
+cSkinSetupParameter *cSkinSetup::GetNextParameter(void) {
+    return rootMenu->GetNextParameter();
+}
+
+cSkinSetupParameter *cSkinSetup::GetParameter(string name) {
+    return rootMenu->GetParameter(name);
+}
+
+void cSkinSetup::SetTranslation(string translationToken, map < string, string > transl) {
+	translations.insert(pair<string, map < string, string > >(translationToken, transl));
+}
+
+void cSkinSetup::AddToGlobals(cGlobals *globals) {
+    if (!globals)
+    	return;
+    rootMenu->InitIterators();
+    cSkinSetupParameter *param = NULL;
+    while (param = rootMenu->GetNextParameter()) {
+		globals->AddInt(param->name, param->value);
+    }
+}
+
+void cSkinSetup::TranslateSetup(void) {
+    rootMenu->InitIterators();
+    cSkinSetupParameter *param = NULL;
+    while (param = rootMenu->GetNextParameter()) {
+        string transl = "";
+        if (Translate(param->displayText, transl)) {
+            param->displayText = transl;
+        }
+    }
+
+    rootMenu->InitIterators();
+    cSkinSetupMenu *subMenu = NULL;
+    while (subMenu = rootMenu->GetNextSubMenu()) {
+        string transl = "";
+        if (Translate(subMenu->GetDisplayText(), transl)) {
+            subMenu->SetDisplayText(transl);
+        }
+    }
+}
+
+cSkinSetupMenu *cSkinSetup::GetMenu(string &name) {
+    if (name.size() == 0)
+        return rootMenu;
+    return rootMenu->GetMenu(name);
+}
+
+bool cSkinSetup::Translate(string text, string &translation) {
+    string transStart = "{tr(";
+    string transEnd = ")}";
+    size_t foundStart = text.find(transStart);
+    size_t foundEnd = text.find(transEnd);
+    bool translated = false;
+
+    while (foundStart != string::npos && foundEnd != string::npos) {
+        string token = text.substr(foundStart + 1, foundEnd - foundStart);
+        string transToken = DoTranslate(token);
+        if (transToken.size() > 0)
+            translated = true;
+        else
+            return false;
+        text.replace(foundStart, foundEnd - foundStart + 2, transToken);
+        foundStart = text.find(transStart);
+        foundEnd = text.find(transEnd);
+    }
+    if (translated)
+        translation = text;
+    return translated;
+}
+
+string cSkinSetup::DoTranslate(string token) {
+    string translation = "";
+    map <string, map< string, string > >::iterator hit = translations.find(token);
+    if (hit == translations.end()) {
+        esyslog("skindesigner: invalid translation token %s", token.c_str());
+        return translation;
+    }
+    map< string, string > translats = hit->second;
+    map< string, string >::iterator trans = translats.find(Setup.OSDLanguage);
+    if (trans != translats.end()) {
+        translation = trans->second;
+    } else {
+        map< string, string >::iterator transDefault = translats.find("en_EN");
+        if (transDefault != translats.end()) {
+            translation = transDefault->second;
+        }
+    }
+    return translation;
+}
+
+void cSkinSetup::Debug(void) {
+    rootMenu->Debug();
+    return;
+    dsyslog("skindesigner: Skin \"%s\" Setup Parameter Translations", skin.c_str());
+	for (map<string, map<string,string> >::iterator trans = translations.begin(); trans != translations.end(); trans++) {
+		dsyslog("skindesigner: translation token %s", (trans->first).c_str());
+		map<string,string> transValues = trans->second;
+		for (map<string,string>::iterator trans2 = transValues.begin(); trans2 != transValues.end(); trans2++) {
+			dsyslog("skindesigner: translation language %s value \"%s\"", (trans2->first).c_str(), (trans2->second).c_str());			
+		}
+	}
+
+}
diff --git a/libcore/skinsetup.h b/libcore/skinsetup.h
new file mode 100644
index 0000000..6e99799
--- /dev/null
+++ b/libcore/skinsetup.h
@@ -0,0 +1,97 @@
+#ifndef __SKINSETUP_H
+#define __SKINSETUP_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+#include <vdr/plugin.h>
+#include <libxml/xmlstring.h>
+#include "../libtemplate/globals.h"
+
+using namespace std;
+
+enum eSetupParameterType {
+    sptInt,
+    sptBool,
+    sptUnknown
+};
+
+// --- cSkinSetupParameter -----------------------------------------------------------
+
+class cSkinSetupParameter {
+private:
+public:
+    cSkinSetupParameter(void);
+    virtual ~cSkinSetupParameter(void) {};
+    eSetupParameterType type;
+    string name;
+    string displayText;
+    int min;
+    int max;
+    int value; 
+    void Debug(void);
+};
+
+// --- cSkinSetupMenu -----------------------------------------------------------
+
+class cSkinSetupMenu {
+private:
+    string name;
+    string displayText;
+    cSkinSetupMenu *parent;
+    vector < cSkinSetupMenu* > subMenus;
+    vector < cSkinSetupMenu* >::iterator subMenuIt;
+    map < string, cSkinSetupParameter* > parameters;
+    map < string, cSkinSetupParameter* >::iterator paramIt;
+public:
+    cSkinSetupMenu(void);
+    virtual ~cSkinSetupMenu(void);
+    void SetName(string name) { this->name = name; };
+    void SetDisplayText(string displayText) { this->displayText = displayText; };
+    string GetName(void) { return name; };
+    string GetDisplayText(void) { return displayText; };
+    void SetParent(cSkinSetupMenu *p) { parent = p; };
+    cSkinSetupMenu *GetParent(void) { return parent; };
+    void AddSubMenu(cSkinSetupMenu *sub) { subMenus.push_back(sub); };
+    void SetParameter(eSetupParameterType paramType, xmlChar *name, xmlChar* displayText, xmlChar *min, xmlChar *max, xmlChar *value);
+    void InitIterators(void);
+    void InitParameterIterator(void) { paramIt = parameters.begin(); };
+    cSkinSetupParameter *GetNextParameter(bool deep = true);
+    cSkinSetupParameter *GetParameter(string name);
+    void InitSubmenuIterator(void) { subMenuIt = subMenus.begin(); };
+    cSkinSetupMenu *GetNextSubMenu(bool deep = true);
+    cSkinSetupMenu *GetMenu(string &name);
+    void Debug(bool deep = true);
+};
+
+// --- cSkinSetup -----------------------------------------------------------
+
+class cSkinSetup {
+private:
+    string skin;
+    cSkinSetupMenu *rootMenu;
+    cSkinSetupMenu *currentMenu;
+    map < string, map< string, string > > translations;
+    string DoTranslate(string token);
+    bool Translate(string text, string &translation);
+public:
+    cSkinSetup(string skin);
+    virtual ~cSkinSetup(void);
+    bool ReadFromXML(void);
+    void SetSubMenu(xmlChar *name, xmlChar *displayText);
+    void SubMenuDone(void);
+    void SetParameter(xmlChar *type, xmlChar *name, xmlChar* displayText, xmlChar *min, xmlChar *max, xmlChar *value);
+    void InitParameterIterator(void) { rootMenu->InitIterators(); };
+    cSkinSetupParameter *GetNextParameter(void);
+    cSkinSetupParameter *GetParameter(string name);
+    void SetTranslation(string translationToken, map < string, string > transl);
+    void AddToGlobals(cGlobals *globals);
+    void TranslateSetup(void);
+    string GetSkin(void) { return skin; };
+    cSkinSetupMenu *GetMenu(string &name);
+    void Debug(void);
+};
+
+#endif //__SKINSETUP_H
\ No newline at end of file
diff --git a/libcore/timers.c b/libcore/timers.c
new file mode 100644
index 0000000..3e80ec7
--- /dev/null
+++ b/libcore/timers.c
@@ -0,0 +1,87 @@
+#include "timers.h"
+#include "../services/epgsearch.h"
+#include "../services/remotetimers.h"
+
+static int CompareTimers(const void *a, const void *b) {
+    return (*(const cTimer **)a)->Compare(**(const cTimer **)b);
+}
+
+cGlobalSortedTimers::cGlobalSortedTimers(bool forceRefresh) : cVector<const cTimer *>(Timers.Count()) {
+    static bool initial = true;
+    static cRemoteTimerRefresh *remoteTimerRefresh = NULL;
+
+    if (forceRefresh)
+        initial = true;
+    //check if remotetimers plugin is available
+    static cPlugin* pRemoteTimers = cPluginManager::GetPlugin("remotetimers");
+
+    cSchedulesLock SchedulesLock;
+    const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock);
+    
+    if (pRemoteTimers && initial) {
+        cString errorMsg;
+        pRemoteTimers->Service("RemoteTimers::RefreshTimers-v1.0", &errorMsg);
+        initial = false;
+    }
+
+    for (cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer)) {
+        if (Timer->HasFlags(tfActive))
+            Append(Timer);
+    }
+
+    //if remotetimers plugin is available, take timers also from him
+    if (pRemoteTimers) {
+        cTimer* remoteTimer = NULL;
+        while (pRemoteTimers->Service("RemoteTimers::ForEach-v1.0", &remoteTimer) && remoteTimer != NULL) {
+            remoteTimer->SetEventFromSchedule(Schedules); // make sure the event is current
+            if (remoteTimer->HasFlags(tfActive))
+                Append(remoteTimer);
+        }
+    }
+  
+    Sort(CompareTimers);
+    
+    if (pRemoteTimers && (remoteTimerRefresh == NULL))
+        remoteTimerRefresh = new cRemoteTimerRefresh();
+}
+
+int cGlobalSortedTimers::NumTimerConfilicts(void) {
+    int numConflicts = 0;
+    cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+    if (p) {
+        Epgsearch_lastconflictinfo_v1_0 *serviceData = new Epgsearch_lastconflictinfo_v1_0;
+        if (serviceData) {
+            serviceData->nextConflict = 0;
+            serviceData->relevantConflicts = 0;
+            serviceData->totalConflicts = 0;
+            p->Service("Epgsearch-lastconflictinfo-v1.0", serviceData);
+            if (serviceData->relevantConflicts > 0) {
+                numConflicts = serviceData->relevantConflicts;
+            }
+            delete serviceData;
+        }
+    }
+    return numConflicts;
+}
+
+cRemoteTimerRefresh::cRemoteTimerRefresh(): cThread("skindesigner: RemoteTimers::RefreshTimers") {
+    Start();
+}
+
+cRemoteTimerRefresh::~cRemoteTimerRefresh(void) {
+    Cancel(-1);
+    while (Active())
+        cCondWait::SleepMs(10);
+}
+
+void cRemoteTimerRefresh::Action(void) {    
+    #define REFESH_INTERVALL_MS 30000
+    while (Running()) {
+        cCondWait::SleepMs(REFESH_INTERVALL_MS);      
+        if (!cOsd::IsOpen()) {//make sure that no timer is currently being edited
+            cGlobalSortedTimers(true);
+            Timers.SetModified();
+        }
+    }
+}
+      
\ No newline at end of file
diff --git a/libcore/timers.h b/libcore/timers.h
new file mode 100644
index 0000000..81d988a
--- /dev/null
+++ b/libcore/timers.h
@@ -0,0 +1,20 @@
+#ifndef __NOPACITY_TIMERS_H
+#define __NOPACITY_TIMERS_H
+
+#include <vdr/timers.h>
+#include <vdr/plugin.h>
+
+class cGlobalSortedTimers : public cVector<const cTimer *> {
+    public:
+        cGlobalSortedTimers(bool forceRefresh = false);
+        int NumTimerConfilicts(void);
+};
+
+class cRemoteTimerRefresh: public cThread {
+    protected:
+        virtual void Action(void);
+    public:
+        cRemoteTimerRefresh(void);
+        virtual ~cRemoteTimerRefresh(void);
+};
+#endif //__NOPACITY_TIMERS_H
diff --git a/libtemplate/globals.c b/libtemplate/globals.c
new file mode 100644
index 0000000..e09638b
--- /dev/null
+++ b/libtemplate/globals.c
@@ -0,0 +1,250 @@
+#include "globals.h"
+#include "xmlparser.h"
+#include "../config.h"
+#include <locale.h>
+
+cGlobals::cGlobals(void) {
+    fonts.insert(pair<string, string>("vdrOsd", Setup.FontOsd));
+    fonts.insert(pair<string, string>("vdrFix", Setup.FontFix));
+    fonts.insert(pair<string, string>("vdrSml", Setup.FontSml));
+    language = Setup.OSDLanguage;
+    dsyslog("skindesigner: using language %s", language.c_str());
+}
+
+bool cGlobals::ReadFromXML(void) {
+    //globals.xml is mandatory
+    string xmlFile = "globals.xml";
+    cXmlParser parser;
+    if (!parser.ReadGlobals(this, xmlFile, true))
+        return false;
+    if (!parser.ParseGlobals())
+        return false;
+    //theme.xml is optional
+    xmlFile = "theme.xml";
+    if (parser.ReadGlobals(this, xmlFile, false)) {
+        parser.ParseGlobals();
+    }
+    return true;
+}
+
+void cGlobals::AddColor(string &name, tColor &col) {
+    colors.erase(name);
+    colors.insert(pair<string, tColor>(name, col));
+}
+
+bool cGlobals::GetColor(string &name, tColor &col) {
+    int size = name.size();
+    if (size < 2)
+        return false;
+    string nameCutted = name.substr(1, size-2);
+    map <string, tColor>::iterator hit = colors.find(nameCutted);
+    if (hit != colors.end()) {
+        col = hit->second;
+        return true;
+    }
+    return false;
+}
+
+void cGlobals::AddFont(string &name, string &font) {
+    fonts.erase(name);
+    fonts.insert(pair<string, string>(name, font));
+}
+
+bool cGlobals::GetFont(string name, string &font) {
+    int size = name.size();
+    if (size < 2)
+        return false;
+    string nameCutted = name.substr(1, size-2);
+    map<string,string>::iterator hit = fonts.find(nameCutted);
+    if (hit != fonts.end()) {
+        font = hit->second;
+        return true;
+    }
+    return false;    
+}
+
+void cGlobals::AddInt(string &name, int value) {
+    intVars.erase(name);
+    intVars.insert(pair<string, int>(name, value));    
+}
+
+void cGlobals::ReplaceIntVars(string &value) {
+    for (map<string, int>::iterator it = intVars.begin(); it != intVars.end(); it++) {
+        stringstream sToken;
+        sToken << "{" << it->first << "}";
+        string token = sToken.str();
+        size_t foundToken = string::npos;
+        do {
+            foundToken = value.find(token);
+            if (foundToken != string::npos) {
+                stringstream st;
+                st << it->second;
+                value = value.replace(foundToken, token.size(), st.str());
+            }
+        } while (foundToken != string::npos);
+    }
+}
+
+bool cGlobals::GetInt(string name, int &val) {
+    map < string, int >::iterator hit = intVars.find(name);
+    if (hit != intVars.end()) {
+        val = hit->second;
+        return true;
+    }
+    return false;
+}
+
+void cGlobals::AddDouble(string &name, string &value) {
+    doubleVars.erase(name);
+    if (config.replaceDecPoint) {
+        if (value.find_first_of('.') != string::npos) {
+            std::replace( value.begin(), value.end(), '.', config.decPoint);
+        }
+    }
+    double val = atof(value.c_str());
+    doubleVars.insert(pair<string, double>(name, val));    
+}
+
+void cGlobals::ReplaceDoubleVars(string &value) {
+    for (map<string, double>::iterator it = doubleVars.begin(); it != doubleVars.end(); it++) {
+        stringstream sToken;
+        sToken << "{" << it->first << "}";
+        string token = sToken.str();
+        size_t foundToken = string::npos;
+        do {
+            foundToken = value.find(token);
+            if (foundToken != string::npos) {
+                stringstream st;
+                st << it->second;
+                string doubleVal = st.str();
+                if (config.replaceDecPoint) {
+                    if (doubleVal.find_first_of('.') != string::npos) {
+                        std::replace( doubleVal.begin(), doubleVal.end(), '.', config.decPoint);
+                    }
+                }
+                value = value.replace(foundToken, token.size(), doubleVal);
+            }
+        } while (foundToken != string::npos);
+    }    
+}
+
+void cGlobals::AddString(string &name, string &value) {
+    stringVars.erase(name);
+    stringVars.insert(pair<string, string>(name, value));
+}
+
+void cGlobals::ReplaceStringVars(string &value) {
+    for (map<string,string>::iterator it = stringVars.begin(); it != stringVars.end(); it++) {
+        stringstream sToken;
+        sToken << "{" << it->first << "}";
+        string token = sToken.str();
+        size_t foundToken = value.find(token);
+        if (foundToken != string::npos) {
+            value = value.replace(foundToken, token.size(), it->second);
+        }
+    }
+
+}
+
+bool cGlobals::AddTranslation(string name,  map < string, string > transl) {
+    translations.erase(name);
+    translations.insert(pair<string, map < string, string > >(name, transl));
+}
+
+bool cGlobals::Translate(string text, string &translation) {
+    string transStart = "{tr(";
+    string transEnd = ")}";
+    size_t foundStart = text.find(transStart);
+    size_t foundEnd = text.find(transEnd);
+    bool translated = false;
+
+    while (foundStart != string::npos && foundEnd != string::npos) {
+        string token = text.substr(foundStart + 1, foundEnd - foundStart);
+        string transToken = DoTranslate(token);
+        if (transToken.size() > 0)
+            translated = true;
+        else
+            return false;
+        text.replace(foundStart, foundEnd - foundStart + 2, transToken);
+        foundStart = text.find(transStart);
+        foundEnd = text.find(transEnd);
+    }
+    if (translated)
+        translation = text;
+    return translated;
+}
+
+string cGlobals::DoTranslate(string token) {
+    string translation = "";
+    map <string, map< string, string > >::iterator hit = translations.find(token);
+    if (hit == translations.end()) {
+        esyslog("skindesigner: invalid translation token %s", token.c_str());
+        return translation;
+    }
+    map< string, string > translats = hit->second;
+    map< string, string >::iterator trans = translats.find(language);
+    if (trans != translats.end()) {
+        translation = trans->second;
+    } else {
+        map< string, string >::iterator transDefault = translats.find("en_EN");
+        if (transDefault != translats.end()) {
+            translation = transDefault->second;
+        }
+    }
+    return translation;
+}
+
+void cGlobals::AddCustomInt(string &name, int value) {
+    customIntTokens.erase(name);
+    customIntTokens.insert(pair<string,int>(name, value));
+}
+
+void cGlobals::AddCustomString(string &name, string &value) {
+    customStringTokens.erase(name);
+    customStringTokens.insert(pair<string,string>(name, value));
+}
+
+bool cGlobals::GetCustomInt(string name, int &val) {
+    map < string, int >::iterator hit = customIntTokens.find(name);
+    if (hit != customIntTokens.end()) {
+        val = hit->second;
+        return true;
+    }
+    return false;
+}
+
+void cGlobals::ListCustomTokens(void) {
+    for (map<string, string>::iterator it = customStringTokens.begin(); it != customStringTokens.end(); it++) {
+        dsyslog("skindesigner: custom string token \"%s\" = \"%s\"", (it->first).c_str(), (it->second).c_str());
+    }
+    for (map<string, int>::iterator it = customIntTokens.begin(); it != customIntTokens.end(); it++) {
+        dsyslog("skindesigner: custom int token \"%s\" = \"%d\"", (it->first).c_str(), it->second);
+    }
+}
+
+void cGlobals::Debug(void) {
+    dsyslog("skindesigner: GLOBAL VARIABLES");
+    for (map <string, tColor>::iterator col = colors.begin(); col != colors.end(); col++) {
+        dsyslog("skindesigner: Color \"%s\": %x", (col->first).c_str(), col->second);
+    }
+    for (map <string, int>::iterator myInt = intVars.begin(); myInt != intVars.end(); myInt++) {
+        dsyslog("skindesigner: Integer Variable \"%s\": %d", (myInt->first).c_str(), myInt->second);
+    }
+    for (map <string, double>::iterator myDouble = doubleVars.begin(); myDouble != doubleVars.end(); myDouble++) {
+        dsyslog("skindesigner: Double Variable \"%s\": %f", (myDouble->first).c_str(), myDouble->second);
+    }
+    for (map <string, string>::iterator myStr = stringVars.begin(); myStr != stringVars.end(); myStr++) {
+        dsyslog("skindesigner: String Variable \"%s\": \"%s\"", (myStr->first).c_str(), (myStr->second).c_str());
+    }
+    for (map <string, string>::iterator font = fonts.begin(); font != fonts.end(); font++) {
+        dsyslog("skindesigner: Font \"%s\": \"%s\"", (font->first).c_str(), (font->second).c_str());
+    }
+
+    for (map <string, map< string, string > >::iterator trans = translations.begin(); trans != translations.end(); trans++) {
+        dsyslog("skindesigner: Translation Token %s", (trans->first).c_str());
+        map< string, string > tokenTrans = trans->second;
+        for (map< string, string >::iterator transTok = tokenTrans.begin(); transTok != tokenTrans.end(); transTok++) {
+            dsyslog("skindesigner: language %s, translation %s", (transTok->first).c_str(), (transTok->second).c_str());
+        }
+    }
+}
diff --git a/libtemplate/globals.h b/libtemplate/globals.h
new file mode 100644
index 0000000..9629e63
--- /dev/null
+++ b/libtemplate/globals.h
@@ -0,0 +1,59 @@
+#ifndef __XMLGLOBALS_H
+#define __XMLGLOBALS_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+#include <vdr/plugin.h>
+
+using namespace std;
+
+typedef uint32_t tColor;
+
+// --- cGlobals -------------------------------------------------------------
+
+class cGlobals {
+private:
+    string language;
+    string DoTranslate(string token);
+    map <string, tColor> colors;
+    map <string, string> fonts;
+    map <string, int> intVars;
+    map <string, double> doubleVars;
+    map <string, string> stringVars;
+    map <string, map< string, string > > translations;
+    map <string, string> customStringTokens;
+    map <string, int> customIntTokens;
+public:
+    cGlobals(void);
+    virtual ~cGlobals(void) {};
+    bool ReadFromXML(void);
+    void AddColor(string &name, tColor &col);
+    bool GetColor(string &name, tColor &col);
+    void AddFont(string &name, string &font);
+    bool GetFont(string name, string &font);
+    void AddInt(string &name, int value);
+    void ReplaceIntVars(string &value);
+    bool GetInt(string name, int &val);
+    void AddDouble(string &name, string &value);
+    void ReplaceDoubleVars(string &value);
+    void AddString(string &name, string &value);
+    void ReplaceStringVars(string &value);
+    bool AddTranslation(string name,  map < string, string > transl);
+    bool Translate(string text, string &translation);
+    void AddCustomInt(string &name, int value);
+    void AddCustomString(string &name, string &value);
+    bool GetCustomInt(string name, int &val);
+    map <string, string> GetCustomStringTokens(void) { return customStringTokens; };
+    map <string, int> GetCustomIntTokens(void) { return customIntTokens; };
+    void ListCustomTokens(void);
+    void Debug(void);
+};
+
+#endif //__XMLGLOBALS_H
\ No newline at end of file
diff --git a/libtemplate/parameter.c b/libtemplate/parameter.c
new file mode 100644
index 0000000..1479014
--- /dev/null
+++ b/libtemplate/parameter.c
@@ -0,0 +1,402 @@
+#include "../config.h"
+#include "parameter.h"
+
+using namespace std;
+
+// --- cNumericParameter -------------------------------------------------------------
+
+cNumericParameter::cNumericParameter(string value) { 
+    this->value = value;
+    globals = NULL;
+    isValid = false;
+    width = 0;
+    height = 0;
+    columnWidth = -1;
+    rowHeight = -1;
+    hor = true;
+    defaultValue = 0;
+}
+
+cNumericParameter::~cNumericParameter(void) {
+}
+
+void cNumericParameter::SetAreaSize(int w, int h) {
+    width = w;
+    height = h;
+}
+
+int cNumericParameter::Parse(string &parsedValue) {
+    int retVal = defaultValue;
+
+    if (IsNumber(value)) {
+        isValid = true;
+        retVal = atoi(value.c_str());
+        return retVal;
+    }
+
+    //checking for percent value
+    bool isPercentValue = CheckPercentValue(retVal);
+    if (isPercentValue) {
+        isValid = true;
+        return retVal;
+    }
+
+    //checking for expression
+    bool isValidExpression = CheckExpression(retVal, parsedValue);
+    if (isValidExpression) {
+        isValid = true;
+        return retVal;
+    }
+
+    return retVal;
+}
+
+bool cNumericParameter::IsNumber(const string& s) {
+    string::const_iterator it = s.begin();
+    while (it != s.end() && isdigit(*it)) ++it;
+    return !s.empty() && it == s.end();
+}
+
+bool cNumericParameter::CheckPercentValue(int &val) {
+    bool ok = false;
+    size_t posPercent = value.find('%');
+    if (posPercent != string::npos) {
+        string strPerc = value.substr(0, posPercent);
+        if (!IsNumber(strPerc)) {
+            return ok;
+        }
+        int perc = atoi(strPerc.c_str());
+        if (hor) {
+            val = width * perc / 100;
+        } else {
+            val = height * perc / 100;          
+        }
+        ok = true;
+    }
+    return ok;
+}
+
+bool cNumericParameter::CheckExpression(int &val, string &parsedVal) {
+    bool ok = false;
+    string parsedValue = value;
+    //remove white spaces
+    parsedValue.erase( std::remove_if( parsedValue.begin(), parsedValue.end(), ::isspace ), parsedValue.end() );
+
+    //check and replace {areawidth} and {areaheight} tokens
+    string tokenWidth = "{areawidth}";
+    string tokenHeight = "{areaheight}";
+
+    stringstream sw;
+    sw << width;
+    string strWidth = sw.str();
+    stringstream sh;
+    sh << height;
+    string strHeight = sh.str();
+
+    bool foundToken = true;
+    while(foundToken) {
+        size_t foundTokenWidth = parsedValue.find(tokenWidth);
+        if (foundTokenWidth != string::npos) {
+            parsedValue = parsedValue.replace(foundTokenWidth, tokenWidth.size(), strWidth);
+        } else {
+            foundToken = false;
+        }
+    }
+
+    foundToken = true;
+    while(foundToken) {
+        size_t foundTokenHeight = parsedValue.find(tokenHeight);
+        if (foundTokenHeight != string::npos) {
+            parsedValue = parsedValue.replace(foundTokenHeight, tokenHeight.size(), strHeight);
+        } else {
+            foundToken = false;
+        }
+    }
+
+    //check and replace {columnwidth} and {rowheight} tokens for loop functions
+    if (columnWidth > 0 || rowHeight > 0) {
+        tokenWidth = "{columnwidth}";
+        tokenHeight = "{rowheight}";
+        stringstream cw;
+        cw << columnWidth;
+        strWidth = cw.str();
+        stringstream rh;
+        rh << rowHeight;
+        strHeight = rh.str();
+
+        foundToken = true;
+        while(foundToken) {
+            size_t foundTokenWidth = parsedValue.find(tokenWidth);
+            if (foundTokenWidth != string::npos) {
+                parsedValue = parsedValue.replace(foundTokenWidth, tokenWidth.size(), strWidth);
+            } else {
+                foundToken = false;
+            }
+        }
+
+        foundToken = true;
+        while(foundToken) {
+            size_t foundTokenHeight = parsedValue.find(tokenHeight);
+            if (foundTokenHeight != string::npos) {
+                parsedValue = parsedValue.replace(foundTokenHeight, tokenHeight.size(), strHeight);
+            } else {
+                foundToken = false;
+            }
+        }
+    }
+
+    if (globals) {
+        globals->ReplaceIntVars(parsedValue);
+        globals->ReplaceDoubleVars(parsedValue);
+    }
+
+    if (IsNumber(parsedValue)) {
+        ok = true;
+        val = atoi(parsedValue.c_str());
+        return ok;
+    }
+
+    if (!ValidNumericExpression(parsedValue)) {
+        parsedVal = parsedValue;
+        return ok;
+    }
+    ok = true;
+    char * expression = new char[parsedValue.size() + 1];
+    std::copy(parsedValue.begin(), parsedValue.end(), expression);
+    expression[parsedValue.size()] = '\0';
+    int expRes = EvaluateTheExpression(expression);
+    val = expRes;
+    delete[] expression;
+    return ok;
+}
+
+bool cNumericParameter::ValidNumericExpression(string &parsedValue) {
+    string::const_iterator it = parsedValue.begin();
+    while (it != parsedValue.end() && (isdigit(*it) || *it == '.' || *it == ',' || *it == '+' || *it == '-' || *it == '*' || *it == '/')) ++it;
+    return !parsedValue.empty() && it == parsedValue.end();
+}
+
+int cNumericParameter::EvaluateTheExpression(char* expr) {
+    return round(ParseSummands(expr));
+}
+
+double cNumericParameter::ParseAtom(char*& expr) {
+    // Read the number from string
+    char* end_ptr;
+    double res = strtod(expr, &end_ptr);
+    // Advance the pointer and return the result
+    expr = end_ptr;
+    return res;
+}
+
+// Parse multiplication and division
+double cNumericParameter::ParseFactors(char*& expr) {
+    double num1 = ParseAtom(expr);
+    for(;;) {
+        // Save the operation
+        char op = *expr;
+        if(op != '/' && op != '*')
+            return num1;
+        expr++;
+        double num2 = ParseAtom(expr);
+        // Perform the saved operation
+        if(op == '/') {
+            if (num2 != 0) {
+                num1 /= num2;
+            }
+        } else
+            num1 *= num2;
+    }
+}
+
+// Parse addition and subtraction
+double cNumericParameter::ParseSummands(char*& expr) {
+    double num1 = ParseFactors(expr);
+    for(;;) {
+        char op = *expr;
+        if(op != '-' && op != '+')
+            return num1;
+        expr++;
+        double num2 = ParseFactors(expr);
+        if(op == '-')
+            num1 -= num2;
+        else
+            num1 += num2;
+    }
+}
+
+// --- cConditionalParameter -------------------------------------------------------------
+
+cConditionalParameter::cConditionalParameter(cGlobals *globals, string value) { 
+    this->globals = globals;
+    isTrue = false;
+    this->value = value;
+    type = cpNone;
+}
+
+cConditionalParameter::~cConditionalParameter(void) {
+}
+
+void cConditionalParameter::Tokenize(void) {
+    size_t posAnd = value.find("++");
+    if (posAnd != string::npos) {
+        type = cpAnd;
+        TokenizeValue("++");
+    } else {
+        size_t posOr = value.find("||");
+        if (posOr != string::npos) {
+            type = cpOr;
+            TokenizeValue("||");
+        }
+    }
+    if (type == cpNone) {
+        InsertCondition(value);
+    }
+}
+
+bool cConditionalParameter::Evaluate(map < string, int > *intTokens, map < string, string > *stringTokens) {
+    isTrue = false;
+    bool first = true;
+    for (vector<sCondition>::iterator cond = conditions.begin(); cond != conditions.end(); cond++) {
+        bool tokenTrue = false;
+        
+        if (cond->type == ctStringSet) {
+            if (stringTokens) {
+                map < string, string >::iterator hit = stringTokens->find(cond->tokenName);
+                if (hit != stringTokens->end()) {
+                    string value = hit->second;
+                    if (value.size() > 0)
+                        tokenTrue = true;
+                }
+            }
+        } else if (cond->type == ctStringEmpty) {
+            if (stringTokens) {
+                map < string, string >::iterator hit = stringTokens->find(cond->tokenName);
+                if (hit != stringTokens->end()) {
+                    string value = hit->second;
+                    if (value.size() == 0)
+                        tokenTrue = true;
+                } else {
+                    tokenTrue = true;
+                }
+            } else {
+                tokenTrue = true;
+            }
+        } else {
+            int tokenValue = EvaluateParameter(cond->tokenName, intTokens, stringTokens);
+            if (cond->type == ctBool) {
+                tokenTrue = tokenValue;
+            } else if (cond->type == ctGreater) {
+                tokenTrue = (tokenValue > cond->compareValue) ? true : false;
+            } else if (cond->type == ctLower) {
+                tokenTrue = (tokenValue < cond->compareValue) ? true : false;
+            } else if (cond->type == ctEquals) {
+                tokenTrue = (tokenValue == cond->compareValue) ? true : false;
+            }
+        }
+
+        if (cond->isNegated)
+            tokenTrue = !tokenTrue;
+        if (type == cpAnd) {
+            if (first)
+                isTrue = tokenTrue;
+            else
+                isTrue = isTrue && tokenTrue;
+        } else if (type == cpOr) {
+            isTrue = isTrue || tokenTrue;           
+        } else {
+            isTrue = tokenTrue;
+        }
+        first = false;
+    }
+}
+
+int cConditionalParameter::EvaluateParameter(string token, map < string, int > *intTokens, map < string, string > *stringTokens) {
+    //first check globals
+    int result = 0;
+    if (globals->GetInt(token, result))
+        return result;
+    //then check custom tokens
+    if (globals->GetCustomInt(token, result))
+        return result;
+    //then check tokens
+    if (intTokens) {
+        map < string, int >::iterator hit = intTokens->find(token);
+        if (hit != intTokens->end()) {
+            return hit->second;
+        }
+    }
+    if (stringTokens) {
+        map < string, string >::iterator hit = stringTokens->find(token);
+        if (hit != stringTokens->end()) {
+            string value = hit->second;
+            return atoi(value.c_str());
+        }
+    }
+    return 0;
+}
+
+void cConditionalParameter::TokenizeValue(string sep) {
+    string buffer = value;
+    bool sepFound = true;
+    while (sepFound) {
+        size_t posSep = buffer.find(sep);
+        if (posSep == string::npos) {
+            InsertCondition(buffer);
+            sepFound = false;
+        }
+        string token = buffer.substr(0, posSep);
+        buffer = buffer.replace(0, posSep + sep.size(), "");
+        InsertCondition(token);
+    }
+}
+
+void cConditionalParameter::InsertCondition(string cond) {
+    cond.erase( std::remove_if( cond.begin(), cond.end(), ::isspace ), cond.end() );
+
+    if (cond.size() < 1)
+        return;
+
+    size_t tokenStart = cond.find('{');
+    size_t tokenEnd = cond.find('}');
+
+    if (tokenStart == string::npos || tokenEnd == string::npos || tokenStart > tokenEnd)
+        return;
+
+    string tokenName = cond.substr(tokenStart + 1, tokenEnd - tokenStart - 1);
+    string rest = cond.replace(tokenStart, tokenEnd - tokenStart + 1, "");
+
+    sCondition sCond;
+    sCond.tokenName = tokenName;
+    sCond.type = ctBool;
+    sCond.compareValue = 0;
+    sCond.isNegated = false;
+    if (!rest.compare("not")) {
+        sCond.isNegated = true;
+    } else if (!rest.compare("isset")) {
+        sCond.type = ctStringSet;
+    } else if (!rest.compare("empty")) {
+        sCond.type = ctStringEmpty;
+    } else if (startswith(rest.c_str(), "gt(")) {
+        string compVal = rest.substr(4, rest.size() - 5);
+        sCond.compareValue = atoi(compVal.c_str());
+        sCond.type = ctGreater;
+    }  else if (startswith(rest.c_str(), "lt(")) {
+        string compVal = rest.substr(4, rest.size() - 5);
+        sCond.compareValue = atoi(compVal.c_str());
+        sCond.type = ctLower;
+    }  else if (startswith(rest.c_str(), "eq(")) {
+        string compVal = rest.substr(4, rest.size() - 5);
+        sCond.compareValue = atoi(compVal.c_str());
+        sCond.type = ctEquals;
+    }
+
+    conditions.push_back(sCond);
+}
+
+void cConditionalParameter::Debug(void) {
+    dsyslog("skindesigner: Condition %s, Type: %s, cond is %s", value.c_str(), (type == cpAnd)?"and combination":((type == cpOr)?"or combination":"single param") , isTrue?"true":"false");
+    for (vector<sCondition>::iterator it = conditions.begin(); it != conditions.end(); it++) {
+        dsyslog("skindesigner: cond token %s, type: %d, compareValue %d, negated: %d", it->tokenName.c_str(), it->type, it->compareValue, it->isNegated);
+    }
+}
\ No newline at end of file
diff --git a/libtemplate/parameter.h b/libtemplate/parameter.h
new file mode 100644
index 0000000..c92af28
--- /dev/null
+++ b/libtemplate/parameter.h
@@ -0,0 +1,141 @@
+#ifndef __TEMPLATEPARAMETER_H
+#define __TEMPLATEPARAMETER_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <algorithm>
+#include <math.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "globals.h"
+
+using namespace std;
+
+enum eAlign {
+    alLeft,
+    alCenter,
+    alRight,
+    alTop,
+    alBottom
+};
+
+enum eScrollMode {
+    smNone,
+    smCarriageReturn,
+    smForthAndBack
+};
+
+enum eScrollSpeed {
+    ssNone,
+    ssSlow,
+    ssMedium,
+    ssFast
+};
+
+enum eOrientation {
+    orNone,
+    orHorizontal,
+    orVertical,
+    orAbsolute
+};
+
+// --- cNumericParameter -------------------------------------------------------------
+
+class cNumericParameter {
+private:
+    cGlobals *globals;
+    string value;
+    bool isValid;
+    int width;
+    int height;
+    int columnWidth;
+    int rowHeight;
+    bool hor;
+    int defaultValue;
+    bool IsNumber(const string& s);
+    bool CheckPercentValue(int &val);
+    bool CheckExpression(int &val, string &parsedVal);
+    bool ValidNumericExpression(string &parsedValue);
+    int EvaluateTheExpression(char* expr);
+    double ParseAtom(char*& expr);
+    double ParseFactors(char*& expr);
+    double ParseSummands(char*& expr);
+public:
+    cNumericParameter(string value);
+    virtual ~cNumericParameter(void);
+    void SetGlobals(cGlobals *globals) { this->globals = globals; };
+    void SetAreaSize(int w, int h);
+    void SetLoopContainer(int columnWidth, int rowHeight) { this->columnWidth = columnWidth; this->rowHeight = rowHeight; };
+    void SetDefault(int def) { defaultValue = def; };
+    void SetHorizontal(void) { hor = true; };
+    void SetVertical(void) { hor = false; };
+    int Parse(string &parsedValue);
+    bool Valid(void) { return isValid; };
+};
+
+// --- cTextToken -------------------------------------------------------------
+
+enum eTextTokenType {
+    ttConstString,
+    ttToken,
+    ttConditionalToken,
+    ttPrintfToken
+};
+
+class cTextToken {
+public:
+    eTextTokenType type;
+    string value;
+    vector<string> parameters;
+    vector<cTextToken> subTokens;
+};
+
+// --- cConditionalParameter -------------------------------------------------------------
+
+enum eCondParameterType {
+    cpAnd,
+    cpOr,
+    cpNone
+};
+
+enum eCondType {
+    ctLower,
+    ctGreater,
+    ctEquals,
+    ctBool,
+    ctStringSet,
+    ctStringEmpty,
+    ctNone
+};
+
+struct sCondition {
+    string tokenName;
+    bool isNegated;
+    eCondType type;
+    int compareValue;
+};
+
+class cConditionalParameter {
+private:
+    cGlobals *globals;
+    bool isTrue;
+    string value;
+    eCondParameterType type;
+    vector<sCondition> conditions;
+    void TokenizeValue(string sep);
+    void InsertCondition(string cond);
+    int EvaluateParameter(string token, map < string, int > *intTokens, map < string, string > *stringTokens);
+public:
+    cConditionalParameter(cGlobals *globals, string value);
+    virtual ~cConditionalParameter(void);
+    void Tokenize(void);
+    bool Evaluate(map < string, int > *intTokens, map < string, string > *stringTokens);
+    bool IsTrue(void) { return isTrue; };
+    void Debug(void);
+};
+#endif //__TEMPLATEPARAMETER_H
\ No newline at end of file
diff --git a/libtemplate/template.c b/libtemplate/template.c
new file mode 100644
index 0000000..ef7d677
--- /dev/null
+++ b/libtemplate/template.c
@@ -0,0 +1,281 @@
+                                                                                                                                                                                                                                                                #include "template.h"
+#include "xmlparser.h"
+#include "../config.h"
+
+// --- cTemplate -------------------------------------------------------------
+
+cTemplate::cTemplate(eViewType viewType) {
+    globals = NULL;
+    rootView = NULL;
+    this->viewType = viewType;
+    CreateView();
+}
+
+cTemplate::~cTemplate() {
+
+ if (rootView)
+    delete rootView;
+
+}
+
+/*******************************************************************
+* Public Functions
+*******************************************************************/
+bool cTemplate::ReadFromXML(void) {
+    std::string xmlFile;
+    switch (viewType) {
+        case vtDisplayChannel:
+            xmlFile = "displaychannel.xml";
+            break;
+        case vtDisplayMenu:
+            xmlFile = "displaymenu.xml";
+            break;
+        case vtDisplayMessage:
+            xmlFile = "displaymessage.xml";
+            break;
+        case vtDisplayReplay:
+            xmlFile = "displayreplay.xml";
+            break;
+        case vtDisplayVolume:
+            xmlFile = "displayvolume.xml";
+            break;
+        case vtDisplayAudioTracks:
+            xmlFile = "displayaudiotracks.xml";
+            break;
+        default:
+            return false;
+    }
+    
+    cXmlParser parser;
+    if (!parser.ReadView(rootView, xmlFile)) {
+        return false;
+    }
+    if (!parser.ParseView()) {
+        return false;
+    }
+    //read additional plugin templates
+    bool ok = true;
+    if (viewType == vtDisplayMenu) {
+        config.InitPluginIterator();
+        map <int,string> *plugTemplates = NULL;
+        string plugName;
+        while ( plugTemplates = config.GetPluginTemplates(plugName) ) {
+            for (map <int,string>::iterator it = plugTemplates->begin(); it != plugTemplates->end(); it++) {
+                int templateNumber = it->first;
+                stringstream templateName;
+                templateName << "plug-" << plugName << "-" << it->second.c_str();
+                if (parser.ReadPluginView(plugName, templateNumber, templateName.str())) {
+                    ok = parser.ParsePluginView(plugName, templateNumber);
+                }
+            }
+        }
+    }
+    return ok;
+}
+
+void cTemplate::SetGlobals(cGlobals *globals) { 
+    this->globals = globals;
+    rootView->SetGlobals(globals); 
+}
+
+void cTemplate::Translate(void) {
+    rootView->Translate();
+}
+
+
+void cTemplate::PreCache(void) {
+    rootView->PreCache(false);
+}
+
+vector< pair<string, int> > cTemplate::GetUsedFonts(void) {
+    vector< pair<string, int> > usedFonts;
+
+    GetUsedFonts(rootView, usedFonts);
+
+    rootView->InitSubViewIterator();
+    cTemplateView *subView = NULL;
+    while(subView = rootView->GetNextSubView()) {
+        GetUsedFonts(subView, usedFonts);
+    }
+    
+    return usedFonts;
+}
+
+
+void cTemplate::CacheImages(void) {
+    CacheImages(rootView);
+    rootView->InitSubViewIterator();
+    cTemplateView *subView = NULL;
+    while(subView = rootView->GetNextSubView()) {
+        CacheImages(subView);
+    }
+}
+
+void cTemplate::Debug(void) {
+    rootView->Debug();
+}
+
+/*******************************************************************
+* Private Functions
+*******************************************************************/
+
+void cTemplate::CreateView(void) {
+    switch (viewType) {
+        case vtDisplayChannel:
+            rootView = new cTemplateViewChannel();
+            break;
+        case vtDisplayMenu:
+            rootView = new cTemplateViewMenu();
+            break;
+        case vtDisplayReplay:
+            rootView = new cTemplateViewReplay();
+            break;
+        case vtDisplayVolume:
+            rootView = new cTemplateViewVolume();
+            break;
+        case vtDisplayAudioTracks:
+            rootView = new cTemplateViewAudioTracks();
+            break;
+        case vtDisplayMessage:
+            rootView = new cTemplateViewMessage();
+            break;      
+        default:
+            esyslog("skindesigner: unknown view %d", viewType);
+    }
+}
+
+void cTemplate::GetUsedFonts(cTemplateView *view, vector< pair<string, int> > &usedFonts) {
+    //used fonts in viewElements
+    view->InitViewElementIterator();
+    cTemplateViewElement *viewElement = NULL;
+    while(viewElement = view->GetNextViewElement()) {
+        viewElement->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewElement->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText) {
+                    usedFonts.push_back(pair<string,int>(func->GetFontName(), func->GetNumericParameter(ptFontSize)));
+                }
+            }
+        }
+    }
+    //used fonts in viewLists pixmaps
+    view->InitViewListIterator();
+    cTemplateViewList *viewList = NULL;
+    while(viewList = view->GetNextViewList()) {
+        viewList->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewList->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText) {
+                    usedFonts.push_back(pair<string,int>(func->GetFontName(), func->GetNumericParameter(ptFontSize)));
+                }
+            }
+        }
+        cTemplateViewElement *listElement = viewList->GetListElement();
+        listElement->InitIterator();
+        while(pix = listElement->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText) {
+                    usedFonts.push_back(pair<string,int>(func->GetFontName(), func->GetNumericParameter(ptFontSize)));
+                }
+            }
+        }
+    }
+    //used fonts in viewTabs
+    view->InitViewTabIterator();
+    cTemplateViewTab *viewTab = NULL;
+    while(viewTab = view->GetNextViewTab()) {
+        viewTab->InitIterator();
+        cTemplateFunction *func = NULL;
+        while(func = viewTab->GetNextFunction()) {
+            if (func->GetType() == ftDrawText) {
+                usedFonts.push_back(pair<string,int>(func->GetFontName(), func->GetNumericParameter(ptFontSize)));
+            }
+        }
+    }
+}
+
+void cTemplate::CacheImages(cTemplateView *view) {
+    //used images in viewElements
+    view->InitViewElementIterator();
+    cTemplateViewElement *viewElement = NULL;
+    while(viewElement = view->GetNextViewElement()) {
+        viewElement->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewElement->GetNextPixmap()) {
+            CachePixmapImages(pix);
+        }
+    }
+    //used images in viewLists pixmaps
+    view->InitViewListIterator();
+    cTemplateViewList *viewList = NULL;
+    while(viewList = view->GetNextViewList()) {
+        viewList->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewList->GetNextPixmap()) {
+            CachePixmapImages(pix);
+        }
+        cTemplateViewElement *listElement = viewList->GetListElement();
+        listElement->InitIterator();
+        while(pix = listElement->GetNextPixmap()) {
+            CachePixmapImages(pix);
+        }
+        cTemplateViewElement *currentElement = viewList->GetListElementCurrent();
+        if (!currentElement) {
+            continue;
+        }
+        currentElement->InitIterator();
+        while(pix = currentElement->GetNextPixmap()) {
+            CachePixmapImages(pix);
+        }
+    }
+    //used images in viewTabs
+    view->InitViewTabIterator();
+    cTemplateViewTab *viewTab = NULL;
+    while(viewTab = view->GetNextViewTab()) {
+        CachePixmapImages(viewTab);
+    }    
+}
+
+void cTemplate::CachePixmapImages(cTemplatePixmap *pix) {
+    pix->InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = pix->GetNextFunction()) {
+        if (func->GetType() == ftDrawImage) {
+            CacheImage(func);
+        }
+    }
+}
+
+void cTemplate::CacheImage(cTemplateFunction *func) {
+    eImageType imgType = (eImageType)func->GetNumericParameter(ptImageType);
+    int width = func->GetNumericParameter(ptWidth);
+    int height = func->GetNumericParameter(ptHeight);
+
+    switch (imgType) {
+        case itIcon:
+        case itMenuIcon: {
+            string path = func->GetParameter(ptPath);
+            imgCache->CacheIcon(imgType, path, width, height);
+            break; }
+        case itChannelLogo: {
+            string doCache = func->GetParameter(ptCache);
+            if (!doCache.compare("true")) {
+                imgCache->CacheLogo(width, height);
+            }
+            break; }
+        case itSkinPart: {
+            string path = func->GetParameter(ptPath);
+            imgCache->CacheSkinpart(path, width, height);
+            break; }
+        default:
+            break;
+    }
+}
diff --git a/libtemplate/template.h b/libtemplate/template.h
new file mode 100644
index 0000000..2c1cfb2
--- /dev/null
+++ b/libtemplate/template.h
@@ -0,0 +1,58 @@
+#ifndef __TEMPLATE_H
+#define __TEMPLATE_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "globals.h"
+#include "templateview.h"
+#include "templateviewelement.h"
+#include "templatepixmap.h"
+#include "templatefunction.h"
+
+using namespace std;
+
+// --- cTemplate -------------------------------------------------------------
+enum eViewType {
+    vtDisplayChannel,
+    vtDisplayMenu,
+    vtDisplayReplay,
+    vtDisplayVolume,
+    vtDisplayAudioTracks,
+    vtDisplayMessage
+};
+
+class cTemplate {
+private:
+    eViewType viewType;
+    void CachePixmapImages(cTemplatePixmap *pix);
+    void CacheImage(cTemplateFunction *func);
+protected:
+    cGlobals *globals;
+    cTemplateView *rootView;
+    void CreateView(void);
+    void GetUsedFonts(cTemplateView *view, vector< pair<string, int> > &usedFonts);
+    void CacheImages(cTemplateView *view);
+public:
+    cTemplate(eViewType viewType);
+    virtual ~cTemplate(void);
+    bool ReadFromXML(void);
+    void SetGlobals(cGlobals *globals);
+    cTemplateView *GetRootView(void) { return rootView; };
+    void Translate(void);
+    void PreCache(void);
+    //get fonts for pre caching
+    vector< pair<string, int> > GetUsedFonts(void);
+    void CacheImages(void);
+    //Debug
+    void Debug(void);
+};
+
+#endif //__TEMPLATE_H
\ No newline at end of file
diff --git a/libtemplate/templatefunction.c b/libtemplate/templatefunction.c
new file mode 100644
index 0000000..0b3de8a
--- /dev/null
+++ b/libtemplate/templatefunction.c
@@ -0,0 +1,1611 @@
+#include "templatefunction.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+
+using namespace std;
+
+// --- cTemplateFunction -------------------------------------------------------------
+
+cTemplateFunction::cTemplateFunction(eFuncType type) { 
+    this->type = type;
+    debug = false;
+    containerX = 0; 
+    containerY = 0; 
+    containerWidth = 0;
+    containerHeight = 0;
+    columnWidth = -1;
+    rowHeight = -1;
+    globals = NULL;
+    condParam = NULL;
+    parsedCompletely = false;
+    updated = false;
+    alreadyCutted = false;
+    parsedTextWidth = 0;
+    fontName = "";
+    imgPath = "";
+    textboxHeight = 0;
+    stringTokens = NULL;
+    intTokens = NULL;
+    parsedText = "";
+    cuttedText = "";
+}
+
+cTemplateFunction::~cTemplateFunction(void) {
+    if (condParam)
+        delete condParam;
+}
+
+/*******************************************************************
+* Public Functions
+*******************************************************************/
+
+void cTemplateFunction::SetParameters(vector<pair<string, string> > params) { 
+    for (vector<pair<string, string> >::iterator it = params.begin(); it != params.end(); it++) {
+        string name = it->first;
+        pair< eParamType, string > p;
+        if (!name.compare("debug")) {
+            string value = it->second;
+            if (!value.compare("true")) {
+                debug = true;
+            }
+            continue;
+        } else if (!name.compare("condition")) {
+            p.first = ptCond;
+        } else if (!name.compare("name")) {
+            p.first = ptName;
+        } else if (!name.compare("x")) {
+            p.first = ptX;
+        } else if (!name.compare("y")) {
+            p.first = ptY;
+        } else if (!name.compare("width")) {
+            p.first = ptWidth;
+        } else if (!name.compare("height")) {
+            p.first = ptHeight;
+        } else if (!name.compare("menuitemwidth")) {
+            p.first = ptMenuItemWidth;
+        } else if (!name.compare("fadetime")) {
+            p.first = ptFadeTime;
+        } else if (!name.compare("imagetype")) {
+            p.first = ptImageType;
+        } else if (!name.compare("path")) {
+            p.first = ptPath;
+        } else if (!name.compare("color")) {
+            p.first = ptColor;
+        } else if (!name.compare("font")) {
+            p.first = ptFont;
+        } else if (!name.compare("fontsize")) {
+            p.first = ptFontSize;
+        } else if (!name.compare("text")) {
+            p.first = ptText;
+        } else if (!name.compare("layer")) {
+            p.first = ptLayer;
+        } else if (!name.compare("transparency")) {
+            p.first = ptTransparency;
+        } else if (!name.compare("quadrant")) {
+            p.first = ptQuadrant;
+        } else if (!name.compare("type")) {
+            p.first = ptType;
+        } else if (!name.compare("align")) {
+            p.first = ptAlign;
+        } else if (!name.compare("valign")) {
+            p.first = ptValign;
+        } else if (!name.compare("delay")) {
+            p.first = ptDelay;
+        } else if (!name.compare("mode")) {
+            p.first = ptScrollMode;
+        } else if (!name.compare("scrollspeed")) {
+            p.first = ptScrollSpeed;
+        } else if (!name.compare("orientation")) {
+            p.first = ptOrientation;
+        } else if (!name.compare("numlistelements")) {
+            p.first = ptNumElements;
+        } else if (!name.compare("scrollelement")) {
+            p.first = ptScrollElement;
+        } else if (!name.compare("scrollheight")) {
+            p.first = ptScrollHeight;
+        } else if (!name.compare("float")) {
+            p.first = ptFloat;
+        } else if (!name.compare("floatwidth")) {
+            p.first = ptFloatWidth;
+        } else if (!name.compare("floatheight")) {
+            p.first = ptFloatHeight;
+        } else if (!name.compare("maxlines")) {
+            p.first = ptMaxLines;
+        } else if (!name.compare("columnwidth")) {
+            p.first = ptColumnWidth;
+        } else if (!name.compare("rowheight")) {
+            p.first = ptRowHeight;
+        } else if (!name.compare("overflow")) {
+            p.first = ptOverflow;
+        } else if (!name.compare("scaletvx")) {
+            p.first = ptScaleTvX;
+        } else if (!name.compare("scaletvy")) {
+            p.first = ptScaleTvY;
+        } else if (!name.compare("scaletvwidth")) {
+            p.first = ptScaleTvWidth;
+        } else if (!name.compare("scaletvheight")) {
+            p.first = ptScaleTvHeight;
+        } else if (!name.compare("cache")) {
+            p.first = ptCache;
+        } else if (!name.compare("determinatefont")) {
+            p.first = ptDeterminateFont;
+        } else {
+            p.first = ptNone;
+        }
+        p.second = it->second;
+        nativeParameters.insert(p);
+    }
+}
+
+void cTemplateFunction::SetParameter(eParamType type, string value) {
+    nativeParameters.erase(type);
+    nativeParameters.insert(pair<eParamType, string>(type, value));
+}
+
+void cTemplateFunction::SetContainer(int x, int y, int w, int h) { 
+    containerX = x; 
+    containerY = y; 
+    containerWidth = w; 
+    containerHeight = h; 
+}
+
+void cTemplateFunction::SetLoopContainer(int columnWidth, int rowHeight) {
+    this->columnWidth = columnWidth;
+    this->rowHeight = rowHeight;
+}
+
+void cTemplateFunction::SetWidthManually(string width) {
+    nativeParameters.erase(ptWidth);
+    nativeParameters.insert(pair<eParamType, string>(ptWidth, width));
+}
+
+void cTemplateFunction::SetHeightManually(string height) {
+    nativeParameters.erase(ptHeight);
+    nativeParameters.insert(pair<eParamType, string>(ptHeight, height));
+}
+
+void cTemplateFunction::SetXManually(int newX) {
+    numericParameters.erase(ptX);
+    numericParameters.insert(pair<eParamType, int>(ptX, newX));
+}
+
+void cTemplateFunction::SetYManually(int newY) {
+    numericParameters.erase(ptY);
+    numericParameters.insert(pair<eParamType, int>(ptY, newY));
+}
+
+void cTemplateFunction::SetTextboxHeight(int boxHeight) {
+    numericParameters.erase(ptHeight);
+    numericParameters.insert(pair<eParamType, int>(ptHeight, boxHeight));
+}
+
+void cTemplateFunction::SetTranslatedText(string translation) {
+    if (type != ftDrawText && type != ftDrawTextBox)
+        return;
+    if (translation.size() == 0)
+        return;
+    nativeParameters.erase(ptText);
+    nativeParameters.insert(pair<eParamType, string>(ptText, translation));
+}
+
+void cTemplateFunction::SetMaxTextWidth(int maxWidth) {
+    if (type != ftDrawText)
+        return;
+    numericParameters.erase(ptWidth);
+    numericParameters.insert(pair<eParamType, int>(ptWidth, maxWidth));
+}
+
+bool cTemplateFunction::CalculateParameters(void) {
+    bool paramValid = true;
+    bool paramsValid = true;
+    for (map< eParamType, string >::iterator param = nativeParameters.begin(); param != nativeParameters.end(); param++) { 
+        paramValid = true;
+        eParamType type = param->first;
+        string value = param->second;
+        switch (type) {
+            case ptCond:
+                paramValid = SetCondition(value);
+                break;
+            case ptX:
+            case ptY:
+            case ptWidth:
+            case ptHeight:
+            case ptMenuItemWidth:
+            case ptFadeTime:
+            case ptDelay:
+            case ptFontSize:
+            case ptLayer:
+            case ptTransparency:
+            case ptQuadrant:
+            case ptType:
+            case ptNumElements:
+            case ptFloatWidth:
+            case ptFloatHeight:
+            case ptMaxLines:
+            case ptColumnWidth:
+            case ptRowHeight:
+            case ptScaleTvX:
+            case ptScaleTvY:
+            case ptScaleTvWidth:
+            case ptScaleTvHeight:
+                SetNumericParameter(type, value);
+                break;
+            case ptAlign:
+            case ptValign:
+                paramValid = SetAlign(type, value);
+                break;
+            case ptImageType:
+                paramValid = SetImageType(type, value);
+                break;
+            case ptColor:
+                paramValid = SetColor(type, value);
+                break;
+            case ptFont:
+                paramValid = SetFont(type, value);
+                break;
+            case ptText:
+                paramValid = SetTextTokens(value);
+                break;
+            case ptScrollMode:
+                paramValid = SetScrollMode(value);
+                break;
+            case ptScrollSpeed:
+                paramValid = SetScrollSpeed(value);
+                break;
+            case ptOrientation:
+                paramValid = SetOrientation(value);
+                break;
+            case ptFloat:
+                paramValid = SetFloating(value);
+                break;
+            case ptOverflow:
+                paramValid = SetOverflow(value);
+            default:
+                paramValid = true;
+                break;
+        }
+        if (!paramValid) {
+            paramsValid = false;
+            esyslog("skindesigner: %s: invalid parameter %d, value %s", GetFuncName().c_str(), type, value.c_str());
+        }
+    }
+    return paramsValid;
+}    
+
+bool cTemplateFunction::ReCalculateParameters(void) {
+    bool paramValid = true;
+    bool paramsValid = true;
+    for (map< eParamType, string >::iterator param = nativeParameters.begin(); param != nativeParameters.end(); param++) { 
+        paramValid = true;
+        eParamType type = param->first;
+        string value = param->second;
+        switch (type) {
+            case ptX:
+            case ptY:
+            case ptWidth:
+            case ptHeight:
+            case ptMenuItemWidth:
+            case ptFontSize:
+            case ptFloatWidth:
+            case ptFloatHeight:
+            case ptMaxLines:
+            case ptColumnWidth:
+            case ptRowHeight:
+                SetNumericParameter(type, value);
+                break;
+        }
+        if (!paramValid) {
+            paramsValid = false;
+            esyslog("skindesigner: %s: invalid parameter %d, value %s", GetFuncName().c_str(), type, value.c_str());
+        }
+    }
+    return paramsValid;
+}    
+
+void cTemplateFunction::CompleteParameters(void) {
+    switch (type) {
+        case ftDrawImage: {
+            CalculateAlign(GetNumericParameter(ptWidth), GetNumericParameter(ptHeight));
+            if (imgPath.size() == 0) {
+                imgPath = GetParameter(ptPath);
+            }
+            break; }
+        case ftDrawRectangle:
+            CalculateAlign(GetNumericParameter(ptWidth), GetNumericParameter(ptHeight));
+            break;
+        case ftDrawEllipse:
+            CalculateAlign(GetNumericParameter(ptWidth), GetNumericParameter(ptHeight));
+            break;
+        case ftDrawSlope:
+            CalculateAlign(GetNumericParameter(ptWidth), GetNumericParameter(ptHeight));
+            break;
+        case ftDrawText:
+            CalculateAlign(GetWidth(), GetHeight());
+            break;
+        default:
+            break;
+    }
+}
+
+void cTemplateFunction::ClearDynamicParameters(void) {
+    parsedText = "";
+    cuttedText = "";
+    alreadyCutted = false;
+    parsedTextWidth = 0;
+    textboxHeight = 0;
+
+    //clear dynamically parsed int parameters
+    for (map<eParamType,string>::iterator it = numericDynamicParameters.begin(); it != numericDynamicParameters.end(); it++) {
+        numericParameters.erase(it->first);
+    }
+    //restoring dynamic numeric parameters only if x, y, width or height of other elements is needed dynamically
+    for (map<eParamType,string>::iterator it = nativeParameters.begin(); it != nativeParameters.end(); it++) {
+        eParamType paramType = it->first;
+        if (paramType == ptX || 
+            paramType == ptY || 
+            paramType == ptWidth || 
+            paramType == ptHeight || 
+            paramType == ptFloatWidth || 
+            paramType == ptFloatHeight) 
+            {
+            string value = it->second;
+            if (value.find("{width(") != string::npos || value.find("{height(") != string::npos || value.find("{posx(") != string::npos || value.find("{posy(") != string::npos) {
+                numericDynamicParameters.erase(paramType);
+                SetNumericParameter(paramType, value);
+            }
+        }
+    }
+
+}
+
+bool cTemplateFunction::ParseParameters(void) {
+    updated = false;
+    parsedCompletely = true;
+    
+    if (stringTokens) {
+        ParseStringParameters();
+    }
+
+    if (intTokens && numericDynamicParameters.size() > 0) {
+        ParseNumericalParameters();
+    }
+    
+    if (condParam) {
+        condParam->Evaluate(intTokens, stringTokens);
+    }
+
+    return parsedCompletely;
+}
+
+string cTemplateFunction::GetParameter(eParamType type) {
+    map<eParamType,string>::iterator hit = nativeParameters.find(type);
+    if (hit == nativeParameters.end())
+        return "";
+    return hit->second;
+}
+
+int cTemplateFunction::GetNumericParameter(eParamType type) {
+    map<eParamType,int>::iterator hit = numericParameters.find(type);
+    if (hit == numericParameters.end()) {
+        //Set Default Value for Integer Parameters
+        if (type == ptLayer)
+            return 1;
+        else if (type == ptTransparency)
+            return 0;
+        else if (type == ptDelay)
+            return 0;
+        else if (type == ptFadeTime)
+            return 0;
+        else if (type == ptMenuItemWidth)
+            return 0;
+        return -1;
+    }
+    return hit->second;
+}
+
+string cTemplateFunction::GetText(bool cut) { 
+    if (!cut) {
+        return parsedText;
+    }
+    if (alreadyCutted && cuttedText.size() > 0) {
+        return cuttedText;        
+    } 
+    alreadyCutted = true;
+    int maxWidth = GetNumericParameter(ptWidth);
+    if (maxWidth > 0) {
+        parsedTextWidth = fontManager->Width(fontName, GetNumericParameter(ptFontSize), parsedText.c_str());
+        if (parsedTextWidth > maxWidth) {
+            cuttedText = CutText(parsedText, maxWidth, fontName, GetNumericParameter(ptFontSize));
+            return cuttedText;
+        }
+    }
+    return parsedText; 
+}
+
+
+tColor cTemplateFunction::GetColorParameter(eParamType type) {
+    map<eParamType,tColor>::iterator hit = colorParameters.find(type);
+    if (hit == colorParameters.end())
+        return 0x00000000;
+    return hit->second;
+}
+
+int cTemplateFunction::GetWidth(bool cutted) {
+    int funcWidth = 0;
+    switch (type) {
+        case ftDrawText: {
+            if (cutted) {
+                if (!alreadyCutted) {
+                    alreadyCutted = true;
+                    int maxWidth = GetNumericParameter(ptWidth);
+                    if (maxWidth > 0) {
+                        parsedTextWidth = fontManager->Width(fontName, GetNumericParameter(ptFontSize), parsedText.c_str());
+                        if (parsedTextWidth > maxWidth) {
+                            cuttedText = CutText(parsedText, maxWidth, fontName, GetNumericParameter(ptFontSize));
+                        }
+                    }
+                }
+                if (cuttedText.size() > 0)
+                    return fontManager->Width(fontName, GetNumericParameter(ptFontSize), cuttedText.c_str());
+            }
+            if (parsedTextWidth > 0)
+                funcWidth = parsedTextWidth;
+            else
+                funcWidth = fontManager->Width(fontName, GetNumericParameter(ptFontSize), parsedText.c_str());
+            break; }
+        case ftFill:
+        case ftDrawImage:
+        case ftDrawRectangle:
+        case ftDrawEllipse:
+        case ftDrawSlope:
+        case ftDrawTextBox:
+            funcWidth = GetNumericParameter(ptWidth);
+            break;
+        default:
+            esyslog("skindesigner: GetWidth not implemented for funcType %d", type);
+            break;
+    }
+    return funcWidth;
+}
+
+int cTemplateFunction::GetHeight(void) {
+    int funcHeight = 0;
+    switch (type) {
+        case ftDrawText:
+            funcHeight = fontManager->Height(fontName, GetNumericParameter(ptFontSize));
+            break;
+        case ftFill:
+        case ftDrawImage:
+        case ftDrawRectangle:
+        case ftDrawEllipse:
+        case ftDrawSlope:
+            funcHeight = GetNumericParameter(ptHeight);
+            break;
+        case ftDrawTextBox: {
+            int maxLines = GetNumericParameter(ptMaxLines);
+            int fixedBoxHeight = GetNumericParameter(ptHeight); 
+            if (maxLines > 0) {
+                funcHeight = maxLines * fontManager->Height(fontName, GetNumericParameter(ptFontSize));
+            } else if (fixedBoxHeight > 0) {
+                funcHeight = fixedBoxHeight;
+            } else if (textboxHeight > 0) {
+                funcHeight = textboxHeight;
+            } else {
+                funcHeight = CalculateTextBoxHeight();
+                textboxHeight = funcHeight;
+            }
+            break; }
+        case ftLoop:
+            //TODO: to be implemented
+            break;
+        default:
+            esyslog("skindesigner: GetHeight not implemented for funcType %d", type);
+            break;
+    }
+    return funcHeight;
+}
+
+void cTemplateFunction::GetNeededWidths(multimap<eParamType,string> *widths) {
+    for (map<eParamType, string>::iterator param = numericDynamicParameters.begin(); param !=numericDynamicParameters.end(); param++) {
+        string val = param->second;
+        size_t posStart = val.find("{width(");
+        while (posStart != string::npos) {
+            size_t posEnd = val.find(")", posStart+1);
+            if (posEnd != string::npos) {
+                string label = val.substr(posStart+7, posEnd - posStart - 7);
+                widths->insert(pair<eParamType,string>(param->first, label));
+                val = val.replace(posStart, posEnd - posStart, "");
+            } else {
+                break;
+            }
+            posStart = val.find("{width(");
+        }
+    }
+}
+
+void cTemplateFunction::GetNeededHeights(multimap<eParamType,string> *heights) {
+    for (map<eParamType, string>::iterator param = numericDynamicParameters.begin(); param !=numericDynamicParameters.end(); param++) {
+        string val = param->second;
+        size_t posStart = val.find("{height(");
+        while (posStart != string::npos) {
+            size_t posEnd = val.find(")", posStart + 1);
+            if (posEnd != string::npos) {
+                string label = val.substr(posStart + 8, posEnd - posStart - 8);
+                heights->insert(pair<eParamType,string>(param->first, label));
+                val = val.replace(posStart, posEnd - posStart, "");
+            } else {
+                break;
+            }
+            posStart = val.find("{height(");
+        }
+    }
+}
+
+void cTemplateFunction::GetNeededPosX(multimap<eParamType,string> *posXs) {
+    for (map<eParamType, string>::iterator param = numericDynamicParameters.begin(); param !=numericDynamicParameters.end(); param++) {
+        string val = param->second;
+        size_t posStart = val.find("{posx(");
+        while (posStart != string::npos) {
+            size_t posEnd = val.find(")", posStart+1);
+            if (posEnd != string::npos) {
+                string label = val.substr(posStart+6, posEnd - posStart - 6);
+                posXs->insert(pair<eParamType,string>(param->first, label));
+                val = val.replace(posStart, posEnd - posStart, "");
+            } else {
+                break;
+            }
+            posStart = val.find("{posx(");
+        }
+    }
+}
+
+void cTemplateFunction::GetNeededPosY(multimap<eParamType,string> *posYs) {
+    for (map<eParamType, string>::iterator param = numericDynamicParameters.begin(); param !=numericDynamicParameters.end(); param++) {
+        string val = param->second;
+        size_t posStart = val.find("{posy(");
+        while (posStart != string::npos) {
+            size_t posEnd = val.find(")", posStart+1);
+            if (posEnd != string::npos) {
+                string label = val.substr(posStart+6, posEnd - posStart - 6);
+                posYs->insert(pair<eParamType,string>(param->first, label));
+                val = val.replace(posStart, posEnd - posStart, "");
+            } else {
+                break;
+            }
+            posStart = val.find("{posy(");
+        }
+    }
+}
+
+void cTemplateFunction::SetWidth(eParamType type, string label, int funcWidth) {
+    updated = false;
+    map< eParamType, string >::iterator hit = numericDynamicParameters.find(type);
+    if (hit == numericDynamicParameters.end())
+        return;
+    stringstream needle;
+    needle << "{width(" << label << ")}";
+    size_t posFound = (hit->second).find(needle.str());
+    if (posFound == string::npos)
+        return;
+    stringstream repl;
+    repl << funcWidth;
+    string parsedVal = (hit->second).replace(posFound, needle.str().size(), repl.str());
+
+    cNumericParameter param(parsedVal);
+    param.SetAreaSize(containerWidth, containerHeight);
+    param.SetGlobals(globals);
+    int val = param.Parse(parsedVal);
+    if (param.Valid()) {
+        updated = true;
+        numericParameters.insert(pair<eParamType, int>(type, val));
+    } else {
+        numericDynamicParameters.erase(type);
+        numericDynamicParameters.insert(pair<eParamType, string>(type, parsedVal));     
+    }
+}
+
+void cTemplateFunction::SetHeight(eParamType type, string label, int funcHeight) {
+    updated = false;
+    map< eParamType, string >::iterator hit = numericDynamicParameters.find(type);
+    if (hit == numericDynamicParameters.end())
+        return;
+    stringstream needle;
+    needle << "{height(" << label << ")}";
+    size_t posFound = (hit->second).find(needle.str());
+    if (posFound == string::npos)
+        return;
+    stringstream repl;
+    repl << funcHeight;
+    string parsedVal = (hit->second).replace(posFound, needle.str().size(), repl.str());
+
+    cNumericParameter param(parsedVal);
+    param.SetAreaSize(containerWidth, containerHeight);
+    param.SetGlobals(globals);
+    int val = param.Parse(parsedVal);
+    if (param.Valid()) {
+        updated = true;
+        numericParameters.insert(pair<eParamType, int>(type, val));
+    } else {
+        numericDynamicParameters.erase(type);
+        numericDynamicParameters.insert(pair<eParamType, string>(type, parsedVal));     
+    }
+}
+
+void cTemplateFunction::SetX(eParamType type, string label, int funcX) {
+    updated = false;
+    map< eParamType, string >::iterator hit = numericDynamicParameters.find(type);
+    if (hit == numericDynamicParameters.end())
+        return;
+    stringstream needle;
+    needle << "{posx(" << label << ")}";
+    size_t posFound = (hit->second).find(needle.str());
+    if (posFound == string::npos)
+        return;
+    stringstream repl;
+    repl << funcX;
+    string parsedVal = (hit->second).replace(posFound, needle.str().size(), repl.str());
+
+    cNumericParameter param(parsedVal);
+    param.SetAreaSize(containerWidth, containerHeight);
+    param.SetGlobals(globals);
+    int val = param.Parse(parsedVal);
+    if (param.Valid()) {
+        updated = true;
+        numericParameters.insert(pair<eParamType, int>(type, val));
+    } else {
+        numericDynamicParameters.erase(type);
+        numericDynamicParameters.insert(pair<eParamType, string>(type, parsedVal));     
+    }
+}
+
+void cTemplateFunction::SetY(eParamType type, string label, int funcY) {
+    updated = false;
+    map< eParamType, string >::iterator hit = numericDynamicParameters.find(type);
+    if (hit == numericDynamicParameters.end())
+        return;
+    stringstream needle;
+    needle << "{posy(" << label << ")}";
+    size_t posFound = (hit->second).find(needle.str());
+    if (posFound == string::npos)
+        return;
+    stringstream repl;
+    repl << funcY;
+    string parsedVal = (hit->second).replace(posFound, needle.str().size(), repl.str());
+
+    cNumericParameter param(parsedVal);
+    param.SetAreaSize(containerWidth, containerHeight);
+    param.SetGlobals(globals);
+    int val = param.Parse(parsedVal);
+    if (param.Valid()) {
+        updated = true;
+        numericParameters.insert(pair<eParamType, int>(type, val));
+    } else {
+        numericDynamicParameters.erase(type);
+        numericDynamicParameters.insert(pair<eParamType, string>(type, parsedVal));     
+    }
+}
+
+bool cTemplateFunction::DoExecute(void) {
+    if (!condParam)
+        return true;
+    return condParam->IsTrue();
+}
+
+/*******************************************************************
+* Private Functions
+*******************************************************************/
+
+bool cTemplateFunction::SetCondition(string cond) {
+    if (condParam)
+        delete condParam;
+    condParam = new cConditionalParameter(globals, cond);
+    condParam->Tokenize();
+    return true;
+}
+
+
+bool cTemplateFunction::SetNumericParameter(eParamType type, string value) {
+    if (config.replaceDecPoint) {
+        if (value.find_first_of('.') != string::npos) {
+            std::replace( value.begin(), value.end(), '.', config.decPoint);
+        }
+    }
+
+    cNumericParameter param(value);
+    param.SetAreaSize(containerWidth, containerHeight);
+    param.SetLoopContainer(columnWidth, rowHeight);
+    param.SetGlobals(globals);
+    switch (type) {
+        case ptX:
+        case ptWidth:
+        case ptMenuItemWidth:
+        case ptScaleTvX:
+        case ptScaleTvWidth:
+            param.SetHorizontal();
+            break;
+        case ptY:
+        case ptHeight:
+        case ptFontSize:
+        case ptScaleTvY:
+        case ptScaleTvHeight:
+            param.SetVertical();
+            break;
+        case ptLayer:
+            param.SetDefault(1);
+            break;
+        default:
+            break;
+    }
+    string parsedValue = "";
+    int val = param.Parse(parsedValue);
+    if (param.Valid()) {
+        if (this->type < ftLoop && type == ptX) {
+            val += containerX;
+        }
+        if (this->type < ftLoop && type == ptY) {
+            val += containerY;
+        }
+        numericParameters.erase(type);
+        numericDynamicParameters.erase(type);
+        numericParameters.insert(pair<eParamType, int>(type, val));
+    } else {
+        numericDynamicParameters.erase(type);
+        numericDynamicParameters.insert(pair<eParamType, string>(type, parsedValue));
+    }
+    return param.Valid();
+}
+
+bool cTemplateFunction::SetAlign(eParamType type, string value) {
+    eAlign align = alLeft;
+    bool ok = true;
+    if (!value.compare("center")) {
+        align = alCenter;
+    } else if (!value.compare("right")) {
+        align = alRight;
+    } else if (!value.compare("top")) {
+        align = alTop;
+    } else if (!value.compare("bottom")) {
+        align = alBottom;
+    } else if (!value.compare("left")) {
+        align = alLeft;
+    } else {
+        ok = false;
+    }
+    numericParameters.insert(pair<eParamType, int>(type, align));
+    return ok;  
+}
+
+bool cTemplateFunction::SetFont(eParamType type, string value) {
+    //check if token
+    if (IsToken(value)) {
+        if (!globals->GetFont(value, fontName)) {
+            if (!globals->GetFont("{vdrOsd}", fontName)) {
+                return false;
+            }
+        }
+    } else {
+        //if no token, directly use input
+        fontName = value;
+    }
+    return true;
+}
+
+bool cTemplateFunction::SetImageType(eParamType type, string value) {
+    eImageType imgType = itImage;
+    bool ok = true;
+    if (!value.compare("channellogo")) {
+        imgType = itChannelLogo;
+    } else if (!value.compare("seplogo")) {
+        imgType = itSepLogo;
+    } else if (!value.compare("skinpart")) {
+        imgType = itSkinPart;
+    } else if (!value.compare("menuicon")) {
+        imgType = itMenuIcon;
+    } else if (!value.compare("icon")) {
+        imgType = itIcon;
+    } else if (!value.compare("image")) {
+        imgType = itImage;
+    } else {
+        ok = false;
+    }
+    numericParameters.insert(pair<eParamType, int>(ptImageType, imgType));
+    return ok;
+}
+
+
+bool cTemplateFunction::SetColor(eParamType type, string value) {
+    if (globals) {
+        tColor colVal = 0x00000000;
+        if (globals->GetColor(value, colVal)) {
+            colorParameters.insert(pair<eParamType, tColor>(type, colVal));
+            return true;
+        }
+    }
+    if (value.size() != 8)
+        return false;
+    std::stringstream str;
+    str << value;
+    tColor colVal;
+    str >> std::hex >> colVal;
+    colorParameters.insert(pair<eParamType, tColor>(type, colVal));
+    return true;
+}
+
+bool cTemplateFunction::SetTextTokens(string value) {
+    textTokens.clear();
+    //first replace globals
+    globals->ReplaceStringVars(value);
+    //now tokenize
+    bool tokenFound = true;
+    while (tokenFound) {
+        //search for conditional token or normal token
+        size_t tokenStart = value.find_first_of('{');
+        size_t conditionStart = value.find_first_of('|');
+        size_t printfStart = value.find("{printf(");
+        if (tokenStart == string::npos && conditionStart == string::npos) {
+        //find constant strings
+            if (value.size() > 0) {
+                cTextToken token;
+                token.type = ttConstString;
+                token.value = value;
+                textTokens.push_back(token);
+            }
+            tokenFound = false;
+            continue;
+        } else if (tokenStart != string::npos && conditionStart == string::npos) {
+            size_t tokenEnd = value.find_first_of('}');
+            if (printfStart != string::npos && printfStart <= tokenStart) {
+                //replace printf text token
+                ParsePrintfTextToken(value, printfStart, tokenEnd);
+            } else {
+                //replace normal text token
+                ParseTextToken(value, tokenStart, tokenEnd);
+            }
+        } else if (tokenStart != string::npos && conditionStart != string::npos) {
+            if (tokenStart < conditionStart) {
+                size_t tokenEnd = value.find_first_of('}');
+                if (printfStart != string::npos && printfStart <= tokenStart) {
+                    //replace printf text token
+                    ParsePrintfTextToken(value, printfStart, tokenEnd);
+                } else {
+                    //replace normal text token
+                    ParseTextToken(value, tokenStart, tokenEnd);
+                }
+            } else {
+                //replace conditional text token
+                size_t conditionEnd = value.find_first_of('|', conditionStart+1);
+                ParseConditionalTextToken(value, conditionStart, conditionEnd);
+            }
+        }
+    }
+    return true;
+}
+
+void cTemplateFunction::ParseTextToken(string &value, size_t start, size_t end) {
+    cTextToken token;
+    if (start > 0) {
+        string constString = value.substr(0, start);
+        value = value.replace(0, start, "");
+        token.type = ttConstString;
+        token.value = constString;
+        textTokens.push_back(token);
+    } else {
+        string tokenName = value.substr(1, end - start - 1);
+        value = value.replace(0, end - start + 1, "");
+        token.type = ttToken;
+        token.value = tokenName;
+        textTokens.push_back(token);
+    }
+}
+
+void cTemplateFunction::ParseConditionalTextToken(string &value, size_t start, size_t end) {
+    cTextToken token;
+    if (start > 0) {
+        string constString = value.substr(0, start);
+        value = value.replace(0, start, "");
+        token.type = ttConstString;
+        token.value = constString;
+        textTokens.push_back(token);
+    } else {
+        string condToken = value.substr(start + 1, end - start - 1);
+        value = value.replace(0, end - start + 1, "");
+        size_t tokenStart = condToken.find_first_of('{');
+        size_t tokenEnd = condToken.find_first_of('}');
+        vector<cTextToken> subTokens;
+        if (tokenStart > 0) {
+            cTextToken subToken;
+            string constString = condToken.substr(0, tokenStart);
+            condToken = condToken.replace(0, tokenStart, "");
+            subToken.type = ttConstString;
+            subToken.value = constString;
+            subTokens.push_back(subToken);
+        }
+        string tokenName = condToken.substr(1, tokenEnd - tokenStart - 1);
+        condToken = condToken.replace(0, tokenEnd - tokenStart + 1, "");
+        
+        cTextToken subToken2;
+        subToken2.type = ttToken;
+        subToken2.value = tokenName;
+        subTokens.push_back(subToken2);
+
+        if (condToken.size() > 0) {
+            cTextToken subToken3;
+            subToken3.type = ttConstString;
+            subToken3.value = condToken;
+            subTokens.push_back(subToken3);
+        }
+
+        token.type = ttConditionalToken;
+        token.value = tokenName;
+        token.subTokens = subTokens;
+        textTokens.push_back(token);
+    }
+
+}
+
+void cTemplateFunction::ParsePrintfTextToken(string &value, size_t start, size_t end) {
+    cTextToken token;
+    if (start > 0) {
+        string constString = value.substr(0, start);
+        value = value.replace(0, start, "");
+        token.type = ttConstString;
+        token.value = constString;
+        textTokens.push_back(token);
+    } else {
+        token.type = ttPrintfToken;
+        //fetch parameter list from printf
+        string printfParams = value.substr(start + 8, end - start - 9);
+        value = value.replace(0, end - start + 1, "");
+        splitstring s(printfParams.c_str());
+        vector<string> flds = s.split(',', 1);
+
+        int numParams = flds.size();
+        if (numParams < 1)
+            return;
+        string formatString = trim(flds[0]);
+        token.value = formatString.substr(1, formatString.size() - 2);
+        for (int i=1; i < numParams; i++) {
+            token.parameters.push_back(trim(flds[i]));
+        }
+    }
+    textTokens.push_back(token);
+}
+
+bool cTemplateFunction::SetScrollMode(string value) {
+    eScrollMode mode = smNone;
+    bool ok = true;
+    if (!value.compare("forthandback"))
+        mode = smForthAndBack;
+    else if (!value.compare("carriagereturn"))
+        mode = smCarriageReturn;
+    else
+        ok = false;
+    numericParameters.insert(pair<eParamType, int>(ptScrollMode, mode));
+    return ok;
+}
+
+bool cTemplateFunction::SetScrollSpeed(string value) {
+    eScrollSpeed speed = ssMedium;
+    bool ok = true;
+    if (!value.compare("slow"))
+        speed = ssSlow;
+    else if (!value.compare("fast"))
+        speed = ssFast;
+    else if (!value.compare("medium"))
+        speed = ssMedium;
+    else
+        ok = false;
+    numericParameters.insert(pair<eParamType, int>(ptScrollSpeed, speed));
+    return ok;
+
+}
+
+bool cTemplateFunction::SetOrientation(string value) {
+    eOrientation orientation = orNone;
+    bool ok = true;
+    if (!value.compare("horizontal"))
+        orientation = orHorizontal;
+    else if (!value.compare("vertical"))
+        orientation = orVertical;
+    else if (!value.compare("absolute"))
+        orientation = orAbsolute;
+    else
+        ok = false;
+    numericParameters.insert(pair<eParamType, int>(ptOrientation, orientation));
+    return ok;
+}
+
+bool cTemplateFunction::SetFloating(string value) {
+    eFloatType floatType = flNone;
+    bool ok = true;
+    if (!value.compare("topleft"))
+        floatType = flTopLeft;
+    else if (!value.compare("topright"))
+        floatType = flTopRight;
+    else
+        ok = false;
+    numericParameters.insert(pair<eParamType, int>(ptFloat, floatType));
+    return ok;
+}
+
+bool cTemplateFunction::SetOverflow(string value) {
+    eOverflowType overflowType = otNone;
+    bool ok = true;
+    if (!value.compare("linewrap"))
+        overflowType = otWrap;
+    else if (!value.compare("cut"))
+        overflowType = otCut;
+    else
+        ok = false;
+    numericParameters.insert(pair<eParamType, int>(ptOverflow, overflowType));
+    return ok;
+}
+
+void cTemplateFunction::ParseStringParameters(void) {
+    //first replace stringtokens in Text (drawText)
+    stringstream text;
+    for (vector<cTextToken>::iterator it = textTokens.begin(); it !=textTokens.end(); it++) {
+        updated = true;
+        if ((*it).type == ttConstString) {
+            text << (*it).value;
+        } else if ((*it).type == ttToken) {
+            bool found = false;
+            string tokenName = (*it).value;
+            if (stringTokens) {
+                map < string, string >::iterator hit = stringTokens->find(tokenName);
+                if (hit != stringTokens->end()) {
+                    text << hit->second;
+                    found = true;
+                }
+            }
+            if (!found && intTokens) {
+                map < string, int >::iterator hitInt = intTokens->find(tokenName);
+                if (hitInt != intTokens->end()) {
+                    text << hitInt->second;
+                    found = true;
+                }
+            }
+            if (!found) {
+                text << "{" << tokenName << "}";
+            }
+        } else if ((*it).type == ttConditionalToken) {
+            bool found = false;
+            string tokenName = (*it).value;
+            if (stringTokens) {
+                map < string, string >::iterator hit = stringTokens->find(tokenName);
+                if (hit != stringTokens->end()) {
+                    string replaceText = hit->second;
+                    if (replaceText.size() > 0) {
+                        for (vector<cTextToken>::iterator it2 = (*it).subTokens.begin(); it2 != (*it).subTokens.end(); it2++) {
+                            if ((*it2).type == ttConstString) {
+                                text << (*it2).value;
+                            } else {
+                                text << replaceText;
+                            }
+                        }                       
+                    }
+                    found = true;
+                }
+            }
+            if (!found && intTokens) {
+                map < string, int >::iterator hitInt = intTokens->find(tokenName);
+                if (hitInt != intTokens->end()) {
+                    int intVal = hitInt->second;
+                    if (intVal > 0) {
+                        for (vector<cTextToken>::iterator it2 = (*it).subTokens.begin(); it2 != (*it).subTokens.end(); it2++) {
+                            if ((*it2).type == ttConstString) {
+                                text << (*it2).value;
+                            } else {
+                                text << intVal;
+                            }
+                        }                       
+                    }
+                    found = true;
+                }
+            }
+        } else if ((*it).type == ttPrintfToken) {
+            cTextToken token = *it;
+            int paramCount = token.parameters.size();
+            string printfResult = "";
+            switch (paramCount) {
+                case 1: {
+                    int param1 = ReplaceIntToken(token.parameters[0]);
+                    printfResult = *cString::sprintf(token.value.c_str(), param1);
+                    break; }
+                case 2: {
+                    int param1 = ReplaceIntToken(token.parameters[0]);
+                    int param2 = ReplaceIntToken(token.parameters[1]);
+                    printfResult = *cString::sprintf(token.value.c_str(), param1, param2);
+                    break; }
+                case 3: {
+                    int param1 = ReplaceIntToken(token.parameters[0]);
+                    int param2 = ReplaceIntToken(token.parameters[1]);
+                    int param3 = ReplaceIntToken(token.parameters[2]);
+                    printfResult = *cString::sprintf(token.value.c_str(), param1, param2, param3);
+                    break; }
+                case 4: {
+                    int param1 = ReplaceIntToken(token.parameters[0]);
+                    int param2 = ReplaceIntToken(token.parameters[1]);
+                    int param3 = ReplaceIntToken(token.parameters[2]);
+                    int param4 = ReplaceIntToken(token.parameters[3]);
+                    printfResult = *cString::sprintf(token.value.c_str(), param1, param2, param3, param4);
+                    break; }
+                case 5: {
+                    int param1 = ReplaceIntToken(token.parameters[0]);
+                    int param2 = ReplaceIntToken(token.parameters[1]);
+                    int param3 = ReplaceIntToken(token.parameters[2]);
+                    int param4 = ReplaceIntToken(token.parameters[3]);
+                    int param5 = ReplaceIntToken(token.parameters[4]);
+                    printfResult = *cString::sprintf(token.value.c_str(), param1, param2, param3, param4, param5);
+                    break; }
+                default:
+                    break;
+            }
+            text << printfResult;
+        }
+    }
+    parsedText = text.str();
+
+    string path = GetParameter(ptPath);
+    if (GetNumericParameter(ptImageType) == itImage && path.size() > 0) {
+        //no absolute pathes allowed
+        if (!startswith(path.c_str(), "{")) {
+            esyslog("skindesigner: no absolute pathes allowed for images - %s", path.c_str());
+        }
+        if (startswith(path.c_str(), "{ressourcedir}")) {
+            imgPath = path.replace(0, 14, *config.GetSkinRessourcePath());
+        }
+    }
+    //now check further possible string variables
+    if (stringTokens && path.size() > 0 && path.find("{") != string::npos) {
+        for (map < string, string >::iterator it = stringTokens->begin(); it != stringTokens->end(); it++) {
+            size_t found = path.find(it->first);
+            if (found != string::npos) {
+                updated = true;
+                imgPath = path;
+                if (found > 0 && ((it->first).size() + 2 <= imgPath.size()))
+                    imgPath.replace(found-1, (it->first).size() + 2, it->second);
+                break;
+            }
+        }
+        for (map < string, int >::iterator it = intTokens->begin(); it != intTokens->end(); it++) {
+            size_t found = path.find(it->first);
+            if (found != string::npos) {
+                updated = true;
+                imgPath = path;
+                if (found > 0 && ((it->first).size() + 2 <= imgPath.size())) {
+                    stringstream intVal;
+                    intVal << it->second;
+                    imgPath.replace(found-1, (it->first).size() + 2, intVal.str());
+                }
+                break;
+            }
+        }
+    }
+}
+
+void cTemplateFunction::ParseNumericalParameters(void) {
+    parsedCompletely = true;
+    for (map<eParamType, string>::iterator param = numericDynamicParameters.begin(); param !=numericDynamicParameters.end(); param++) {
+        string val = param->second;
+        for (map<string,int >::iterator tok = intTokens->begin(); tok != intTokens->end(); tok++) {
+            stringstream sToken;
+            sToken << "{" << tok->first << "}";
+            string token = sToken.str();
+            size_t foundToken = val.find(token);
+            //replace token as often as it appears
+            while (foundToken != string::npos) {
+                stringstream sVal;
+                sVal << tok->second;
+                val = val.replace(foundToken, token.size(), sVal.str());
+                foundToken = val.find(token);
+            }
+        }
+        cNumericParameter p(val);
+        string parsedVal = "";
+        int newVal = p.Parse(parsedVal);
+        if (p.Valid()) {
+            updated = true;
+            numericParameters.insert(pair<eParamType, int>(param->first, newVal));
+        } else {
+            parsedCompletely = false;
+        }
+    }
+}
+
+void cTemplateFunction::CalculateAlign(int elementWidth, int elementHeight) {
+    int align = GetNumericParameter(ptAlign);
+    //if element is used in a loop, use loop box width
+    int boxWidth = (columnWidth > 0) ? columnWidth : containerWidth;
+    int boxHeight = (rowHeight > 0) ? rowHeight : containerHeight;
+    if (align == alCenter) {
+        int xNew = (boxWidth - elementWidth) / 2;
+        numericParameters.erase(ptX);
+        numericParameters.insert(pair<eParamType,int>(ptX, xNew));
+    } else if (align == alRight) {
+        int xNew = boxWidth - elementWidth;
+        numericParameters.erase(ptX);
+        numericParameters.insert(pair<eParamType,int>(ptX, xNew));
+    }
+
+    int vAlign = GetNumericParameter(ptValign);
+    if (vAlign == alCenter) {
+        int yNew = (boxHeight - elementHeight) / 2;
+        numericParameters.erase(ptY);
+        numericParameters.insert(pair<eParamType,int>(ptY, yNew));
+    } else if (vAlign == alBottom) {
+        int yNew = boxHeight - elementHeight;
+        numericParameters.erase(ptY);
+        numericParameters.insert(pair<eParamType,int>(ptY, yNew));
+    }
+}
+
+int cTemplateFunction::CalculateTextBoxHeight(void) {
+    int width = GetNumericParameter(ptWidth);
+    string fontName = GetFontName();
+    int fontSize = GetNumericParameter(ptFontSize);
+    string text = GetText(false);
+    const cFont *font = fontManager->Font(fontName, fontSize);
+    if (!font)
+        return 0;
+
+    int fontHeight = fontManager->Height(fontName, fontSize);
+    int floatType = GetNumericParameter(ptFloat);
+
+    if (floatType == flNone) {
+        cTextWrapper wrapper;
+        wrapper.Set(text.c_str(), font, width);
+        int lines = wrapper.Lines();
+        return (lines * fontHeight);
+    }
+
+    int floatWidth = GetNumericParameter(ptFloatWidth);
+    int floatHeight = GetNumericParameter(ptFloatHeight);
+    
+    cTextWrapper wTextTall;
+    cTextWrapper wTextFull;
+    
+    int linesNarrow = floatHeight / fontHeight;
+    int widthNarrow = width - floatWidth;
+    int linesDrawn = 0;
+    int curY = 0;
+    bool drawNarrow = true;
+    
+    splitstring s(text.c_str());
+    vector<string> flds = s.split('\n', 1);
+
+    if (flds.size() < 1)
+        return 0;
+
+    stringstream sstrTextTall;
+    stringstream sstrTextFull;
+
+    for (int i=0; i<flds.size(); i++) {
+        if (!flds[i].size()) {
+            //empty line
+            linesDrawn++;
+            curY += fontHeight;
+            if (drawNarrow)
+                sstrTextTall << "\n";
+            else
+                sstrTextFull << "\n";
+        } else {
+            cTextWrapper wrapper;
+            if (drawNarrow) {
+                wrapper.Set((flds[i].c_str()), font, widthNarrow);
+                int newLines = wrapper.Lines();
+                //check if wrapper fits completely into narrow area
+                if (linesDrawn + newLines < linesNarrow) {
+                    for (int line = 0; line < wrapper.Lines(); line++) {
+                        sstrTextTall << wrapper.GetLine(line) << " ";
+                    }
+                    sstrTextTall << "\n";
+                    linesDrawn += newLines;
+                } else {
+                    //this wrapper has to be splitted
+                    for (int line = 0; line < wrapper.Lines(); line++) {
+                        if (line + linesDrawn < linesNarrow) {
+                            sstrTextTall << wrapper.GetLine(line) << " ";
+                        } else {
+                            sstrTextFull << wrapper.GetLine(line) << " ";
+                        }
+                    }
+                    sstrTextFull << "\n";
+                    drawNarrow = false;
+                }
+            } else {
+                wrapper.Set((flds[i].c_str()), font, width);
+                for (int line = 0; line < wrapper.Lines(); line++) {
+                    sstrTextFull << wrapper.GetLine(line) << " ";        
+                }
+                sstrTextFull << "\n";
+            }
+        }
+    }
+    wTextTall.Set(sstrTextTall.str().c_str(), font, widthNarrow);
+    wTextFull.Set(sstrTextFull.str().c_str(), font, width);
+
+    int textLinesTall = wTextTall.Lines();
+    int textLinesFull = wTextFull.Lines();
+
+    return ((textLinesTall+textLinesFull) * fontHeight);
+}
+
+int cTemplateFunction::ReplaceIntToken(string intTok) {
+    if (intTokens) {
+        map<string,int>::iterator hit = intTokens->find(intTok);
+        if (hit != intTokens->end())
+            return hit->second;
+    }
+    if (stringTokens) {
+        map<string,string>::iterator hit = stringTokens->find(intTok);
+        if (hit != stringTokens->end()) {            
+            return atoi(hit->second.c_str());
+        }
+    }
+    return 0;
+}
+
+/*******************************************************************
+* Helper Functions
+*******************************************************************/
+
+string cTemplateFunction::GetFuncName(void) {
+    string name;
+    switch (type) {
+        case ftOsd:
+            name = "OSD Parameters";
+            break;
+        case ftView:
+            name = "View Parameters";
+            break;
+        case ftViewElement:
+            name = "View Element Parameters";
+            break;
+        case ftPixmap:
+            name = "Pixmap Parameters";
+            break;
+        case ftPixmapScroll:
+            name = "ScrollPixmap Parameters";
+            break;
+        case ftLoop:
+            name = "Looping Function";
+            break;
+        case ftFill:
+            name = "Function Fill";
+            break;
+        case ftDrawText:
+            name = "Function DrawText";
+            break;
+        case ftDrawTextBox:
+            name = "Function DrawTextBox";
+            break;
+        case ftDrawImage:
+            name = "Function DrawImage";
+            break;
+        case ftDrawRectangle:
+            name = "Function DrawRectangle";
+            break;
+        case ftDrawEllipse:
+            name = "Function DrawEllipse";
+            break;
+        case ftDrawSlope:
+            name = "Function DrawSlope";
+            break;
+        case ftNone:
+            name = "Undefined";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+string cTemplateFunction::GetParamName(eParamType pt) {
+    string name;
+    switch (pt) {
+        case ptCond:
+            name = "Condition";
+            break;
+        case ptName:
+            name = "Name";
+            break;
+        case ptX:
+            name = "X";
+            break;
+        case ptY:
+            name = "Y";
+            break;
+        case ptWidth:
+            name = "Width";
+            break;
+        case ptHeight:
+            name = "Height";
+            break;
+        case ptMenuItemWidth:
+            name = "Menu Item Width";
+            break;          
+        case ptFadeTime:
+            name = "Fade Time";
+            break;
+        case ptDelay:
+            name = "Delay";
+            break;
+        case ptImageType:
+            name = "Image Type";
+            break;
+        case ptPath:
+            name = "Image Path";
+            break;
+        case ptColor:
+            name = "Color";
+            break;
+        case ptFont:
+            name = "Font";
+            break;
+        case ptFontSize:
+            name = "FontSize";
+            break;
+        case ptText:
+            name = "Text";
+            break;
+        case ptLayer:
+            name = "Layer";
+            break;
+        case ptTransparency:
+            name = "Transparency";
+            break;
+        case ptQuadrant:
+            name = "Quadrant";
+            break;
+        case ptType:
+            name = "Type";
+            break;
+        case ptAlign:
+            name = "Align";
+            break;
+        case ptValign:
+            name = "Vertical Align";
+            break;
+        case ptScrollMode:
+            name = "Scroll Mode";
+            break;
+        case ptScrollSpeed:
+            name = "Scroll Speed";
+            break;
+        case ptOrientation:
+            name = "Orientation";
+            break;
+        case ptNumElements:
+            name = "NumElements";
+            break;
+        case ptScrollElement:
+            name = "Scroll Element";
+            break;
+        case ptScrollHeight:
+            name = "Scroll Height";
+            break;
+        case ptFloat:
+            name = "Floating Type";
+            break;
+        case ptFloatWidth:
+            name = "Floating Width";
+            break;
+        case ptFloatHeight:
+            name = "Floating Height";
+            break;
+        case ptMaxLines:
+            name = "Max num of lines";
+            break;
+        case ptColumnWidth:
+            name = "Column Width";
+            break;
+        case ptRowHeight:
+            name = "Row Height";
+            break;
+        case ptOverflow:
+            name = "Overflow Mode";
+            break;
+        case ptScaleTvX:
+            name = "Scale TV Picture X";
+            break;
+        case ptScaleTvY:
+            name = "Scale TV Picture Y";
+            break;
+        case ptScaleTvWidth:
+            name = "Scale TV Picture Width";
+            break;
+        case ptScaleTvHeight:
+            name = "Scale TV Picture Height";
+            break;
+        case ptCache:
+            name = "Cache Image";
+            break;
+        case ptDeterminateFont:
+            name = "Determinate Font";
+            break;    
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateFunction::Debug(void) {
+    esyslog("skindesigner: Debugging %s, Container: x = %d, y = %d, Size: %dx%d", GetFuncName().c_str(), containerX, containerY, containerWidth, containerHeight);
+    esyslog("skindesigner: --- Native Parameters:");
+
+    if (condParam) {
+        condParam->Debug();
+    }
+    esyslog("skindesigner: --- Native Parameters:");
+    for (map<eParamType,string>::iterator it = nativeParameters.begin(); it != nativeParameters.end(); it++) {
+        esyslog("skindesigner: \"%s\" = \"%s\"", GetParamName(it->first).c_str(), (it->second).c_str());
+    }
+    if (numericParameters.size() > 0) {
+        esyslog("skindesigner: --- Integer Parameters: ");
+        for (map<eParamType,int>::iterator it = numericParameters.begin(); it != numericParameters.end(); it++) {
+            esyslog("skindesigner: %s = %d", GetParamName(it->first).c_str(), it->second);
+        }
+    }
+    if (numericDynamicParameters.size() > 0) {
+        esyslog("skindesigner: --- Dynamic Integer Parameters: ");
+        for (map<eParamType,string>::iterator it = numericDynamicParameters.begin(); it != numericDynamicParameters.end(); it++) {
+            esyslog("skindesigner: %s = %s", GetParamName(it->first).c_str(), (it->second).c_str());
+        }
+    }
+    if (colorParameters.size() > 0) {
+        esyslog("skindesigner: --- Color Parameters:");
+        for (map<eParamType,tColor>::iterator it = colorParameters.begin(); it != colorParameters.end(); it++) {
+            esyslog("skindesigner: %s = %x", GetParamName(it->first).c_str(), it->second);
+        }
+    }
+    if (textTokens.size() > 0) {
+        esyslog("skindesigner: --- Text Tokens:");
+        int i=0;
+        for (vector<cTextToken>::iterator it = textTokens.begin(); it != textTokens.end(); it++) {
+            eTextTokenType tokenType = (*it).type;
+            string tokType = "";
+            if (tokenType == ttConstString)
+                tokType = "Const: ";
+            else if (tokenType == ttToken)
+                tokType = "Token: ";
+            else if (tokenType == ttConditionalToken)
+                tokType = "Conditional Token: ";
+            else if (tokenType == ttPrintfToken)
+                tokType = "PrintF Token: ";
+            esyslog("skindesigner: %s %d = \"%s\"", tokType.c_str(), i++, (*it).value.c_str());
+            if (tokenType == ttConditionalToken) {
+                for (vector<cTextToken>::iterator it2 = (*it).subTokens.begin(); it2 != (*it).subTokens.end(); it2++) {
+                    eTextTokenType tokenTypeCond = (*it2).type;
+                    string tokTypeCond = "";
+                    if (tokenTypeCond == ttConstString)
+                        tokTypeCond = "Const: ";
+                    else if (tokenTypeCond == ttToken)
+                        tokTypeCond = "Token: ";
+                    esyslog("skindesigner: %s \"%s\"", tokTypeCond.c_str(), (*it2).value.c_str());
+                }
+            }
+            if (tokenType == ttPrintfToken) {
+                for (vector<string>::iterator it2 = (*it).parameters.begin(); it2 != (*it).parameters.end(); it2++) {
+                    esyslog("skindesigner: Printf parameter: %s", (*it2).c_str());
+                }                
+            }
+        }
+    }
+    if (fontName.size() > 0) {
+        esyslog("skindesigner: --- Font Name: \"%s\"", fontName.c_str());
+    }
+    if (parsedText.size() > 0) {
+        esyslog("skindesigner: --- Parsed Text: \"%s\"", parsedText.c_str());
+    }
+    if (type == ftDrawText) {
+        esyslog("skindesigner: --- Cutted Text: \"%s\"", cuttedText.c_str());
+        esyslog("skindesigner: --- Parsed Text Width: %d", parsedTextWidth);
+        esyslog("skindesigner: --- Already Cutted: %s", alreadyCutted ? "true" : "false");
+    }
+    if (imgPath.size() > 0) {
+        esyslog("skindesigner: --- Image Path: \"%s\"", imgPath.c_str());
+    }
+}
diff --git a/libtemplate/templatefunction.h b/libtemplate/templatefunction.h
new file mode 100644
index 0000000..f7af25c
--- /dev/null
+++ b/libtemplate/templatefunction.h
@@ -0,0 +1,217 @@
+#ifndef __TEMPLATEFUNCTION_H
+#define __TEMPLATEFUNCTION_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "globals.h"
+#include "parameter.h"
+
+using namespace std;
+
+// --- cTemplateFunction -------------------------------------------------------------
+
+enum eFuncType {
+    ftOsd,
+    ftView,
+    ftViewElement,
+    ftViewList,
+    ftPixmap,
+    ftPixmapScroll,
+    ftLoop,
+    ftFill,
+    ftDrawText,
+    ftDrawTextBox,
+    ftDrawImage,
+    ftDrawRectangle,
+    ftDrawEllipse,
+    ftDrawSlope,
+    ftNone
+};
+
+enum eParamType {
+    ptCond,
+    ptName,
+    ptX,
+    ptY,
+    ptWidth,
+    ptHeight,
+    ptMenuItemWidth,
+    ptFadeTime,
+    ptDelay,
+    ptImageType,
+    ptPath,
+    ptColor,
+    ptFont,
+    ptFontSize,
+    ptText,
+    ptLayer,
+    ptTransparency,
+    ptQuadrant,
+    ptType,
+    ptAlign,
+    ptValign,
+    ptScrollMode,
+    ptScrollSpeed,
+    ptOrientation,
+    ptNumElements,
+    ptScrollElement,
+    ptScrollHeight,
+    ptFloat,
+    ptFloatWidth,
+    ptFloatHeight,
+    ptMaxLines,
+    ptColumnWidth,
+    ptRowHeight,
+    ptOverflow,
+    ptScaleTvX,
+    ptScaleTvY,
+    ptScaleTvWidth,
+    ptScaleTvHeight,
+    ptCache,
+    ptDeterminateFont,
+    ptNone
+};
+
+enum eImageType {
+    itChannelLogo,
+    itSepLogo,
+    itSkinPart,
+    itMenuIcon,
+    itIcon,
+    itImage
+};
+
+enum eFloatType {
+    flNone,
+    flTopLeft,
+    flTopRight
+};
+
+enum eOverflowType {
+    otNone,
+    otWrap,
+    otCut
+};
+
+class cTemplateFunction {
+protected:
+    eFuncType type;
+    bool debug;
+    int containerX;                                                       //X of parent container
+    int containerY;                                                       //Y of parent container
+    int containerWidth;                                                   //width of parent container
+    int containerHeight;                                                  //height of parent container
+    int columnWidth;                                                      //if func is executed in a loop, width of loop column
+    int rowHeight;                                                        //if func is executed in a loop, height of loop row
+    cGlobals *globals;                                                    //globals
+    map< eParamType, string > nativeParameters;                           //native parameters directly from xml 
+    map< eParamType, int > numericParameters;                             //sucessfully parsed numeric parameters
+    map< eParamType, string > numericDynamicParameters;                   //numeric parameters with dynamic tokens
+    bool parsedCompletely;
+    bool updated;
+    map< eParamType, tColor > colorParameters;
+    cConditionalParameter *condParam;
+    //drawimage parameters
+    string imgPath;
+    //drawtext parameters
+    string fontName;
+    vector<cTextToken> textTokens;
+    string parsedText;
+    int parsedTextWidth;
+    string cuttedText;
+    bool alreadyCutted;
+    //drawtextbox parameters
+    int textboxHeight;
+    //dynamic tokens
+    map < string, string > *stringTokens;
+    map < string, int > *intTokens;
+    //private functions
+    bool SetCondition(string cond);
+    bool SetNumericParameter(eParamType type, string value);
+    bool SetAlign(eParamType type, string value);
+    bool SetFont(eParamType type, string value);
+    bool SetImageType(eParamType type, string value);
+    bool SetColor(eParamType type, string value);
+    bool SetTextTokens(string value);
+    void ParseTextToken(string &value, size_t start, size_t end);
+    void ParseConditionalTextToken(string &value, size_t start, size_t end);
+    void ParsePrintfTextToken(string &value, size_t start, size_t end);
+    bool SetScrollMode(string value);
+    bool SetScrollSpeed(string value);
+    bool SetOrientation(string value);
+    bool SetFloating(string value);
+    bool SetOverflow(string value);
+    void ParseStringParameters(void);
+    void ParseNumericalParameters(void);
+    void CalculateAlign(int elementWidth, int elementHeight);
+    int CalculateTextBoxHeight(void);
+    int ReplaceIntToken(string intTok);
+public:
+    cTemplateFunction(eFuncType type);
+    virtual ~cTemplateFunction(void);
+    //Setter Functions
+    void SetParameters(vector<pair<string, string> > params);
+    void SetParameter(eParamType type, string value);
+    void SetContainer(int x, int y, int w, int h);
+    void SetLoopContainer(int columnWidth, int rowHeight);
+    void SetWidthManually(string width);
+    void SetHeightManually(string height);
+    void SetXManually(int newX);
+    void SetYManually(int newY);
+    void SetMaxTextWidth(int maxWidth);
+    void SetTextboxHeight(int boxHeight);
+    void SetGlobals(cGlobals *globals) { this->globals = globals; };
+    void SetTranslatedText(string translation);
+    //PreCache Parameters 
+    bool CalculateParameters(void);
+    //Complete Parameters 
+    bool ReCalculateParameters(void);
+    void CompleteParameters(void);
+    //Set and Unset Dynamic Tokens from view
+    void SetStringTokens(map < string, string > *tok) { stringTokens = tok; };
+    void SetIntTokens(map < string, int > *tok) { intTokens = tok; };
+    void UnsetIntTokens(void) { intTokens = NULL; };
+    void UnsetStringTokens(void) { stringTokens = NULL; };
+    //Clear dynamically parameters
+    void ClearDynamicParameters(void);
+    //Parse parameters with dynamically set Tokens
+    bool ParseParameters(void);
+    //Getter Functions
+    eFuncType GetType(void) { return type; };
+    bool DoDebug(void) { return debug; };
+    string GetParameter(eParamType type);
+    int GetNumericParameter(eParamType type);
+    string GetText(bool cut = true);
+    string GetImagePath(void) { return imgPath; };
+    tColor GetColorParameter(eParamType type);
+    string GetFontName(void) { return fontName; };
+    string GetFuncName(void);
+    string GetParamName(eParamType pt);
+    //Dynamic width or height parameter
+    int GetWidth(bool cutted = true);
+    int GetHeight(void);
+    void GetNeededWidths(multimap<eParamType,string> *widths);
+    void GetNeededHeights(multimap<eParamType,string> *heights);
+    void GetNeededPosX(multimap<eParamType,string> *posXs);
+    void GetNeededPosY(multimap<eParamType,string> *posYs);
+    void SetWidth(eParamType type, string label, int funcWidth);
+    void SetHeight(eParamType type, string label, int funcHeight);
+    void SetX(eParamType type, string label, int funcX);
+    void SetY(eParamType type, string label, int funcY);
+    //Status Functions
+    bool ParsedCompletely(void) { return parsedCompletely; };
+    bool DoExecute(void);
+    bool Updated(void) { return updated; };
+    //Debug
+    void Debug(void);
+};
+
+#endif //__TEMPLATEFUNCTION_H
\ No newline at end of file
diff --git a/libtemplate/templateloopfunction.c b/libtemplate/templateloopfunction.c
new file mode 100644
index 0000000..b0030d3
--- /dev/null
+++ b/libtemplate/templateloopfunction.c
@@ -0,0 +1,208 @@
+#include "templateloopfunction.h"
+#include "../libcore/helpers.h"
+
+using namespace std;
+
+// --- cTemplateFunction -------------------------------------------------------------
+
+cTemplateLoopFunction::cTemplateLoopFunction(void) : cTemplateFunction(ftLoop) { 
+}
+
+cTemplateLoopFunction::~cTemplateLoopFunction(void) {
+}
+
+void cTemplateLoopFunction::InitIterator(void) {
+    funcIt = functions.begin();
+}
+
+void cTemplateLoopFunction::AddFunction(string name, vector<pair<string, string> > &params) {
+    eFuncType type = ftNone;
+
+    if (!name.compare("drawtext")) {
+        type = ftDrawText;
+    } else if (!name.compare("drawtextbox")) {
+                type = ftDrawTextBox;
+        } else if (!name.compare("drawimage")) {
+        type = ftDrawImage;
+    } else if (!name.compare("drawrectangle")) {
+        type = ftDrawRectangle;
+    } else if (!name.compare("drawellipse")) {
+        type = ftDrawEllipse;
+    }
+
+    if (type == ftNone) {
+        return;
+    }
+
+    cTemplateFunction *f = new cTemplateFunction(type);
+    f->SetParameters(params);
+    functions.push_back(f);
+}
+
+void cTemplateLoopFunction::CalculateLoopFuncParameters(void) {
+    int columnWidth = GetNumericParameter(ptColumnWidth);
+    int rowHeight = GetNumericParameter(ptRowHeight);
+    for (vector<cTemplateFunction*>::iterator func = functions.begin(); func != functions.end(); func++) {
+        (*func)->SetGlobals(globals);
+        (*func)->SetContainer(0, 0, containerWidth, containerHeight);
+        (*func)->SetLoopContainer(columnWidth, rowHeight);
+        (*func)->CalculateParameters();
+        (*func)->CompleteParameters();
+    }
+}
+
+cTemplateFunction *cTemplateLoopFunction::GetNextFunction(void) {
+    if (funcIt == functions.end())
+        return NULL;
+    cTemplateFunction *func = *funcIt;
+    funcIt++;
+    return func;
+}
+
+void cTemplateLoopFunction::ClearDynamicParameters(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        func->ClearDynamicParameters();
+    }
+}
+
+void cTemplateLoopFunction::ParseDynamicParameters(map <string,string> *tokens) {
+    if (!tokens)
+        return;
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    
+    map <string,int> intTokens;
+    for (map <string,string>::iterator it = tokens->begin(); it != tokens->end(); it++) {
+        if (isNumber(it->second))
+            intTokens.insert(pair<string, int>(it->first, atoi((it->second).c_str())));
+    } 
+
+    bool completelyParsed = true;
+    while(func = GetNextFunction()) {
+        func->SetStringTokens(tokens);
+        func->SetIntTokens(&intTokens);
+        bool funcCompletelyParsed = func->ParseParameters();
+        if (!funcCompletelyParsed)
+            completelyParsed = false;
+        if (func->Updated())
+            func->CompleteParameters();
+        func->UnsetStringTokens();
+        func->UnsetIntTokens();
+    }
+    if (completelyParsed) {
+        return;
+    }
+
+    ReplaceWidthFunctions();
+    ReplaceHeightFunctions();
+}
+
+int cTemplateLoopFunction::GetLoopElementsWidth(void) {
+    int cW = GetNumericParameter(ptColumnWidth);
+    if (cW > 0) {
+        return cW;
+    }
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    int maxWidth = 1;
+    while(func = GetNextFunction()) {
+        int funcWidth = func->GetWidth(true);
+        if (funcWidth > maxWidth)
+            maxWidth = funcWidth;
+    }
+    return maxWidth;
+}
+
+int cTemplateLoopFunction::GetLoopElementsHeight(void) {
+    int rH = GetNumericParameter(ptRowHeight);
+    if (rH > 0)
+        return rH;
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    int maxHeight = 1;
+    while(func = GetNextFunction()) {
+        int funcY = func->GetNumericParameter(ptY);
+        int funcHeight = func->GetHeight();
+        int totalHeight = funcY + funcHeight;
+        if (totalHeight > maxHeight)
+            maxHeight = totalHeight;
+    }
+    return maxHeight;
+}
+
+void cTemplateLoopFunction::ReplaceWidthFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> widths;
+        func->GetNeededWidths(&widths);
+        for (map<eParamType, string>::iterator names = widths.begin(); names !=widths.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcWidth = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName); 
+                if (!myFuncName.compare(label)) {
+                    funcWidth = myFunc->GetWidth();
+                    func->SetWidth(type, label, funcWidth);
+                    if (func->Updated()) {
+                        func->CompleteParameters();
+                    }
+                }
+            }
+        }
+    }
+}
+
+void cTemplateLoopFunction::ReplaceHeightFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> heights;
+        func->GetNeededHeights(&heights);
+        for (map<eParamType, string>::iterator names = heights.begin(); names !=heights.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcHeight = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName); 
+                if (!myFuncName.compare(label)) {
+                    funcHeight = myFunc->GetHeight();
+                    func->SetHeight(type, label, funcHeight);
+                    if (func->Updated()) {
+                        func->CompleteParameters();
+                    }
+                }
+            }
+        }
+    }
+}
+
+bool cTemplateLoopFunction::Ready(void) {
+    bool isReady = true;
+    map< eParamType, string >::iterator hit = numericDynamicParameters.find(ptColumnWidth);
+    if (hit != numericDynamicParameters.end())
+        isReady = false;
+    hit = numericDynamicParameters.find(ptRowHeight);
+    if (hit != numericDynamicParameters.end())
+        isReady = false;
+    return isReady;
+}
+
+void cTemplateLoopFunction::Debug(void) {
+    cTemplateFunction::Debug();
+    esyslog("skindesigner: functions to be looped:");
+    for (vector<cTemplateFunction*>::iterator func = functions.begin(); func != functions.end(); func++) {
+        (*func)->Debug();
+    }
+}
\ No newline at end of file
diff --git a/libtemplate/templateloopfunction.h b/libtemplate/templateloopfunction.h
new file mode 100644
index 0000000..5335279
--- /dev/null
+++ b/libtemplate/templateloopfunction.h
@@ -0,0 +1,33 @@
+#ifndef __TEMPLATELOOPFUNCTION_H
+#define __TEMPLATELOOPFUNCTION_H
+
+#include "templatefunction.h"
+
+using namespace std;
+
+// --- cTemplateLoopFunction -------------------------------------------------------------
+
+class cTemplateLoopFunction : public cTemplateFunction {
+private:
+    vector<cTemplateFunction*> functions;
+    vector<cTemplateFunction*>::iterator funcIt;
+    void ReplaceWidthFunctions(void);
+    void ReplaceHeightFunctions(void);
+public:
+    cTemplateLoopFunction(void);
+    virtual ~cTemplateLoopFunction(void);
+    void AddFunction(string name, vector<pair<string, string> > &params);
+    void CalculateLoopFuncParameters(void);
+    void InitIterator(void);
+    cTemplateFunction *GetNextFunction(void);
+    void ClearDynamicParameters(void);
+    void ParseDynamicParameters(map <string,string> *tokens);
+    int GetLoopElementsWidth(void);
+    int GetLoopElementsHeight(void);
+    int GetContainerWidth(void) { return containerWidth; };
+    int GetContainerHeight(void) { return containerHeight; };
+    bool Ready(void);
+    void Debug(void);
+};
+
+#endif //__TEMPLATELOOPFUNCTION_H
diff --git a/libtemplate/templatepixmap.c b/libtemplate/templatepixmap.c
new file mode 100644
index 0000000..a1d032b
--- /dev/null
+++ b/libtemplate/templatepixmap.c
@@ -0,0 +1,474 @@
+#include "templatepixmap.h"
+
+using namespace std;
+
+// --- cTemplatePixmap -------------------------------------------------------------
+
+cTemplatePixmap::cTemplatePixmap(void) {
+    parameters = NULL;
+    containerX = 0;
+    containerY = 0;
+    containerWidth = 0;
+    containerHeight = 0;
+    globals = NULL;
+    scrolling = false;
+}
+
+cTemplatePixmap::~cTemplatePixmap() {
+    for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+        delete (*it);
+    }
+    if (parameters)
+        delete parameters;
+}
+
+void cTemplatePixmap::SetParameters(vector<pair<string, string> > &params) {
+    parameters = new cTemplateFunction(ftPixmap);
+    parameters->SetGlobals(globals);
+    parameters->SetParameters(params);
+}
+
+void cTemplatePixmap::SetContainer(int x, int y, int w, int h) { 
+    containerX = x;
+    containerY = y;
+    containerWidth = w; 
+    containerHeight = h;
+}
+
+void cTemplatePixmap::SetWidth(int width) {
+    cString pWidth = cString::sprintf("%d", width);
+    parameters->SetWidthManually(*pWidth);
+}
+
+void cTemplatePixmap::SetHeight(int height) {
+    cString pHeight = cString::sprintf("%d", height);
+    parameters->SetHeightManually(*pHeight);
+}
+
+void cTemplatePixmap::SetX(int x) {
+    parameters->SetXManually(x);
+}
+
+void cTemplatePixmap::SetY(int y) {
+    parameters->SetYManually(y);
+}
+
+void cTemplatePixmap::ClearDynamicParameters(void) {
+    parameters->ClearDynamicParameters();
+}
+
+void cTemplatePixmap::ParseDynamicParameters(map <string,int> *intTokens, bool initFuncs) {
+    parameters->ClearDynamicParameters();
+    parameters->SetIntTokens(intTokens); 
+    parameters->ParseParameters();
+    parameters->UnsetIntTokens();
+    
+    if (!DoExecute()) {
+        parameters->ClearDynamicParameters();
+        return;
+    }
+
+    if (!initFuncs || !Ready())
+        return;
+
+    int x = parameters->GetNumericParameter(ptX);
+    int y = parameters->GetNumericParameter(ptY);
+    int width = parameters->GetNumericParameter(ptWidth);
+    int height = parameters->GetNumericParameter(ptHeight);
+
+    for (vector<cTemplateFunction*>::iterator func = functions.begin(); func != functions.end(); func++) {
+        (*func)->SetContainer(x, y, width, height);
+        (*func)->ReCalculateParameters();
+        (*func)->CompleteParameters();
+        if ((*func)->GetType() == ftLoop) {
+            cTemplateLoopFunction *loopFunc = dynamic_cast<cTemplateLoopFunction*>(*func);
+            if (!loopFunc->Ready()) {
+                loopFunc->CalculateParameters();
+                loopFunc->SetIntTokens(intTokens);
+                loopFunc->ParseParameters();
+                loopFunc->UnsetIntTokens();
+            }
+            loopFunc->CalculateLoopFuncParameters();
+        }
+    }
+}
+
+void cTemplatePixmap::AddFunction(string name, vector<pair<string, string> > &params) {
+    eFuncType type = ftNone;
+
+    if (!name.compare("fill")) {
+        type = ftFill;
+    } else if (!name.compare("drawtext")) {
+        type = ftDrawText;
+    } else if (!name.compare("drawtextbox")) {
+        type = ftDrawTextBox;
+    } else if (!name.compare("drawimage")) {
+        type = ftDrawImage;
+    } else if (!name.compare("drawrectangle")) {
+        type = ftDrawRectangle;
+    } else if (!name.compare("drawellipse")) {
+        type = ftDrawEllipse;
+    } else if (!name.compare("drawslope")) {
+        type = ftDrawSlope;
+    }
+
+    if (type == ftNone) {
+        return;
+    }
+
+    cTemplateFunction *f = new cTemplateFunction(type);
+    f->SetParameters(params);
+    functions.push_back(f);
+}
+
+void cTemplatePixmap::AddLoopFunction(cTemplateLoopFunction *lf) {
+    functions.push_back(lf);
+}
+
+
+bool cTemplatePixmap::CalculateParameters(void) {
+    bool paramsValid = true;
+    //Calculate Pixmap Size
+    parameters->SetContainer(containerX, containerY, containerWidth, containerHeight);
+    parameters->SetGlobals(globals);
+    paramsValid = parameters->CalculateParameters();
+
+    int pixWidth = parameters->GetNumericParameter(ptWidth);
+    int pixHeight = parameters->GetNumericParameter(ptHeight);
+
+    for (vector<cTemplateFunction*>::iterator func = functions.begin(); func != functions.end(); func++) {
+        (*func)->SetGlobals(globals);
+        (*func)->SetContainer(0, 0, pixWidth, pixHeight);
+        paramsValid = (*func)->CalculateParameters();
+        (*func)->CompleteParameters();
+        if ((*func)->GetType() == ftLoop) {
+            cTemplateLoopFunction *loopFunc = dynamic_cast<cTemplateLoopFunction*>(*func);
+            loopFunc->CalculateLoopFuncParameters();
+        }
+    }
+
+    return paramsValid;
+}
+
+void cTemplatePixmap::ClearDynamicFunctionParameters(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        func->ClearDynamicParameters();
+    }
+}
+
+void cTemplatePixmap::ParseDynamicFunctionParameters(map <string,string> *stringTokens, map <string,int> *intTokens) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    bool completelyParsed = true;
+    bool updated = false;
+    while(func = GetNextFunction()) {
+        func->SetStringTokens(stringTokens);
+        func->SetIntTokens(intTokens);
+        bool funcCompletelyParsed = func->ParseParameters();
+        if (!funcCompletelyParsed)
+            completelyParsed = false;
+        if (func->Updated())
+            func->CompleteParameters();
+        func->UnsetIntTokens();
+        func->UnsetStringTokens();
+    }
+
+    if (completelyParsed) {
+        return;
+    }
+
+    ReplaceWidthFunctions();
+    ReplaceHeightFunctions();
+    ReplacePosXFunctions();
+    ReplacePosYFunctions();
+}
+
+bool cTemplatePixmap::CalculateDrawPortSize(cSize &size, map < string, vector< map< string, string > > > *loopTokens) {
+    int pixWidth = parameters->GetNumericParameter(ptWidth);
+    int pixHeight = parameters->GetNumericParameter(ptHeight);
+    int orientation = parameters->GetNumericParameter(ptOrientation);
+    if (orientation < 0)
+        orientation = orVertical;
+    if (orientation == orHorizontal) {
+        //get function which determinates drawport width 
+        cTemplateFunction *scrollFunc = GetScrollFunction();
+        if (!scrollFunc)
+            return false;
+        int drawportWidth = scrollFunc->GetWidth(false) + scrollFunc->GetNumericParameter(ptX) + 10;
+        if (drawportWidth > pixWidth) {
+            size.SetWidth(drawportWidth);
+            size.SetHeight(pixHeight);
+            return true;
+        }
+    } else if (orientation == orVertical) {
+        //check "last" element height
+        InitIterator();
+        cTemplateFunction *f = NULL;
+        int drawportHeight = 1;
+        while (f = GetNextFunction()) {
+            if (f->GetType() == ftLoop) {
+                cTemplateLoopFunction *loopFunc = dynamic_cast<cTemplateLoopFunction*>(f);
+                //get number of loop tokens
+                string loopTokenName = loopFunc->GetParameter(ptName);
+                int numLoopTokens = 0;
+                map < string, vector< map< string, string > > >::iterator hit = loopTokens->find(loopTokenName);
+                if (hit != loopTokens->end()) {
+                    vector< map<string,string> > loopToken = hit->second;
+                    numLoopTokens = loopToken.size();
+                    //parse first loop token element to get correct height
+                    vector< map<string,string> >::iterator firstLoopToken = loopToken.begin();
+                    loopFunc->ClearDynamicParameters();
+                    loopFunc->ParseDynamicParameters(&(*firstLoopToken));
+                }
+                int orientation = loopFunc->GetNumericParameter(ptOrientation);
+                int yFunc = loopFunc->GetNumericParameter(ptY);
+                int heightFunc = loopFunc->GetLoopElementsHeight();
+                if (loopTokens && orientation == orVertical) {
+                    //height is height of loop elements times num loop elements
+                    heightFunc = heightFunc * numLoopTokens;
+                } else if (loopTokens && orientation == orHorizontal) {
+                    int overflow = loopFunc->GetNumericParameter(ptOverflow);
+                    if (overflow == otCut) {
+                        //do nothing, height is only height of one line
+                    } else if (overflow == otWrap) {
+                        int widthFunc = loopFunc->GetLoopElementsWidth();
+                        if (widthFunc <= 0)
+                            continue;
+                        int loopWidth = loopFunc->GetNumericParameter(ptWidth);
+                        if (loopWidth <= 0)
+                            loopWidth = loopFunc->GetContainerWidth();
+                        int elementsPerRow = loopWidth / widthFunc;
+                        int rest = loopWidth % widthFunc;
+                        if (rest > 0)
+                            elementsPerRow++;
+                        if (elementsPerRow <= 0)
+                            continue;
+                        int lines = numLoopTokens / elementsPerRow;
+                        rest = numLoopTokens % elementsPerRow;
+                        if (rest > 0)
+                            lines++;
+                        heightFunc = heightFunc * lines;  
+                    }
+                }
+                int neededHeight = heightFunc + yFunc;
+                if (neededHeight > drawportHeight)
+                    drawportHeight = neededHeight;
+            } else {
+                int yFunc = f->GetNumericParameter(ptY);
+                int heightFunc = f->GetHeight();
+                int neededHeight = heightFunc + yFunc;
+                if (neededHeight > drawportHeight)
+                    drawportHeight = neededHeight;
+            }
+        }
+        if (drawportHeight > pixHeight) {
+            size.SetWidth(pixWidth);
+            size.SetHeight(drawportHeight);
+            return true;
+        }
+    }
+    size.SetWidth(0);
+    size.SetHeight(0);
+    return false;
+}
+
+void cTemplatePixmap::SetScrollingTextWidth(void) {
+    int orientation = parameters->GetNumericParameter(ptOrientation);
+    if (orientation != orHorizontal)
+        return;
+    int pixWidth = parameters->GetNumericParameter(ptWidth);
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->GetType() == ftDrawText) {
+            int offset = func->GetNumericParameter(ptX);
+            func->SetMaxTextWidth(pixWidth - offset);
+        }
+    }        
+}
+
+
+cTemplateFunction *cTemplatePixmap::GetScrollFunction(void) {
+    string scrollElement = parameters->GetParameter(ptScrollElement);
+    if (scrollElement.size() == 0)
+        return NULL;
+    InitIterator();
+    cTemplateFunction *f = NULL;
+    bool foundElement = false;
+    while (f = GetNextFunction()) {
+        string funcName = f->GetParameter(ptName);
+        if (!funcName.compare(scrollElement)) {
+            return f;
+        }
+    }
+    return NULL;
+}
+
+cRect cTemplatePixmap::GetPixmapSize(void) {
+    cRect size;
+    size.SetX(GetNumericParameter(ptX));
+    size.SetY(GetNumericParameter(ptY));
+    size.SetWidth(GetNumericParameter(ptWidth));
+    size.SetHeight(GetNumericParameter(ptHeight));
+    return size;
+}
+
+int cTemplatePixmap::GetNumericParameter(eParamType type) {
+    if (!parameters)
+        return -1;
+    return parameters->GetNumericParameter(type);
+}
+
+void cTemplatePixmap::InitIterator(void) {
+    funcIt = functions.begin();
+}
+
+cTemplateFunction *cTemplatePixmap::GetNextFunction(void) {
+    if (funcIt == functions.end())
+        return NULL;
+    cTemplateFunction *func = *funcIt;
+    funcIt++;
+    return func;
+}
+
+bool cTemplatePixmap::Ready(void) {
+    int myX = parameters->GetNumericParameter(ptX);
+    if (myX < 0)
+        return false;
+    int myY = parameters->GetNumericParameter(ptY);
+    if (myY < 0)
+        return false;
+    int myWidth = parameters->GetNumericParameter(ptWidth);
+    if (myWidth < 1)
+        return false;
+    int myHeight = parameters->GetNumericParameter(ptHeight);
+    if (myHeight < 1)
+        return false;
+    return true;
+}
+
+void cTemplatePixmap::ReplaceWidthFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> widths;
+        func->GetNeededWidths(&widths);
+        for (map<eParamType, string>::iterator names = widths.begin(); names !=widths.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcWidth = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName); 
+                if (!myFuncName.compare(label)) {
+                    funcWidth = myFunc->GetWidth();
+                    func->SetWidth(type, label, funcWidth);
+                    if (func->Updated()) {
+                        func->CompleteParameters();
+                    }
+                }
+            }
+        }
+    }
+}
+
+void cTemplatePixmap::ReplaceHeightFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> heights;
+        func->GetNeededHeights(&heights);
+        for (map<eParamType, string>::iterator names = heights.begin(); names !=heights.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcHeight = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName); 
+                if (!myFuncName.compare(label)) {
+                    funcHeight = myFunc->GetHeight();
+                    func->SetHeight(type, label, funcHeight);
+                    if (func->Updated()) {
+                        func->CompleteParameters();
+                    }
+                }
+            }
+        }
+    }
+}
+
+void cTemplatePixmap::ReplacePosXFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> posXs;
+        func->GetNeededPosX(&posXs);
+        for (map<eParamType, string>::iterator names = posXs.begin(); names !=posXs.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcX = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName); 
+                if (!myFuncName.compare(label)) {
+                    funcX = myFunc->GetNumericParameter(ptX);
+                    if (funcX > -1) {
+                        func->SetX(type, label, funcX);
+                        if (func->Updated()) {
+                            func->CompleteParameters();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+void cTemplatePixmap::ReplacePosYFunctions(void) {
+    InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = GetNextFunction()) {
+        if (func->ParsedCompletely()) {
+            continue;
+        }
+        multimap<eParamType,string> posYs;
+        func->GetNeededPosY(&posYs);
+        for (map<eParamType, string>::iterator names = posYs.begin(); names !=posYs.end(); names++) {
+            eParamType type = names->first;
+            string label = names->second;
+            int funcY = 0;
+            for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+                cTemplateFunction *myFunc = *it;
+                string myFuncName = myFunc->GetParameter(ptName);
+                if (!myFuncName.compare(label)) {
+                    funcY = myFunc->GetNumericParameter(ptY);
+                    if (funcY > -1) {
+                        func->SetY(type, label, funcY);
+                        if (func->Updated()) {
+                            func->CompleteParameters();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+void cTemplatePixmap::Debug(void) {
+    esyslog("skindesigner: pixmap container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
+    parameters->Debug();
+    for (vector<cTemplateFunction*>::iterator it = functions.begin(); it != functions.end(); it++) {
+        (*it)->Debug();
+    }
+}
diff --git a/libtemplate/templatepixmap.h b/libtemplate/templatepixmap.h
new file mode 100644
index 0000000..6cf3bd5
--- /dev/null
+++ b/libtemplate/templatepixmap.h
@@ -0,0 +1,82 @@
+#ifndef __TEMPLATEPIXMAP_H
+#define __TEMPLATEPIXMAP_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "globals.h"
+#include "templateloopfunction.h"
+
+using namespace std;
+
+// --- cTemplatePixmap -------------------------------------------------------------
+
+class cTemplatePixmap {
+protected:
+    bool scrolling;
+    cTemplateFunction *parameters;
+    vector<cTemplateFunction*> functions;
+    vector<cTemplateFunction*>::iterator funcIt;
+    int containerX;
+    int containerY;
+    int containerWidth;
+    int containerHeight;
+    cGlobals *globals;
+    //functions replacing {width(label)} and {height(label)} tokens
+    void ReplaceWidthFunctions(void);
+    void ReplaceHeightFunctions(void);
+    //functions replacing {posx(label)} and {posy(label)} tokens
+    void ReplacePosXFunctions(void);
+    void ReplacePosYFunctions(void);
+    //Get Scrolling Function
+    cTemplateFunction *GetScrollFunction(void);
+public:
+    cTemplatePixmap(void);
+    virtual ~cTemplatePixmap(void);
+    //Setter Functions
+    void SetScrolling(void) { scrolling = true; };
+    void SetParameters(vector<pair<string, string> > &params);
+    void SetWidth(int width);
+    void SetHeight(int height);
+    void SetX(int x);
+    void SetY(int y);
+    void SetContainer(int x, int y, int w, int h);
+    void SetGlobals(cGlobals *globals) { this->globals = globals; };
+    void AddFunction(string name, vector<pair<string, string> > &params);
+    void AddLoopFunction(cTemplateLoopFunction *lf);
+    //PreCache Parameters
+    bool CalculateParameters(void);
+    //clear dynamically set function parameters
+    void ClearDynamicFunctionParameters(void);
+    //Clear dynamically set pixmap parameters
+    void ClearDynamicParameters(void);
+    //Parse pixmap parameters with dynamically set Tokens
+    void ParseDynamicParameters(map <string,int> *intTokens, bool initFuncs);
+    //Parse all function parameters with dynamically set Tokens
+    void ParseDynamicFunctionParameters(map <string,string> *stringTokens, map <string,int> *intTokens);
+    //Calculate size of drawport in case area scrolls
+    bool CalculateDrawPortSize(cSize &size, map < string, vector< map< string, string > > > *loopTokens = NULL);
+    //Set max width for text in scrollarea
+    void SetScrollingTextWidth(void);
+    //Getter Functions
+    cRect GetPixmapSize(void);
+    int GetNumericParameter(eParamType type);
+    bool Scrolling(void) { return scrolling; };
+    bool DoExecute(void) { return parameters->DoExecute(); };
+    bool DoDebug(void) { return parameters->DoDebug(); };
+    bool Ready(void);
+    //Traverse Functions
+    void InitIterator(void);
+    cTemplateFunction *GetNextFunction(void);
+    //Debug
+    void Debug(void);
+};
+
+#endif //__TEMPLATEPIXMAP_H
\ No newline at end of file
diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c
new file mode 100644
index 0000000..4b1376a
--- /dev/null
+++ b/libtemplate/templateview.c
@@ -0,0 +1,1799 @@
+#include "templateview.h"
+
+// --- cTemplateView -------------------------------------------------------------
+
+cTemplateView::cTemplateView(void) {
+    globals = NULL;
+    parameters = NULL;
+    containerX = 0;
+    containerY = 0;
+    containerWidth = 0;
+    containerHeight = 0;
+    SetFunctionDefinitions();
+}
+
+cTemplateView::~cTemplateView() {
+
+    for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) {
+        delete it->second;
+    }
+
+    for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
+        delete it->second;
+    }
+
+    for (vector < cTemplateViewTab* >::iterator it = viewTabs.begin(); it != viewTabs.end(); it++) {
+        delete *it;
+    }
+
+    for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it != subViews.end(); it++) {
+        delete it->second;
+    }
+
+    for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) {
+        map< int, cTemplateView*> plugViews = it->second;
+        for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) {
+            delete it2->second;
+        }
+    }
+
+    if (parameters)
+        delete parameters;
+
+}
+
+/*******************************************************************
+* Public Functions
+*******************************************************************/
+
+void cTemplateView::SetParameters(vector<pair<string, string> > &params) {
+    parameters = new cTemplateFunction(ftView);
+    parameters->SetGlobals(globals);
+    parameters->SetParameters(params);
+}
+
+void cTemplateView::SetContainer(int x, int y, int width, int height) {
+    containerX = x;
+    containerY = y;
+    containerWidth = width; 
+    containerHeight = height; 
+}
+
+cTemplateViewElement *cTemplateView::GetViewElement(eViewElement ve) {
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end())
+        return NULL;
+    return hit->second;
+}
+
+void cTemplateView::InitViewElementIterator(void) {
+    veIt = viewElements.begin();
+}
+
+cTemplateViewElement *cTemplateView::GetNextViewElement(void) {
+    if (veIt == viewElements.end())
+        return NULL;
+    cTemplateViewElement *viewElement = veIt->second;
+    veIt++;
+    return viewElement; 
+}
+
+cTemplateViewList *cTemplateView::GetViewList(eViewList vl) {
+    map < eViewList, cTemplateViewList* >::iterator hit = viewLists.find(vl);
+    if (hit == viewLists.end())
+        return NULL;
+    return hit->second;
+}
+
+void cTemplateView::InitViewListIterator(void) {
+    vlIt = viewLists.begin();
+}
+
+cTemplateViewList *cTemplateView::GetNextViewList(void) {
+    if (vlIt == viewLists.end())
+        return NULL;
+    cTemplateViewList *viewList = vlIt->second;
+    vlIt++;
+    return viewList;    
+}
+
+cTemplateView *cTemplateView::GetSubView(eSubView sv) {
+    map < eSubView, cTemplateView* >::iterator hit = subViews.find(sv);
+    if (hit == subViews.end())
+        return NULL;
+    return hit->second;
+}
+
+cTemplateView *cTemplateView::GetPluginView(string pluginName, int pluginMenu) {
+    map < string, map< int, cTemplateView*> >::iterator hit = pluginViews.find(pluginName);
+
+    if (hit == pluginViews.end())
+       return NULL;
+
+    map< int, cTemplateView*> plugViews = hit->second;
+    map< int, cTemplateView*>::iterator hit2 = plugViews.find(pluginMenu);
+
+    if (hit2 == plugViews.end())
+        return NULL;
+
+    return hit2->second;
+}
+
+
+void cTemplateView::InitViewTabIterator(void) {
+    vtIt = viewTabs.begin();
+}
+
+cTemplateViewTab *cTemplateView::GetNextViewTab(void) {
+    if (vtIt == viewTabs.end()) {
+        return NULL;
+    }
+    cTemplateViewTab *tab = *vtIt;
+    vtIt++;
+    return tab;
+}
+
+void cTemplateView::InitSubViewIterator(void) {
+    svIt = subViews.begin();
+}
+
+cTemplateView *cTemplateView::GetNextSubView(void) {
+    if (svIt == subViews.end())
+        return NULL;
+    cTemplateView *subView = svIt->second;
+    svIt++;
+    return subView; 
+}
+
+int cTemplateView::GetNumericParameter(eParamType type) {
+    if (!parameters)
+        return 0;
+    return parameters->GetNumericParameter(type);
+}
+
+cRect cTemplateView::GetOsdSize(void) {
+    cRect osdSize;
+    if (!parameters) {
+        return osdSize;
+    }
+    osdSize.SetX(parameters->GetNumericParameter(ptX));
+    osdSize.SetY(parameters->GetNumericParameter(ptY));
+    osdSize.SetWidth(parameters->GetNumericParameter(ptWidth));
+    osdSize.SetHeight(parameters->GetNumericParameter(ptHeight));
+    return osdSize;
+}
+
+int cTemplateView::GetNumPixmaps(void) {
+    int numPixmaps = 0;
+    for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) {
+        cTemplateViewElement *viewElement = it->second;
+        numPixmaps += viewElement->GetNumPixmaps();
+    }
+    return numPixmaps;
+}
+
+int cTemplateView::GetNumPixmapsViewElement(eViewElement ve) {
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end())
+        return 0;
+    cTemplateViewElement *viewElement = hit->second; 
+    return viewElement->GetNumPixmaps();
+}
+
+int cTemplateView::GetNumListViewMenuItems(void) {
+    int numElements = 0;
+    cTemplateViewList *menuList = GetViewList(vlMenuItem);
+    if (!menuList)
+        return numElements;
+    return menuList->GetNumericParameter(ptNumElements);
+}
+
+bool cTemplateView::GetScalingWindow(cRect &scalingWindow) {
+    if (!parameters)
+        return false;
+    bool doScale = false;
+    int scaleX = parameters->GetNumericParameter(ptScaleTvX) + cOsd::OsdLeft();
+    int scaleY = parameters->GetNumericParameter(ptScaleTvY) + cOsd::OsdTop();
+    int scaleWidth = parameters->GetNumericParameter(ptScaleTvWidth);
+    int scaleHeight = parameters->GetNumericParameter(ptScaleTvHeight);
+    if (scaleX > -1 && scaleY > -1 && scaleWidth > -1 && scaleHeight > -1) {
+        cRect suggestedScaleWindow(scaleX, scaleY, scaleWidth, scaleHeight);
+        scalingWindow = cDevice::PrimaryDevice()->CanScaleVideo(suggestedScaleWindow);
+        doScale = true;
+    } else {
+        scalingWindow = cDevice::PrimaryDevice()->CanScaleVideo(cRect::Null);
+    }
+    return doScale;
+}
+
+bool cTemplateView::ValidViewElement(const char *viewElement) {
+    set<string>::iterator hit = viewElementsAllowed.find(viewElement);
+    if (hit == viewElementsAllowed.end())
+        return false;
+    return true;
+}
+
+bool cTemplateView::ValidSubView(const char *subView) {
+    set<string>::iterator hit = subViewsAllowed.find(subView);
+    if (hit == subViewsAllowed.end())
+        return false;
+    return true;        
+}
+
+bool cTemplateView::ValidViewList(const char *viewList) {
+    set<string>::iterator hit = viewListsAllowed.find(viewList);
+    if (hit == viewListsAllowed.end())
+        return false;
+    return true;    
+}
+
+bool cTemplateView::ValidFunction(const char *func) {
+    map < string, set < string > >::iterator hit = funcsAllowed.find(func);
+    if (hit == funcsAllowed.end())
+        return false;
+    return true;
+}
+
+bool cTemplateView::ValidAttribute(const char *func, const char *att) {
+    map < string, set < string > >::iterator hit = funcsAllowed.find(func);
+    if (hit == funcsAllowed.end())
+        return false;
+    
+    set<string>::iterator hitAtt = (hit->second).find(att);
+    if (hitAtt == (hit->second).end())
+        return false;
+
+    return true;
+}
+
+void cTemplateView::Translate(void) {
+    //Translate ViewElements
+    InitViewElementIterator();
+    cTemplateViewElement *viewElement = NULL;
+    while(viewElement = GetNextViewElement()) {
+        viewElement->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewElement->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox) {
+                    string text = func->GetParameter(ptText);
+                    string translation;
+                    bool translated = globals->Translate(text, translation);
+                    if (translated) {
+                        func->SetTranslatedText(translation);
+                    }
+                }
+                if (func->GetType() == ftLoop) {
+                    cTemplateLoopFunction *funcsLoop =  dynamic_cast<cTemplateLoopFunction*>(func);
+                    funcsLoop->InitIterator();
+                    cTemplateFunction *loopFunc = NULL;
+                    while(loopFunc = funcsLoop->GetNextFunction()) {
+                        if (loopFunc->GetType() == ftDrawText || loopFunc->GetType() == ftDrawTextBox) {
+                            string text = loopFunc->GetParameter(ptText);
+                            string translation;
+                            bool translated = globals->Translate(text, translation);
+                            if (translated) {
+                                loopFunc->SetTranslatedText(translation);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    //Translate viewLists
+    InitViewListIterator();
+    cTemplateViewList *viewList = NULL;
+    while(viewList = GetNextViewList()) {
+        viewList->InitIterator();
+        cTemplatePixmap *pix = NULL;
+        while(pix = viewList->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox) {
+                    string text = func->GetParameter(ptText);
+                    string translation;
+                    bool translated = globals->Translate(text, translation);
+                    if (translated) {
+                        func->SetTranslatedText(translation);
+                    }
+                }
+            }
+        }
+        cTemplateViewElement *listElement = viewList->GetListElement();
+        listElement->InitIterator();
+        while(pix = listElement->GetNextPixmap()) {
+            pix->InitIterator();
+            cTemplateFunction *func = NULL;
+            while(func = pix->GetNextFunction()) {
+                if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox) {
+                    string text = func->GetParameter(ptText);
+                    string translation;
+                    bool translated = globals->Translate(text, translation);
+                    if (translated) {
+                        func->SetTranslatedText(translation);
+                    }
+                }
+            }
+        }
+        
+        cTemplateViewElement *listElementCurrent = viewList->GetListElementCurrent();
+        if (listElementCurrent) {
+            listElementCurrent->InitIterator();
+            while(pix = listElementCurrent->GetNextPixmap()) {
+                pix->InitIterator();
+                cTemplateFunction *func = NULL;
+                while(func = pix->GetNextFunction()) {
+                    if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox) {
+                        string text = func->GetParameter(ptText);
+                        string translation;
+                        bool translated = globals->Translate(text, translation);
+                        if (translated) {
+                            func->SetTranslatedText(translation);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    //Translate viewTabs
+    InitViewTabIterator();
+    cTemplateViewTab *viewTab = NULL;
+    while(viewTab = GetNextViewTab()) {
+        string tabName = viewTab->GetName();
+        string tabTrans;
+        bool translated = globals->Translate(tabName, tabTrans);
+        if (translated) {
+            viewTab->SetName(tabTrans);            
+        }
+        viewTab->InitIterator();
+        cTemplateFunction *func = NULL;
+        while(func = viewTab->GetNextFunction()) {
+            if (func->GetType() == ftDrawText || func->GetType() == ftDrawTextBox) {
+                string text = func->GetParameter(ptText);
+                string translation;
+                translated = globals->Translate(text, translation);
+                if (translated) {
+                    func->SetTranslatedText(translation);
+                }
+            }
+            if (func->GetType() == ftLoop) {
+                cTemplateLoopFunction *funcsLoop =  dynamic_cast<cTemplateLoopFunction*>(func);
+                funcsLoop->InitIterator();
+                cTemplateFunction *loopFunc = NULL;
+                while(loopFunc = funcsLoop->GetNextFunction()) {
+                    if (loopFunc->GetType() == ftDrawText || loopFunc->GetType() == ftDrawTextBox) {
+                        string text = loopFunc->GetParameter(ptText);
+                        string translation;
+                        bool translated = globals->Translate(text, translation);
+                        if (translated) {
+                            loopFunc->SetTranslatedText(translation);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    //Translate Plugin Views
+    for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) {
+        map< int, cTemplateView*> plugViews = it->second;
+        for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) {
+            cTemplateView *pluginView = it2->second;
+            pluginView->Translate();
+        }
+    }
+
+    //Translate Subviews
+    InitSubViewIterator();
+    cTemplateView *subView = NULL;
+    while(subView = GetNextSubView()) {
+        subView->Translate();
+    }
+}
+
+void cTemplateView::PreCache(bool isSubview) {
+
+    if (!isSubview) {
+        int osdW = cOsd::OsdWidth();
+        int osdH = cOsd::OsdHeight();
+        parameters->SetContainer(0, 0, osdW, osdH);
+    } else {
+        parameters->SetContainer(containerX, containerY, containerWidth, containerHeight);      
+    }
+    //Calculate OSD Size
+    parameters->CalculateParameters();
+
+    int osdX = parameters->GetNumericParameter(ptX);
+    int osdY = parameters->GetNumericParameter(ptY);
+    int osdWidth = parameters->GetNumericParameter(ptWidth);
+    int osdHeight = parameters->GetNumericParameter(ptHeight);
+    int pixOffset = 0;
+
+    //Cache ViewElements
+    for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) {
+        cTemplateViewElement *viewElement = it->second;
+        viewElement->SetGlobals(globals);
+        if (!isSubview)
+            viewElement->SetContainer(0, 0, osdWidth, osdHeight);
+        else
+            viewElement->SetContainer(osdX, osdY, osdWidth, osdHeight);
+        viewElement->CalculateParameters();
+        viewElement->CalculatePixmapParameters();
+        viewElement->SetPixOffset(pixOffset);
+        pixOffset += viewElement->GetNumPixmaps();
+    }
+
+
+    //Cache ViewLists
+    for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
+        cTemplateViewList *viewList = it->second;
+        viewList->SetGlobals(globals);
+        //viewlists in subviews need complete container information
+        if (isSubview)
+            viewList->SetContainer(osdX, osdY, osdWidth, osdHeight);
+        else
+            viewList->SetContainer(0, 0, osdWidth, osdHeight);
+        viewList->CalculateParameters();
+        viewList->CalculateListParameters();
+    }
+
+    //Cache ViewTabs
+    for (vector<cTemplateViewTab*>::iterator tab = viewTabs.begin(); tab != viewTabs.end(); tab++) {
+        //viewtabs are only in subviews
+        (*tab)->SetContainer(osdX, osdY, osdWidth, osdHeight);
+        (*tab)->SetGlobals(globals);
+        (*tab)->CalculateParameters();
+    }
+
+    //Cache Subviews
+    for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it != subViews.end(); it++) {
+        cTemplateView *subView = it->second;
+        subView->SetContainer(0, 0, osdWidth, osdHeight);
+        subView->PreCache(true);
+    }
+
+    //Cache Plugin Subviews
+    for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it != pluginViews.end(); it++) {
+        map< int, cTemplateView*> plugViews = it->second;
+        for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) {
+            cTemplateView *plugView = it2->second;
+            plugView->SetContainer(0, 0, osdWidth, osdHeight);
+            plugView->PreCache(true);
+        }
+    }
+}
+
+void cTemplateView::Debug(void) {
+
+    esyslog("skindesigner: TemplateView %s", viewName.c_str());;
+    
+    parameters->Debug();
+
+    for (map < eViewElement, cTemplateViewElement* >::iterator it = viewElements.begin(); it != viewElements.end(); it++) {
+        esyslog("skindesigner: ++++++++ ViewElement: %s", GetViewElementName(it->first).c_str());
+        cTemplateViewElement *viewElement = it->second;
+        viewElement->Debug();
+    }
+
+    for (map < eViewList, cTemplateViewList* >::iterator it = viewLists.begin(); it != viewLists.end(); it++) {
+        esyslog("skindesigner: ++++++++ ViewList: %s", GetViewListName(it->first).c_str());
+        cTemplateViewList *viewList = it->second;
+        viewList->Debug();
+    }
+
+    for (vector<cTemplateViewTab*>::iterator tab = viewTabs.begin(); tab != viewTabs.end(); tab++) {
+        esyslog("skindesigner: ++++++++ ViewTab");
+        (*tab)->Debug();
+    }
+
+    for (map < eSubView, cTemplateView* >::iterator it = subViews.begin(); it!= subViews.end(); it++) {
+        esyslog("skindesigner: ++++++++ SubView: %s", GetSubViewName(it->first).c_str());
+        cTemplateView *subView = it->second;
+        subView->Debug();       
+    }
+    
+    for (map < string, map< int, cTemplateView*> >::iterator it = pluginViews.begin(); it!= pluginViews.end(); it++) {
+        esyslog("skindesigner: ++++++++ Plugin: %s", it->first.c_str());
+        map< int, cTemplateView*> plugViews = it->second;
+        for (map< int, cTemplateView*>::iterator it2 = plugViews.begin(); it2 != plugViews.end(); it2++) {
+            esyslog("skindesigner: Tmpl %d", it2->first);
+            ((cTemplateView*)it2->second)->Debug();
+        }
+    }
+
+}
+
+
+void cTemplateView::SetFunctionDefinitions(void) {
+    
+    string name = "viewelement";
+    set<string> attributes;
+    attributes.insert("debug");
+    attributes.insert("delay");
+    attributes.insert("fadetime");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "area";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("layer");
+    attributes.insert("transparency");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "areascroll";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("orientation");
+    attributes.insert("delay");
+    attributes.insert("mode");
+    attributes.insert("scrollspeed");
+    attributes.insert("condition");
+    attributes.insert("scrollelement");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("layer");
+    attributes.insert("transparency");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "loop";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("name");
+    attributes.insert("orientation");
+    attributes.insert("condition");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("columnwidth");
+    attributes.insert("rowheight");
+    attributes.insert("overflow");
+    attributes.insert("maxitems");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "fill";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("color");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawtext";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("font");
+    attributes.insert("fontsize");
+    attributes.insert("color");
+    attributes.insert("text");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawtextbox";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("align");
+    attributes.insert("maxlines");  
+    attributes.insert("font");
+    attributes.insert("fontsize");
+    attributes.insert("color");
+    attributes.insert("text");
+    attributes.insert("float");
+    attributes.insert("floatwidth");
+    attributes.insert("floatheight");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawimage";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("imagetype");
+    attributes.insert("path");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("cache");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawrectangle";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("color");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawellipse";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("color");
+    attributes.insert("quadrant");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+
+    name = "drawslope";
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("condition");
+    attributes.insert("name");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("align");
+    attributes.insert("valign");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("color");
+    attributes.insert("type");
+    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
+}
+
+/************************************************************************************
+* cTemplateViewChannel
+************************************************************************************/
+
+cTemplateViewChannel::cTemplateViewChannel(void) {
+
+    viewName = "displaychannel";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    SetViewElements();
+}
+
+cTemplateViewChannel::~cTemplateViewChannel() {
+}
+
+void cTemplateViewChannel::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("channelinfo");
+    viewElementsAllowed.insert("channelgroup");
+    viewElementsAllowed.insert("epginfo");
+    viewElementsAllowed.insert("progressbar");
+    viewElementsAllowed.insert("progressbarback");
+    viewElementsAllowed.insert("statusinfo");
+    viewElementsAllowed.insert("audioinfo");
+    viewElementsAllowed.insert("screenresolution");
+    viewElementsAllowed.insert("signalquality");
+    viewElementsAllowed.insert("signalqualityback");
+    viewElementsAllowed.insert("devices");
+    viewElementsAllowed.insert("currentweather");
+    viewElementsAllowed.insert("scrapercontent");
+    viewElementsAllowed.insert("datetime");
+    viewElementsAllowed.insert("time");
+    viewElementsAllowed.insert("message");
+    viewElementsAllowed.insert("customtokens");
+}
+
+string cTemplateViewChannel::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veChannelInfo:
+            name = "ChannelInfo";
+            break;
+        case veChannelGroup:
+            name = "ChannelGroup";
+            break;
+        case veEpgInfo:
+            name = "EpgInfo";
+            break;
+        case veProgressBar:
+            name = "ProgressBar";
+            break;
+        case veProgressBarBack:
+            name = "ProgressBar Background";
+            break;
+        case veStatusInfo:
+            name = "StatusInfo";
+            break;
+        case veAudioInfo:
+            name = "AudioInfo";
+            break;
+        case veScreenResolution:
+            name = "Screen Resolution";
+            break;
+        case veSignalQuality:
+            name = "Signal Quality";
+            break;
+        case veSignalQualityBack:
+            name = "Signal Quality Background";
+            break;
+        case veDevices:
+            name = "Devices";
+            break;
+        case veCurrentWeather:
+            name = "Current Weather";
+            break;
+        case veScraperContent:
+            name = "Scraper Content";
+            break;
+        case veDateTime:
+            name = "DateTime";
+            break;
+        case veTime:
+            name = "Time";
+            break;
+        case veMessage:
+            name = "Message";
+            break;
+        case veCustomTokens:
+            name = "Custom Tokens";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if (!sViewElement.compare("channelinfo")) {
+        ve = veChannelInfo;
+    } else if (!sViewElement.compare("channelgroup")) {
+        ve = veChannelGroup;
+    } else if (!sViewElement.compare("epginfo")) {
+        ve = veEpgInfo;
+    } else if (!sViewElement.compare("progressbar")) {
+        ve = veProgressBar;
+    } else if (!sViewElement.compare("progressbarback")) {
+        ve = veProgressBarBack;
+    } else if (!sViewElement.compare("statusinfo")) {
+        ve = veStatusInfo;
+    } else if (!sViewElement.compare("audioinfo")) {
+        ve = veAudioInfo;
+    } else if (!sViewElement.compare("screenresolution")) {
+        ve = veScreenResolution;
+    } else if (!sViewElement.compare("signalquality")) {
+        ve = veSignalQuality;
+    } else if (!sViewElement.compare("signalqualityback")) {
+        ve = veSignalQualityBack;
+    } else if (!sViewElement.compare("devices")) {
+        ve = veDevices;
+    } else if (!sViewElement.compare("currentweather")) {
+        ve = veCurrentWeather;
+    } else if (!sViewElement.compare("scrapercontent")) {
+        ve = veScraperContent;
+    } else if (!sViewElement.compare("datetime")) {
+        ve = veDateTime;
+    } else if (!sViewElement.compare("time")) {
+        ve = veTime;
+    } else if (!sViewElement.compare("message")) {
+        ve = veMessage;
+    } else if (!sViewElement.compare("customtokens")) {
+        ve = veCustomTokens;
+    }
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displaychannel: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+/************************************************************************************
+* cTemplateViewMenu
+************************************************************************************/
+
+cTemplateViewMenu::cTemplateViewMenu(void) {
+
+    viewName = "displaymenu";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    string subViewName = "menudefault";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight"); 
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menumain";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menusetup";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menuschedules";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menuchannels";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menutimers";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menurecordings";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menudetailedepg";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menudetailedrecording";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    subViewName = "menudetailedtext";
+    //definition of allowed parameters for subtemplate menumain 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(subViewName, attributes));
+
+    //definition of allowed parameters for timerlist viewlist 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("orientation");
+    attributes.insert("align");
+    attributes.insert("numlistelements");
+    funcsAllowed.insert(pair< string, set<string> >("timerlist", attributes));
+
+    //definition of allowed parameters for menuitems viewlist 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("orientation");
+    attributes.insert("align");
+    attributes.insert("menuitemwidth");
+    attributes.insert("determinatefont");
+    attributes.insert("numlistelements");
+    funcsAllowed.insert(pair< string, set<string> >("menuitems", attributes));
+
+    //definition of allowed parameters for currentitems viewlist 
+    attributes.clear();
+    attributes.insert("delay");
+    attributes.insert("fadetime");
+    funcsAllowed.insert(pair< string, set<string> >("currentelement", attributes));
+
+    //definition of allowed parameters for viewtab
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("name");
+    attributes.insert("condition");
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("layer");
+    attributes.insert("transparency");
+    attributes.insert("scrollheight");
+    funcsAllowed.insert(pair< string, set<string> >("tab", attributes));
+
+    //definition of allowed parameters for plugin menus
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >("menuplugin", attributes));
+
+    SetSubViews();
+    SetViewElements();
+    SetViewLists();
+
+}
+
+cTemplateViewMenu::~cTemplateViewMenu() {
+}
+
+void cTemplateViewMenu::SetSubViews(void) {
+    subViewsAllowed.insert("menudefault");
+    subViewsAllowed.insert("menumain");
+    subViewsAllowed.insert("menusetup");
+    subViewsAllowed.insert("menuschedules");
+    subViewsAllowed.insert("menutimers");
+    subViewsAllowed.insert("menurecordings");
+    subViewsAllowed.insert("menuchannels");
+    subViewsAllowed.insert("menudetailedepg");
+    subViewsAllowed.insert("menudetailedrecording");
+    subViewsAllowed.insert("menudetailedtext");
+}
+
+void cTemplateViewMenu::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("datetime");
+    viewElementsAllowed.insert("time");
+    viewElementsAllowed.insert("header");
+    viewElementsAllowed.insert("colorbuttons");
+    viewElementsAllowed.insert("message");
+    viewElementsAllowed.insert("discusage");
+    viewElementsAllowed.insert("systemload");
+    viewElementsAllowed.insert("temperatures");
+    viewElementsAllowed.insert("timers");
+    viewElementsAllowed.insert("devices");
+    viewElementsAllowed.insert("currentweather");
+    viewElementsAllowed.insert("currentschedule");
+    viewElementsAllowed.insert("customtokens");
+    viewElementsAllowed.insert("scrollbar");
+    viewElementsAllowed.insert("detailheader");
+    viewElementsAllowed.insert("tablabels");
+}
+
+void cTemplateViewMenu::SetViewLists(void) {
+    viewListsAllowed.insert("timerlist");
+    viewListsAllowed.insert("menuitems");
+}
+
+string cTemplateViewMenu::GetSubViewName(eSubView sv) {
+    string name;
+    switch (sv) {
+        case svMenuDefault:
+            name = "Default Menu";
+            break;
+        case svMenuMain:
+            name = "Main Menu";
+            break;
+        case svMenuSetup:
+            name = "Setup Menu";
+            break;
+        case svMenuSchedules:
+            name = "Schedules Menu";
+            break;
+        case svMenuTimers:
+            name = "Timers Menu";
+            break;
+        case svMenuRecordings:
+            name = "Recordings Menu";
+            break;
+        case svMenuChannels:
+            name = "Channels Menu";
+            break;
+        case svMenuDetailedEpg:
+            name = "Detailed EPG";
+            break;
+        case svMenuDetailedRecording:
+            name = "Detailed Recording";
+            break;
+        case svMenuDetailedText:
+            name = "Detailed Text";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+
+string cTemplateViewMenu::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veDateTime:
+            name = "DateTime";
+            break;
+        case veTime:
+            name = "Time";
+            break;
+        case veHeader:
+            name = "Header";
+            break;
+        case veButtons:
+            name = "Color Buttons";
+            break;
+        case veMessage:
+            name = "Message";
+            break;
+        case veDiscUsage:
+            name = "Disc Usage";
+            break;
+        case veSystemLoad:
+            name = "System Load";
+            break;
+        case veTemperatures:
+            name = "Temperatures";
+            break;
+        case veTimers:
+            name = "Timers";
+            break;
+        case veCurrentSchedule:
+            name = "Current Schedule";
+            break;
+        case veCurrentWeather:
+            name = "Current Weather";
+            break;
+       case veCustomTokens:
+            name = "Custom Tokens";
+            break;
+        case veDevices:
+            name = "Devices";
+            break;
+        case veMenuItem:
+            name = "Menu Item";
+            break;
+        case veMenuCurrentItemDetail:
+            name = "Menu Current Item Detail";
+            break;
+        case veScrollbar:
+            name = "Scrollbar";
+            break;
+        case veDetailHeader:
+            name = "Detail header";
+            break;
+        case veTabLabels:
+            name = "tab labels";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+string cTemplateViewMenu::GetViewListName(eViewList vl) {
+    string name;
+    switch (vl) {
+        case vlTimerList:
+            name = "Timer List";
+            break;
+        case vlMenuItem:
+            name = "Menu Item";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewMenu::AddSubView(string sSubView, cTemplateView *subView) {
+    eSubView sv = svUndefined;
+    
+    if (!sSubView.compare("menumain")) {
+        sv = svMenuMain;
+    } else if (!sSubView.compare("menudefault")) {
+        sv = svMenuDefault;
+    } else if (!sSubView.compare("menuschedules")) {
+        sv = svMenuSchedules;
+    } else if (!sSubView.compare("menusetup")) {
+        sv = svMenuSetup;
+    } else if (!sSubView.compare("menuschedules")) {
+        sv = svMenuSchedules;
+    } else if (!sSubView.compare("menutimers")) {
+        sv = svMenuTimers;
+    } else if (!sSubView.compare("menurecordings")) {
+        sv = svMenuRecordings;
+    } else if (!sSubView.compare("menuchannels")) {
+        sv = svMenuChannels;
+    } else if (!sSubView.compare("menudetailedepg")) {
+        sv = svMenuDetailedEpg;
+    } else if (!sSubView.compare("menudetailedrecording")) {
+        sv = svMenuDetailedRecording;
+    } else if (!sSubView.compare("menudetailedtext")) {
+        sv = svMenuDetailedText;
+    }
+
+    if (sv == svUndefined) {
+        esyslog("skindesigner: unknown SubView in displayMenu: %s", sSubView.c_str());
+        return;
+    }
+    subView->SetGlobals(globals);
+    subViews.insert(pair<eSubView, cTemplateView*>(sv, subView));
+}
+
+void cTemplateViewMenu::AddPluginView(string plugName, int templNo, cTemplateView *plugView) {
+    plugView->SetGlobals(globals);
+
+    map < string, map< int, cTemplateView*> >::iterator hit = pluginViews.find(plugName);
+
+    if (hit == pluginViews.end()) {
+        map< int, cTemplateView*> plugTemplates;
+        plugTemplates.insert(pair<int, cTemplateView*>(templNo, plugView));
+        pluginViews.insert(pair< string, map< int, cTemplateView*> >(plugName, plugTemplates));
+    } else {
+        hit->second.insert(pair<int, cTemplateView*>(templNo, plugView));
+    }
+}
+
+void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if (!sViewElement.compare("datetime")) {
+        ve = veDateTime;
+    } else if (!sViewElement.compare("time")) {
+        ve = veTime;
+    } else if (!sViewElement.compare("header")) {
+        ve = veHeader;
+    } else if (!sViewElement.compare("colorbuttons")) {
+        ve = veButtons;
+    } else if (!sViewElement.compare("message")) {
+        ve = veMessage;
+    } else if (!sViewElement.compare("discusage")) {
+        ve = veDiscUsage;
+    } else if (!sViewElement.compare("systemload")) {
+        ve = veSystemLoad;
+    } else if (!sViewElement.compare("temperatures")) {
+        ve = veTemperatures;
+    } else if (!sViewElement.compare("timers")) {
+        ve = veTimers;
+    } else if (!sViewElement.compare("currentschedule")) {
+        ve = veCurrentSchedule;
+    } else if (!sViewElement.compare("customtokens")) {
+        ve = veCustomTokens;
+    } else if (!sViewElement.compare("devices")) {
+        ve = veDevices;
+    } else if (!sViewElement.compare("currentweather")) {
+        ve = veCurrentWeather;
+    } else if (!sViewElement.compare("scrollbar")) {
+        ve = veScrollbar;
+    } else if (!sViewElement.compare("detailheader")) {
+        ve = veDetailHeader;
+    } else if (!sViewElement.compare("tablabels")) {
+        ve = veTabLabels;
+    }
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displayMenu: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        if (viewElement->DebugTokens()) {
+            dsyslog("skindesigner: activating token debugging for view element %s", sViewElement.c_str());
+        }
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+void cTemplateViewMenu::AddViewList(string sViewList, cTemplateViewList *viewList) {
+    
+    eViewList vl = vlUndefined;
+    if (!sViewList.compare("timerlist")) {
+        vl = vlTimerList;
+    } else if (!sViewList.compare("menuitems")) {
+        vl = vlMenuItem;
+    }
+
+    if (vl == vlUndefined) {
+        esyslog("skindesigner: unknown ViewList in displaymenu: %s", sViewList.c_str());
+        return;
+    }
+    
+    viewList->SetGlobals(globals);
+    viewLists.insert(pair< eViewList, cTemplateViewList*>(vl, viewList));
+}
+
+void cTemplateViewMenu::AddViewTab(cTemplateViewTab *viewTab) {
+    viewTabs.push_back(viewTab);
+}
+
+/************************************************************************************
+* cTemplateViewMessage
+************************************************************************************/
+
+cTemplateViewMessage::cTemplateViewMessage(void) {
+
+    viewName = "displaymessage";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    SetViewElements();
+}
+
+cTemplateViewMessage::~cTemplateViewMessage() {
+}
+
+void cTemplateViewMessage::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("message");
+}
+
+string cTemplateViewMessage::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veMessage:
+            name = "Message";
+            break;      
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if (!sViewElement.compare("message")) {
+        ve = veMessage;
+    } 
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displaymessage: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+/************************************************************************************
+* cTemplateViewReplay
+************************************************************************************/
+
+cTemplateViewReplay::cTemplateViewReplay(void) {
+
+    viewName = "displayreplay";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    //definition of allowed parameters for onpause and onpausemodeonly viewelement 
+    attributes.clear();
+    attributes.insert("debug");
+    attributes.insert("delay");
+    attributes.insert("fadetime");
+    funcsAllowed.insert(pair< string, set<string> >("onpause", attributes));
+    funcsAllowed.insert(pair< string, set<string> >("onpausemodeonly", attributes));
+
+    SetViewElements();
+}
+
+cTemplateViewReplay::~cTemplateViewReplay() {
+}
+
+void cTemplateViewReplay::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("backgroundmodeonly");
+    viewElementsAllowed.insert("datetime");
+    viewElementsAllowed.insert("time");
+    viewElementsAllowed.insert("rectitle");
+    viewElementsAllowed.insert("recinfo");
+    viewElementsAllowed.insert("scrapercontent");
+    viewElementsAllowed.insert("currenttime");
+    viewElementsAllowed.insert("totaltime");
+    viewElementsAllowed.insert("progressbar");
+    viewElementsAllowed.insert("cutmarks");
+    viewElementsAllowed.insert("controlicons");
+    viewElementsAllowed.insert("controliconsmodeonly");
+    viewElementsAllowed.insert("jump");
+    viewElementsAllowed.insert("message");
+    viewElementsAllowed.insert("onpause");
+    viewElementsAllowed.insert("onpausemodeonly");
+    viewElementsAllowed.insert("customtokens");
+}
+
+string cTemplateViewReplay::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veDateTime:
+            name = "DateTime";
+            break;
+        case veTime:
+            name = "DateTime";
+            break;
+        case veRecTitle:
+            name = "Recording Title";
+            break;      
+        case veRecInfo:
+            name = "Recording Information";
+            break;      
+        case veRecCurrent:
+            name = "Recording current Time";
+            break;
+        case veRecTotal:
+            name = "Recording total Time";
+            break;
+        case veRecProgressBar:
+            name = "Rec Progress Bar";
+            break;
+        case veCuttingMarks:
+            name = "Cutting Marks";
+            break;
+        case veControlIcons:
+            name = "Control Icons";
+            break;
+        case veControlIconsModeOnly:
+            name = "Control Icons Mode only";
+            break;
+        case veBackgroundModeOnly:
+            name = "Background Mode only";
+            break;   
+        case veRecJump:
+            name = "Recording Jump";
+            break;   
+        case veScraperContent:
+            name = "Scraper Content";
+            break;
+        case veOnPause:
+            name = "On Pause";
+            break;
+        case veOnPauseModeOnly:
+            name = "On Pause Mode Only";
+            break;
+        case veCustomTokens:
+            name = "Custom Tokens";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if (!sViewElement.compare("datetime")) {
+        ve = veDateTime;
+    } else if (!sViewElement.compare("time")) {
+        ve = veTime;
+    } else if (!sViewElement.compare("rectitle")) {
+        ve = veRecTitle;
+    } else if (!sViewElement.compare("recinfo")) {
+        ve = veRecInfo;
+    } else if (!sViewElement.compare("scrapercontent")) {
+        ve = veScraperContent;
+    } else if (!sViewElement.compare("currenttime")) {
+        ve = veRecCurrent;
+    } else if (!sViewElement.compare("totaltime")) {
+        ve = veRecTotal;
+    } else if (!sViewElement.compare("progressbar")) {
+        ve = veRecProgressBar;
+    } else if (!sViewElement.compare("cutmarks")) {
+        ve = veCuttingMarks;
+    } else if (!sViewElement.compare("controlicons")) {
+        ve = veControlIcons;
+    } else if (!sViewElement.compare("controliconsmodeonly")) {
+        ve = veControlIconsModeOnly;
+    } else if (!sViewElement.compare("backgroundmodeonly")) {
+        ve = veBackgroundModeOnly;
+    } else if (!sViewElement.compare("jump")) {
+        ve = veRecJump;
+    } else if (!sViewElement.compare("message")) {
+        ve = veMessage;
+    } else if (!sViewElement.compare("onpause")) {
+        ve = veOnPause;
+    } else if (!sViewElement.compare("onpausemodeonly")) {
+        ve = veOnPauseModeOnly;
+    } else if (!sViewElement.compare("customtokens")) {
+        ve = veCustomTokens;
+    }
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displayreplay: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+
+/************************************************************************************
+* cTemplateViewVolume
+************************************************************************************/
+
+cTemplateViewVolume::cTemplateViewVolume(void) {
+
+    viewName = "displayvolume";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    SetViewElements();
+}
+
+cTemplateViewVolume::~cTemplateViewVolume() {
+}
+
+void cTemplateViewVolume::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("volume");
+}
+
+string cTemplateViewVolume::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veVolume:
+            name = "Volume";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if (!sViewElement.compare("volume")) {
+        ve = veVolume;
+    } 
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displayvolume: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+/************************************************************************************
+* cTemplateViewAudioTracks
+************************************************************************************/
+
+cTemplateViewAudioTracks::cTemplateViewAudioTracks(void) {
+
+    viewName = "displayaudiotracks";
+    //definition of allowed parameters for class itself 
+    set<string> attributes;
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("fadetime");
+    attributes.insert("scaletvx");
+    attributes.insert("scaletvy");
+    attributes.insert("scaletvwidth");
+    attributes.insert("scaletvheight");
+    funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
+
+    //definition of allowed parameters for menuitems viewlist 
+    attributes.clear();
+    attributes.insert("x");
+    attributes.insert("y");
+    attributes.insert("width");
+    attributes.insert("height");
+    attributes.insert("orientation");
+    attributes.insert("align");
+    attributes.insert("menuitemwidth");
+    attributes.insert("numlistelements");
+    funcsAllowed.insert(pair< string, set<string> >("menuitems", attributes));
+
+    SetViewElements();
+    SetViewLists();
+}
+
+cTemplateViewAudioTracks::~cTemplateViewAudioTracks() {
+}
+
+void cTemplateViewAudioTracks::SetViewElements(void) {
+    viewElementsAllowed.insert("background");
+    viewElementsAllowed.insert("header");
+}
+
+void cTemplateViewAudioTracks::SetViewLists(void) {
+    viewListsAllowed.insert("menuitems");
+}
+
+string cTemplateViewAudioTracks::GetViewElementName(eViewElement ve) {
+    string name;
+    switch (ve) {
+        case veBackground:
+            name = "Background";
+            break;
+        case veHeader:
+            name = "Header";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+string cTemplateViewAudioTracks::GetViewListName(eViewList vl) {
+    string name;
+    switch (vl) {
+        case vlMenuItem:
+            name = "Menu Item";
+            break;
+        default:
+            name = "Unknown";
+            break;
+    };
+    return name;
+}
+
+void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
+    eViewElement ve = veUndefined;
+    
+    if (!sViewElement.compare("background")) {
+        ve = veBackground;
+    } else if(!sViewElement.compare("header")) {
+        ve = veHeader;
+    }
+
+    if (ve == veUndefined) {
+        esyslog("skindesigner: unknown ViewElement in displayaudiotracks: %s", sViewElement.c_str());
+        return;
+    }
+
+    pix->SetGlobals(globals);
+
+    map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+    if (hit == viewElements.end()) {
+        cTemplateViewElement *viewElement = new cTemplateViewElement();
+        viewElement->SetParameters(viewElementattributes);
+        viewElement->AddPixmap(pix);
+        viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
+    } else {
+        (hit->second)->AddPixmap(pix);
+    }
+}
+
+void cTemplateViewAudioTracks::AddViewList(string sViewList, cTemplateViewList *viewList) {
+    
+    eViewList vl = vlUndefined;
+    if (!sViewList.compare("menuitems")) {
+        vl = vlMenuItem;
+    }
+
+    if (vl == vlUndefined) {
+        esyslog("skindesigner: unknown ViewList in displaymenu: %s", sViewList.c_str());
+        return;
+    }
+    
+    viewList->SetGlobals(globals);
+    viewLists.insert(pair< eViewList, cTemplateViewList*>(vl, viewList));
+}
diff --git a/libtemplate/templateview.h b/libtemplate/templateview.h
new file mode 100644
index 0000000..1cd4289
--- /dev/null
+++ b/libtemplate/templateview.h
@@ -0,0 +1,207 @@
+#ifndef __TEMPLATEVIEW_H
+#define __TEMPLATEVIEW_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "templateviewelement.h"
+#include "templateviewlist.h"
+#include "templatepixmap.h"
+#include "templateviewtab.h"
+#include "templatefunction.h"
+
+using namespace std;
+
+// --- cTemplateView -------------------------------------------------------------
+
+enum eSubView {
+    svUndefined,
+    svMenuDefault,
+    svMenuMain,
+    svMenuSetup,
+    svMenuSchedules,
+    svMenuTimers,
+    svMenuRecordings,
+    svMenuChannels,
+    svMenuDetailedEpg,
+    svMenuDetailedRecording,
+    svMenuDetailedText,
+    svMenuPlugin,
+};
+
+class cTemplateView {
+private:
+protected:
+    cGlobals *globals;
+    //view parameters
+    string viewName;
+    cTemplateFunction *parameters;
+    int containerX;
+    int containerY;
+    int containerWidth;
+    int containerHeight;
+    //basic view data structures
+    map < eViewElement, cTemplateViewElement* > viewElements;
+    map < eViewList, cTemplateViewList* > viewLists;
+    map < eSubView, cTemplateView* > subViews;
+    vector< cTemplateViewTab* > viewTabs;
+    map < string, map< int, cTemplateView*> > pluginViews;
+    //helpers to iterate data structures
+    map < eViewElement, cTemplateViewElement* >::iterator veIt;
+    map < eViewList, cTemplateViewList* >::iterator vlIt;
+    map < eSubView, cTemplateView* >::iterator svIt;
+    vector< cTemplateViewTab* >::iterator vtIt;
+    //helpers to check valid xml templates
+    set<string> subViewsAllowed;
+    set<string> viewElementsAllowed;
+    set<string> viewListsAllowed;
+    map < string, set < string > > funcsAllowed;
+    void SetFunctionDefinitions(void);
+public:
+    cTemplateView(void);
+    virtual ~cTemplateView(void);
+    virtual string GetSubViewName(eSubView sv) { return ""; };
+    virtual string GetViewElementName(eViewElement ve) { return ""; };
+    virtual string GetViewListName(eViewList vl) { return ""; };
+    virtual void AddSubView(string sSubView, cTemplateView *subView) {};
+    virtual void AddPluginView(string plugName, int templNo, cTemplateView *plugView) {};
+    virtual void AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {};
+    virtual void AddViewList(string sViewList, cTemplateViewList *viewList) {};
+    virtual void AddViewTab(cTemplateViewTab *viewTab) {};
+    //Setter Functions
+    void SetGlobals(cGlobals *globals) { this->globals = globals; };
+    void SetParameters(vector<pair<string, string> > &params);
+    void SetContainer(int x, int y, int width, int height);
+    //access view elements
+    cTemplateViewElement *GetViewElement(eViewElement ve);
+    void InitViewElementIterator(void);
+    cTemplateViewElement *GetNextViewElement(void);
+    //access list elements
+    cTemplateViewList *GetViewList(eViewList vl);
+    void InitViewListIterator(void);
+    cTemplateViewList *GetNextViewList(void);
+    bool IsListView(void) { return viewLists.size() > 0 ? true : false; };
+    //access tabs
+    void InitViewTabIterator(void);
+    cTemplateViewTab *GetNextViewTab(void);
+    //access sub views
+    cTemplateView *GetSubView(eSubView sv);
+    void InitSubViewIterator(void);
+    cTemplateView *GetNextSubView(void);
+    //access plugin views
+    cTemplateView *GetPluginView(string pluginName, int pluginMenu);
+    //Getter Functions
+    const char *GetViewName(void) { return viewName.c_str(); };
+    int GetNumericParameter(eParamType type);
+    cRect GetOsdSize(void);
+    int GetNumPixmaps(void);
+    int GetNumPixmapsViewElement(eViewElement ve);
+    int GetNumListViewMenuItems(void);
+    bool GetScalingWindow(cRect &scalingWindow);
+    map<string,string> GetCustomStringTokens(void) { return globals->GetCustomStringTokens(); };
+    map<string,int> GetCustomIntTokens(void) { return globals->GetCustomIntTokens(); };
+    //Checks for parsing template XML files
+    bool ValidSubView(const char *subView);
+    bool ValidViewElement(const char *viewElement);
+    bool ValidViewList(const char *viewList);    
+    bool ValidFunction(const char *func);
+    bool ValidAttribute(const char *func, const char *att);
+    //Caching
+    void Translate(void);
+    void PreCache(bool isSubview);
+    //Debug
+    void Debug(void);
+};
+
+// --- cTemplateViewChannel -------------------------------------------------------------
+
+class cTemplateViewChannel : public cTemplateView {
+private:
+    void SetViewElements(void);
+    void SetViewLists(void);
+public:
+    cTemplateViewChannel(void);
+    virtual ~cTemplateViewChannel(void);
+    string GetViewElementName(eViewElement ve);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+};
+
+// --- cTemplateViewMenu -------------------------------------------------------------
+
+class cTemplateViewMenu : public cTemplateView {
+private:
+    void SetSubViews(void);
+    void SetViewElements(void);
+    void SetViewLists(void);
+public:
+    cTemplateViewMenu(void);
+    virtual ~cTemplateViewMenu(void);
+    string GetSubViewName(eSubView sv);
+    string GetViewElementName(eViewElement ve);
+    string GetViewListName(eViewList vl);
+    void AddSubView(string sSubView, cTemplateView *subView);
+    void AddPluginView(string plugName, int templNo, cTemplateView *plugView);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+    void AddViewList(string sViewList, cTemplateViewList *viewList);
+    void AddViewTab(cTemplateViewTab *viewTab);
+};
+
+// --- cTemplateViewMessage -------------------------------------------------------------
+
+class cTemplateViewMessage : public cTemplateView {
+private:
+    void SetViewElements(void);
+public:
+    cTemplateViewMessage(void);
+    virtual ~cTemplateViewMessage(void);
+    string GetViewElementName(eViewElement ve);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+};
+
+// --- cTemplateViewReplay -------------------------------------------------------------
+
+class cTemplateViewReplay : public cTemplateView {
+private:
+    void SetViewElements(void);
+public:
+    cTemplateViewReplay(void);
+    virtual ~cTemplateViewReplay(void);
+    string GetViewElementName(eViewElement ve);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+};
+
+// --- cTemplateViewVolume -------------------------------------------------------------
+
+class cTemplateViewVolume : public cTemplateView {
+private:
+    void SetViewElements(void);
+public:
+    cTemplateViewVolume(void);
+    virtual ~cTemplateViewVolume(void);
+    string GetViewElementName(eViewElement ve);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+};
+
+// --- cTemplateViewAudioTracks -------------------------------------------------------------
+
+class cTemplateViewAudioTracks : public cTemplateView {
+private:
+    void SetViewElements(void);
+    void SetViewLists(void);
+public:
+    cTemplateViewAudioTracks(void);
+    virtual ~cTemplateViewAudioTracks(void);
+    string GetViewElementName(eViewElement ve);
+    string GetViewListName(eViewList vl);
+    void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
+    void AddViewList(string sViewList, cTemplateViewList *viewList);
+};
+
+#endif //__TEMPLATEVIEW_H
diff --git a/libtemplate/templateviewelement.c b/libtemplate/templateviewelement.c
new file mode 100644
index 0000000..1a2ef6e
--- /dev/null
+++ b/libtemplate/templateviewelement.c
@@ -0,0 +1,135 @@
+#include "templateviewelement.h"
+#include "../config.h"
+
+cTemplateViewElement::cTemplateViewElement(void) {
+    debugTokens = false;
+    parameters = NULL;
+    containerX = 0;
+    containerY = 0;
+    containerWidth = 0;
+    containerHeight = 0;
+    pixOffset = -1;
+}
+
+cTemplateViewElement::~cTemplateViewElement(void) {
+    if (parameters)
+        delete parameters;
+    for (vector<cTemplatePixmap*>::iterator it = viewPixmaps.begin(); it != viewPixmaps.end(); it++) {
+        delete (*it);
+    }
+}
+
+void cTemplateViewElement::SetContainer(int x, int y, int width, int height) { 
+    containerX = x;
+    containerY = y;
+    containerWidth = width; 
+    containerHeight = height; 
+}
+
+void cTemplateViewElement::SetGlobals(cGlobals *globals) { 
+    this->globals = globals;
+    for (vector<cTemplatePixmap*>::iterator pix = viewPixmaps.begin(); pix != viewPixmaps.end(); pix++) {
+        (*pix)->SetGlobals(globals);
+    }
+}
+
+void cTemplateViewElement::SetParameters(vector<pair<string, string> > &params) {
+    parameters = new cTemplateFunction(ftViewElement);
+    parameters->SetGlobals(globals);
+    parameters->SetParameters(params);
+}
+
+bool cTemplateViewElement::CalculateParameters(void) {
+    if (!parameters)
+        return true;
+    bool paramsValid = true;
+    parameters->SetContainer(containerX, containerY, containerWidth, containerHeight);
+    parameters->SetGlobals(globals);
+    paramsValid = parameters->CalculateParameters();
+
+    return paramsValid;
+}
+
+bool cTemplateViewElement::CalculatePixmapParameters(void) {
+    bool paramsValid = true;
+    for (vector<cTemplatePixmap*>::iterator pix = viewPixmaps.begin(); pix != viewPixmaps.end(); pix++) {
+        (*pix)->SetContainer(containerX, containerY, containerWidth, containerHeight);
+        (*pix)->SetGlobals(globals);
+        paramsValid = paramsValid && (*pix)->CalculateParameters();
+    }
+    return paramsValid;
+}
+
+bool cTemplateViewElement::CalculatePixmapParametersList(int orientation, int numElements) {
+    bool paramsValid = true;
+    for (vector<cTemplatePixmap*>::iterator pix = viewPixmaps.begin(); pix != viewPixmaps.end(); pix++) {
+        (*pix)->SetContainer(containerX, containerY, containerWidth, containerHeight);
+        (*pix)->SetGlobals(globals);
+        if (orientation == orHorizontal) {
+            if (numElements > 0) {
+                int width = containerWidth / numElements;
+                (*pix)->SetWidth(width);
+            }
+        } else if (orientation == orVertical) {
+            if (numElements > 0) {
+                int height = containerHeight / numElements;
+                (*pix)->SetHeight(height);
+            }
+        } 
+        paramsValid = paramsValid && (*pix)->CalculateParameters();
+    }
+    return paramsValid;
+}
+
+int cTemplateViewElement::GetNumericParameter(eParamType type) {
+    if (!parameters)
+        return -1;
+    return parameters->GetNumericParameter(type);
+}
+
+void cTemplateViewElement::InitIterator(void) {
+    pixIterator = viewPixmaps.begin();
+}
+
+cTemplatePixmap *cTemplateViewElement::GetNextPixmap(void) {
+    if (pixIterator == viewPixmaps.end())
+        return NULL;
+    cTemplatePixmap *pix = *pixIterator;
+    pixIterator++;
+    return pix; 
+}
+
+cTemplateFunction *cTemplateViewElement::GetFunction(string name) {
+    InitIterator();
+    cTemplatePixmap *pix = NULL;
+    while (pix = GetNextPixmap()) {
+        pix->InitIterator();
+        cTemplateFunction *func = NULL;
+        while(func = pix->GetNextFunction()) {
+            if (func->GetType() == ftDrawText) {
+                string funcName = func->GetParameter(ptName);
+                if (!funcName.compare(name))
+                    return func;
+            } else {
+                continue;
+            }
+        }
+    }
+    return NULL;
+}
+
+bool cTemplateViewElement::DebugTokens(void) {
+    if (!parameters)
+        return false;
+    return parameters->DoDebug();
+}
+
+
+void cTemplateViewElement::Debug(void) {
+    esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
+    if (parameters)
+        parameters->Debug();
+    for (vector<cTemplatePixmap*>::iterator it = viewPixmaps.begin(); it != viewPixmaps.end(); it++) {
+        (*it)->Debug();
+    }
+}
\ No newline at end of file
diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h
new file mode 100644
index 0000000..744c87a
--- /dev/null
+++ b/libtemplate/templateviewelement.h
@@ -0,0 +1,106 @@
+#ifndef __TEMPLATEVIEWELEMENT_H
+#define __TEMPLATEVIEWELEMENT_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "templatepixmap.h"
+#include "templatefunction.h"
+
+using namespace std;
+
+// --- cTemplateViewElement -------------------------------------------------------------
+
+enum eViewElement {
+    //Common ViewElements
+    veUndefined,
+    veBackground,
+    veDateTime,
+    veTime,
+    veMessage,
+    veDevices,
+    veCurrentWeather,
+    veCustomTokens,
+    //DisplayChannel ViewElements
+    veChannelInfo,
+    veChannelGroup,
+    veEpgInfo,
+    veProgressBar,
+    veProgressBarBack,
+    veStatusInfo,
+    veAudioInfo,
+    veScreenResolution,
+    veSignalQuality,
+    veSignalQualityBack,
+    veScraperContent,
+    //DisplayMenu ViewElements
+    veHeader,
+    veButtons,
+    veDiscUsage,
+    veSystemLoad,
+    veTemperatures,
+    veTimers,
+    veCurrentSchedule,
+    veMenuItem,
+    veMenuCurrentItemDetail,
+    veScrollbar,
+    veDetailHeader,
+    veTabLabels,
+    //DisplayReplay ViewElements
+    veRecTitle,
+    veRecInfo,
+    veRecCurrent,
+    veRecTotal,
+    veRecProgressBar,
+    veCuttingMarks,
+    veControlIcons,
+    veControlIconsModeOnly,
+    veBackgroundModeOnly,
+    veRecJump,
+    veOnPause,
+    veOnPauseModeOnly,
+    //DisplayVolume ViewElements
+    veVolume
+};
+
+class cTemplateViewElement {
+protected:
+    bool debugTokens;
+    cGlobals *globals;
+    cTemplateFunction *parameters;
+    int containerX;
+    int containerY;
+    int containerWidth;
+    int containerHeight;
+    vector<cTemplatePixmap*> viewPixmaps;
+    vector<cTemplatePixmap*>::iterator pixIterator;
+    int pixOffset;
+public:
+    cTemplateViewElement(void);
+    virtual ~cTemplateViewElement(void);
+    void SetParameters(vector<pair<string, string> > &params);
+    bool CalculateParameters(void);
+    bool CalculatePixmapParameters(void);
+    bool CalculatePixmapParametersList(int orientation, int numElements);    
+    int GetNumericParameter(eParamType type);
+    void AddPixmap(cTemplatePixmap *pix) { viewPixmaps.push_back(pix); };
+    virtual void SetGlobals(cGlobals *globals);
+    void SetContainer(int x, int y, int width, int height);
+    void SetPixOffset(int offset) { pixOffset = offset; };
+    int GetPixOffset(void) { return pixOffset; };
+    virtual int GetNumPixmaps(void) { return viewPixmaps.size(); };
+    void InitIterator(void);
+    cTemplatePixmap *GetNextPixmap(void);
+    cTemplateFunction *GetFunction(string name);
+    bool DebugTokens(void);
+    virtual void Debug(void);
+};
+
+#endif //__TEMPLATEVIEWELEMENT_H
\ No newline at end of file
diff --git a/libtemplate/templateviewlist.c b/libtemplate/templateviewlist.c
new file mode 100644
index 0000000..0a6cabc
--- /dev/null
+++ b/libtemplate/templateviewlist.c
@@ -0,0 +1,177 @@
+#include "templateviewlist.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+
+cTemplateViewList::cTemplateViewList(void) : cTemplateViewElement() {
+    listElement = NULL;
+    currentElement = NULL;
+}
+
+cTemplateViewList::~cTemplateViewList(void) {
+    if (listElement)
+        delete listElement;
+    if (currentElement)
+        delete currentElement;
+}
+
+void cTemplateViewList::SetGlobals(cGlobals *globals) { 
+    cTemplateViewElement::SetGlobals(globals);
+    if (listElement)
+        listElement->SetGlobals(globals);
+    if (currentElement)
+        currentElement->SetGlobals(globals);
+}
+
+bool cTemplateViewList::CalculateListParameters(void) {
+    if (!parameters)
+        return false;
+    parameters->SetContainer(containerX, containerY, containerWidth, containerHeight);
+    parameters->SetGlobals(globals);
+    bool paramsValid = parameters->CalculateParameters();
+    if (!listElement)
+        return false;
+    listElement->SetContainer(parameters->GetNumericParameter(ptX),
+                              parameters->GetNumericParameter(ptY),
+                              parameters->GetNumericParameter(ptWidth), 
+                              parameters->GetNumericParameter(ptHeight));
+    paramsValid = listElement->CalculateParameters();
+    paramsValid = listElement->CalculatePixmapParametersList(parameters->GetNumericParameter(ptOrientation), 
+                                                             parameters->GetNumericParameter(ptNumElements));
+    if (!currentElement)
+        return paramsValid;
+    currentElement->SetContainer(parameters->GetNumericParameter(ptX),
+                                 parameters->GetNumericParameter(ptY),
+                                 parameters->GetNumericParameter(ptWidth), 
+                                 parameters->GetNumericParameter(ptHeight));
+    paramsValid = currentElement->CalculateParameters();
+    paramsValid = currentElement->CalculatePixmapParameters();
+    currentElement->SetPixOffset(0);
+    return paramsValid;
+}
+
+bool cTemplateViewList::CalculateListParameters(map < string, int > *intTokens) {
+    if (!parameters)
+        return false;
+    parameters->ClearDynamicParameters();
+    parameters->SetIntTokens(intTokens);
+    parameters->ParseParameters();
+    parameters->UnsetIntTokens();
+
+    listElement->SetContainer(parameters->GetNumericParameter(ptX),
+                              parameters->GetNumericParameter(ptY),
+                              parameters->GetNumericParameter(ptWidth), 
+                              parameters->GetNumericParameter(ptHeight));
+    bool paramsValid = listElement->CalculateParameters();
+    paramsValid = listElement->CalculatePixmapParametersList(parameters->GetNumericParameter(ptOrientation), 
+                                                             parameters->GetNumericParameter(ptNumElements));
+    return paramsValid;
+}
+
+int cTemplateViewList::GetAverageFontWidth(void) {
+    int defaultAverageFontWidth = 20;
+
+    if (!listElement)
+        return defaultAverageFontWidth;
+
+    int numItems = GetNumericParameter(ptNumElements);
+    int listHeight = GetNumericParameter(ptHeight);
+    if (listHeight <= 0)
+        return defaultAverageFontWidth;
+    int itemHeight = (double)listHeight / (double)numItems;
+    string fontFuncName = parameters->GetParameter(ptDeterminateFont);
+
+    cTemplateFunction *fontFunc = listElement->GetFunction(fontFuncName);
+    if (!fontFunc)
+        return defaultAverageFontWidth;
+
+    string fontNameToken = fontFunc->GetParameter(ptFont);
+    string paramFontSize = fontFunc->GetParameter(ptFontSize);
+
+    string fontName = "";
+    if (IsToken(fontNameToken)) {
+        if (!globals->GetFont(fontNameToken, fontName)) {
+            if (!globals->GetFont("{vdrOsd}", fontName)) {
+                return defaultAverageFontWidth;
+            }
+        }
+    } else {
+        //if no token, directly use input
+        fontName = fontNameToken;
+    }
+
+    cNumericParameter pFontSize(paramFontSize);
+    pFontSize.SetGlobals(globals);
+    pFontSize.SetAreaSize(1000, itemHeight);
+    pFontSize.SetVertical();
+    int fontSize = pFontSize.Parse(paramFontSize);
+    if (!pFontSize.Valid())
+        return defaultAverageFontWidth;
+
+    int averageFontWidth = fontManager->Width(fontName, fontSize, "x") + 3;
+    return averageFontWidth;
+}
+
+cFont *cTemplateViewList::GetTextAreaFont(void) {
+    if (!listElement)
+        return NULL;
+
+    int fontWidth = 0;
+    int numItems = GetNumericParameter(ptNumElements);
+    int listHeight = GetNumericParameter(ptHeight);
+    if (listHeight <= 0)
+        return NULL;
+    int itemHeight = (double)listHeight / (double)numItems;
+    string fontFuncName = parameters->GetParameter(ptDeterminateFont);
+
+    cTemplateFunction *fontFunc = listElement->GetFunction(fontFuncName);
+    if (!fontFunc)
+        return NULL;
+
+    string fontNameToken = fontFunc->GetParameter(ptFont);
+    string paramFontSize = fontFunc->GetParameter(ptFontSize);
+
+    string fontName = "";
+    if (IsToken(fontNameToken)) {
+        if (!globals->GetFont(fontNameToken, fontName)) {
+            if (!globals->GetFont("{vdrOsd}", fontName)) {
+                return NULL;
+            }
+        }
+    } else {
+        //if no token, directly use input
+        fontName = fontNameToken;
+    }
+
+    cNumericParameter pFontSize(paramFontSize);
+    pFontSize.SetGlobals(globals);
+    pFontSize.SetAreaSize(1000, itemHeight);
+    pFontSize.SetVertical();
+    int fontSize = pFontSize.Parse(paramFontSize);
+    if (!pFontSize.Valid())
+        return NULL;
+
+    return fontManager->FontUncached(fontName, fontSize);
+}
+
+
+int cTemplateViewList::GetMenuItemWidth(void) {
+    return GetNumericParameter(ptMenuItemWidth);    
+}
+
+
+int cTemplateViewList::GetNumPixmaps(void) {
+    if (!listElement)
+        return 0;
+    return listElement->GetNumPixmaps();
+}
+
+void cTemplateViewList::Debug(void) {
+    if (parameters)
+        parameters->Debug();
+    esyslog("skindesigner: --- listelement: ");
+    if (listElement)
+        listElement->Debug();
+    esyslog("skindesigner: --- currentelement: ");
+    if (currentElement)
+        currentElement->Debug();
+}
\ No newline at end of file
diff --git a/libtemplate/templateviewlist.h b/libtemplate/templateviewlist.h
new file mode 100644
index 0000000..b124a7c
--- /dev/null
+++ b/libtemplate/templateviewlist.h
@@ -0,0 +1,50 @@
+#ifndef __TEMPLATEVIEWLIST_H
+#define __TEMPLATEVIEWLIST_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+
+#include "templateviewelement.h"
+
+using namespace std;
+
+// --- cTemplateViewList -------------------------------------------------------------
+
+enum eViewList {
+    vlUndefined,
+    //DisplayChannel ViewLists
+    vlDvbDeviceInfoList,
+    //DisplayMenu ViewLists
+    vlTimerList,
+    vlMenuItem
+};
+
+class cTemplateViewList : public cTemplateViewElement {
+private:
+    cTemplateViewElement *listElement;
+    cTemplateViewElement *currentElement;
+public:
+    cTemplateViewList(void);
+    ~cTemplateViewList(void);
+    void SetGlobals(cGlobals *globals);
+    void AddListElement(cTemplateViewElement *listElement) { this->listElement = listElement; };
+    void AddCurrentElement(cTemplateViewElement *currentElement) { this->currentElement = currentElement; };
+    bool CalculateListParameters(void);
+    bool CalculateListParameters(map < string, int > *intTokens);
+    cTemplateViewElement *GetListElement(void) { return listElement; };
+    cTemplateViewElement *GetListElementCurrent(void) { return currentElement; };
+    int GetAverageFontWidth(void);
+    cFont *GetTextAreaFont(void);
+    int GetMenuItemWidth(void);
+    int GetNumPixmaps(void);
+    void Debug(void);
+};
+
+#endif //__TEMPLATEVIEWLIST_H
\ No newline at end of file
diff --git a/libtemplate/templateviewtab.c b/libtemplate/templateviewtab.c
new file mode 100644
index 0000000..1e9f463
--- /dev/null
+++ b/libtemplate/templateviewtab.c
@@ -0,0 +1,38 @@
+#include "templateviewtab.h"
+
+cTemplateViewTab::cTemplateViewTab(void) : cTemplatePixmap() {
+    scrollStep = -1;
+}
+
+cTemplateViewTab::~cTemplateViewTab(void) {
+}
+
+int cTemplateViewTab::GetScrollStep(void) {
+    if (scrollStep > 0)
+        return scrollStep;
+    int pixWidth = GetNumericParameter(ptWidth);
+    int pixHeight = GetNumericParameter(ptHeight);
+    string scrollHeight = parameters->GetParameter(ptScrollHeight);
+
+    cNumericParameter p(scrollHeight);
+    p.SetAreaSize(pixWidth, pixHeight);
+    string parsedValue = "";
+    scrollStep = p.Parse(parsedValue);
+    if (scrollStep < 1)
+        scrollStep = 50;
+    return scrollStep;
+}
+
+string cTemplateViewTab::GetName(void) {
+    return parameters->GetParameter(ptName);
+}
+
+void cTemplateViewTab::SetName(string trans) {
+    parameters->SetParameter(ptName, trans);
+}
+
+void cTemplateViewTab::Debug(void) {
+    esyslog("skindesigner: cTemplateViewTab Debug %s", GetName().c_str());
+    cTemplatePixmap::Debug();
+    esyslog("skindesigner: -------------------------------------------------------");
+}
diff --git a/libtemplate/templateviewtab.h b/libtemplate/templateviewtab.h
new file mode 100644
index 0000000..8514cad
--- /dev/null
+++ b/libtemplate/templateviewtab.h
@@ -0,0 +1,31 @@
+#ifndef __TEMPLATEVIEWTAB_H
+#define __TEMPLATEVIEWTAB_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+
+#include "templatepixmap.h"
+
+using namespace std;
+
+// --- cTemplateViewTab -------------------------------------------------------------
+
+class cTemplateViewTab : public cTemplatePixmap {
+private:
+    int scrollStep;
+public:
+    cTemplateViewTab(void);
+    ~cTemplateViewTab(void);
+    int GetScrollStep(void);
+    string GetName(void);
+    void SetName(string trans);
+    void Debug(void);
+};
+
+#endif //__TEMPLATEVIEWTAB_H
\ No newline at end of file
diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c
new file mode 100644
index 0000000..dd5a39b
--- /dev/null
+++ b/libtemplate/xmlparser.c
@@ -0,0 +1,954 @@
+#include "xmlparser.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+
+using namespace std;
+
+void SkinDesignerXMLErrorHandler (void * userData, xmlErrorPtr error) {
+    esyslog("skindesigner: Error in XML: %s", error->message);
+}
+
+cXmlParser::cXmlParser(void) {
+    doc = NULL;
+    root = NULL;
+    ctxt = NULL;
+    globals = NULL;
+    skinSetup = NULL;
+
+    initGenericErrorDefaultFunc(NULL);
+    xmlSetStructuredErrorFunc(NULL, SkinDesignerXMLErrorHandler);
+    ctxt = xmlNewParserCtxt();
+}
+
+cXmlParser::~cXmlParser() {
+    DeleteDocument();
+    xmlFreeParserCtxt(ctxt);
+}
+
+/*********************************************************************
+* PUBLIC Functions
+*********************************************************************/
+bool cXmlParser::ReadView(cTemplateView *view, string xmlFile) {
+    this->view = view;
+
+    string xmlPath = GetPath(xmlFile);
+    
+    if (ctxt == NULL) {
+        esyslog("skindesigner: Failed to allocate parser context");
+        return false;
+    }
+    
+    doc = xmlCtxtReadFile(ctxt, xmlPath.c_str(), NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID);
+    
+    if (doc == NULL) {
+        esyslog("skindesigner: ERROR: TemplateView %s not parsed successfully.", xmlPath.c_str());
+        return false;
+    }
+    if (ctxt->valid == 0) {
+        esyslog("skindesigner: Failed to validate %s", xmlPath.c_str());
+        return false;
+    }
+
+    root = xmlDocGetRootElement(doc);
+
+    if (root == NULL) {
+        esyslog("skindesigner: ERROR: TemplateView %s is empty", xmlPath.c_str());
+        return false;
+    }
+
+    if (xmlStrcmp(root->name, (const xmlChar *) view->GetViewName())) {
+        return false;
+    }
+    return true;
+}
+
+bool cXmlParser::ReadPluginView(string plugName, int templateNumber, string templateName) {
+
+    string xmlPath = GetPath(templateName);
+
+    if (!FileExists(xmlPath) || ctxt == NULL) {
+        return false;
+    }
+    DeleteDocument();
+    doc = xmlCtxtReadFile(ctxt, xmlPath.c_str(), NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID);
+    
+    if (doc == NULL) {
+        return false;
+    }
+    if (ctxt->valid == 0) {
+        esyslog("skindesigner: Failed to validate %s", xmlPath.c_str());
+        return false;
+    }
+
+    root = xmlDocGetRootElement(doc);
+
+    if (root == NULL) {
+        return false;
+    }
+
+    return true;
+}
+
+bool cXmlParser::ReadGlobals(cGlobals *globals, string xmlFile, bool mandatory) {
+    this->globals = globals;
+    
+    string xmlPath = GetPath(xmlFile);
+
+    if (ctxt == NULL) {
+        esyslog("skindesigner: Failed to allocate parser context");
+        return false;
+    }
+    
+    doc = xmlCtxtReadFile(ctxt, xmlPath.c_str(), NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID);
+
+    if (doc == NULL) {
+        if (mandatory) {
+            esyslog("skindesigner: ERROR: Globals %s not parsed successfully.", xmlPath.c_str());
+        } else {
+            dsyslog("skindesigner: Globals %s not parsed successfully.", xmlPath.c_str());
+        }
+        return false;
+    }
+
+    root = xmlDocGetRootElement(doc);
+
+    if (ctxt->valid == 0) {
+        if (mandatory) {
+            esyslog("skindesigner: ERROR: Failed to validate %s", xmlPath.c_str());
+        } else {
+            dsyslog("skindesigner: Failed to validate %s", xmlPath.c_str());
+        }
+        return false;
+    }
+
+    if (root == NULL) {
+        if (mandatory) {
+            esyslog("skindesigner: ERROR: Globals %s is empty", xmlPath.c_str());
+        } 
+        return false;
+    }
+
+    if (xmlStrcmp(root->name, (const xmlChar *) "globals")) {
+        return false;
+    }
+    return true;
+}
+
+bool cXmlParser::ReadSkinSetup(cSkinSetup *skinSetup, string xmlFile) {
+    this->skinSetup = skinSetup;
+
+    if (!FileExists(xmlFile))
+        return false;
+    if (ctxt == NULL) {
+        esyslog("skindesigner: Failed to allocate parser context");
+        return false;
+    }
+    
+    doc = xmlCtxtReadFile(ctxt, xmlFile.c_str(), NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID);
+
+    if (doc == NULL ) {
+        esyslog("skindesigner: ERROR: skin setup %s not parsed successfully.", xmlFile.c_str());
+        return false;
+    }
+
+    root = xmlDocGetRootElement(doc);
+
+    if (ctxt->valid == 0) {
+        esyslog("skindesigner: Failed to validate %s", xmlFile.c_str());
+        return false;
+    }
+    if (root == NULL) {
+        return false;
+    }
+    if (xmlStrcmp(root->name, (const xmlChar *) "setup")) {
+        return false;
+    }
+    
+    return true;
+}
+
+
+bool cXmlParser::ParseView(void) {
+    vector<pair<string, string> > rootAttribs;
+    ParseAttributes(root->properties, root, rootAttribs);
+
+    if (!view)
+        return false;
+
+    view->SetParameters(rootAttribs);
+
+    xmlNodePtr node = root->xmlChildrenNode;
+
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (view->ValidSubView((const char*)node->name)) {
+            ParseSubView(node);
+        } else if (view->ValidViewElement((const char*)node->name)) {
+            xmlAttrPtr attr = node->properties;
+            vector<pair<string, string> > attribs;
+            ParseAttributes(attr, node, attribs);
+            ParseViewElement(node->name, node->xmlChildrenNode, attribs);
+        } else if (view->ValidViewList((const char*)node->name)) {
+            ParseViewList(node);
+        } else {
+            return false;
+        }
+
+        node = node->next;
+    }
+
+    return true;
+    
+}
+
+bool cXmlParser::ParsePluginView(string plugName, int templateNumber) {
+
+    cTemplateView *plugView = new cTemplateViewMenu();
+    view->AddPluginView(plugName, templateNumber, plugView);
+
+    vector<pair<string, string> > attribs;
+    ParseAttributes(root->properties, root, attribs);
+
+    plugView->SetParameters(attribs);
+
+    xmlNodePtr childNode = root->xmlChildrenNode;
+
+    while (childNode != NULL) {
+
+        if (childNode->type != XML_ELEMENT_NODE) {
+            childNode = childNode->next;
+            continue;
+        }
+
+        if (plugView->ValidViewElement((const char*)childNode->name)) {
+            vector<pair<string, string> > attribs;
+            ParseViewElement(childNode->name, childNode->xmlChildrenNode, attribs, plugView);
+        } else if (plugView->ValidViewList((const char*)childNode->name)) {
+            ParseViewList(childNode, plugView);
+        } else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
+            ParseViewTab(childNode, plugView);           
+        } else {
+            return false;
+        }
+
+        childNode = childNode->next;
+    }
+
+    return true;
+}
+
+bool cXmlParser::ParseGlobals(void) {
+    xmlNodePtr node = root->xmlChildrenNode;
+    while (node != NULL) {
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (!xmlStrcmp(node->name, (const xmlChar *) "colors")) {
+            ParseGlobalColors(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "variables")) {
+            ParseGlobalVariables(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "fonts")) {
+            ParseGlobalFonts(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "translations")) {
+            ParseTranslations(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        }
+        node = node->next;
+    }
+
+    return true;
+
+}
+
+bool cXmlParser::ParseSkinSetup(string skin) {
+    xmlNodePtr node = root->xmlChildrenNode;
+
+    while (node != NULL) {
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (!xmlStrcmp(node->name, (const xmlChar *) "menu")) {
+            ParseSetupMenu(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "translations")) {
+            ParseTranslations(node->xmlChildrenNode);
+            node = node->next;
+            continue;
+        }
+        node = node->next;
+    }
+
+    return true;
+
+}
+
+void cXmlParser::DeleteDocument(void) {
+    if (doc) {
+        xmlFreeDoc(doc);
+        doc = NULL;
+    }
+}
+
+/*********************************************************************
+* PRIVATE Functions
+*********************************************************************/
+
+string cXmlParser::GetPath(string xmlFile) {
+    string activeSkin = Setup.OSDSkin;
+    string activeTheme = Setup.OSDTheme;
+    string path = "";
+    if (!xmlFile.compare("globals.xml")) {
+        path = *cString::sprintf("%s%s/%s", *config.skinPath, activeSkin.c_str(), xmlFile.c_str());
+    } else if (!xmlFile.compare("theme.xml")) {
+        path = *cString::sprintf("%s%s/themes/%s/%s", *config.skinPath, activeSkin.c_str(), activeTheme.c_str(), xmlFile.c_str());
+    } else if (!xmlFile.compare("setup.xml")) {
+        path = *cString::sprintf("%s%s/%s", *config.skinPath, activeSkin.c_str(), xmlFile.c_str());
+    } else {
+        path = *cString::sprintf("%s%s/xmlfiles/%s", *config.skinPath, activeSkin.c_str(), xmlFile.c_str());
+    }
+    return path;
+}
+
+void cXmlParser::ParseSetupMenu(xmlNodePtr node) {
+    if (!node)
+        return;
+    if (!skinSetup)
+        return;
+
+    while (node != NULL) {
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+
+        if (!xmlStrcmp(node->name, (const xmlChar *) "parameter")) {
+            ParseSetupParameter(node);
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "submenu")) {
+            xmlAttrPtr attr = node->properties;
+            xmlChar *subMenuName = NULL;
+            xmlChar *subDisplayText = NULL;
+            while (NULL != attr) {
+                if (!xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+                    subMenuName = xmlGetProp(node, attr->name);
+                } else if (!xmlStrcmp(attr->name, (const xmlChar *) "displaytext")) {
+                    subDisplayText = xmlGetProp(node, attr->name);
+                }
+                attr = attr->next;
+            }
+            skinSetup->SetSubMenu(subMenuName, subDisplayText);
+            ParseSetupMenu(node->xmlChildrenNode);
+            if (subMenuName)
+                xmlFree(subMenuName);
+            if (subDisplayText)
+                xmlFree(subDisplayText);
+        }
+        node = node->next;
+    }
+    skinSetup->SubMenuDone();
+}
+
+void cXmlParser::ParseSetupParameter(xmlNodePtr node) {
+    if (!node)
+        return;
+    if (!skinSetup)
+        return;
+
+    xmlAttrPtr attr = node->properties;
+    if (attr == NULL) {
+        return;
+    }
+    xmlChar *paramType = NULL;
+    xmlChar *paramName = NULL;
+    xmlChar *paramDisplayText = NULL;
+    xmlChar *paramMin = NULL;
+    xmlChar *paramMax = NULL;
+    xmlChar *paramValue = NULL;
+    while (NULL != attr) {
+        if (!xmlStrcmp(attr->name, (const xmlChar *) "type")) {
+            paramType = xmlGetProp(node, attr->name);
+        } else if (!xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+            paramName = xmlGetProp(node, attr->name);
+        } else if (!xmlStrcmp(attr->name, (const xmlChar *) "displaytext")) {
+            paramDisplayText = xmlGetProp(node, attr->name);
+        } else if (!xmlStrcmp(attr->name, (const xmlChar *) "min")) {
+            paramMin = xmlGetProp(node, attr->name);
+        } else if (!xmlStrcmp(attr->name, (const xmlChar *) "max")) {
+            paramMax = xmlGetProp(node, attr->name);
+        }
+        attr = attr->next;
+    }
+    paramValue = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
+    skinSetup->SetParameter(paramType, paramName, paramDisplayText, paramMin, paramMax, paramValue);
+    if (paramType)
+        xmlFree(paramType);
+    if (paramName)
+        xmlFree(paramName);
+    if (paramDisplayText)
+        xmlFree(paramDisplayText);
+    if (paramMin)
+        xmlFree(paramMin);
+    if (paramMax)
+        xmlFree(paramMax);
+    if (paramValue)
+        xmlFree(paramValue);
+}
+
+void cXmlParser::ParseGlobalColors(xmlNodePtr node) {
+    if (!node)
+        return;
+    
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (xmlStrcmp(node->name, (const xmlChar *) "color")) {
+            node = node->next;
+            continue;
+        }
+        xmlAttrPtr attr = node->properties;
+        if (attr == NULL) {
+            node = node->next;
+            continue;
+        }
+        xmlChar *colName = NULL;
+        xmlChar *colValue = NULL;
+        bool ok = false;
+        while (NULL != attr) {
+            if (xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+                attr = attr->next;
+                continue;
+            }
+            ok = true;
+            colName = xmlGetProp(node, attr->name);
+            attr = attr->next;
+        }
+        if (ok) {
+            colValue = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
+            if (colName && colValue)
+                InsertColor((const char*)colName, (const char*)colValue);
+        }
+        if (colName)
+            xmlFree(colName);
+        if (colValue)
+            xmlFree(colValue);
+        node = node->next;
+    }
+}
+
+void cXmlParser::InsertColor(string name, string value) {
+    if (value.size() != 8)
+        return;
+    std::stringstream str;
+    str << value;
+    tColor colVal;
+    str >> std::hex >> colVal;
+    globals->AddColor(name, colVal);
+}
+
+void cXmlParser::ParseGlobalVariables(xmlNodePtr node) {
+    if (!node)
+        return;
+    
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (xmlStrcmp(node->name, (const xmlChar *) "var")) {
+            node = node->next;
+            continue;
+        }
+        xmlAttrPtr attr = node->properties;
+        if (attr == NULL) {
+            node = node->next;
+            continue;
+        }
+        xmlChar *varName = NULL;
+        xmlChar *varType = NULL;
+        xmlChar *varValue = NULL;
+        while (NULL != attr) {
+            if (!xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+                varName = xmlGetProp(node, attr->name);
+            } else if (!xmlStrcmp(attr->name, (const xmlChar *) "type")) {
+                varType = xmlGetProp(node, attr->name);
+            } else {
+                attr = attr->next;
+                continue;               
+            }
+            attr = attr->next;
+        }
+        varValue = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
+        if (varName && varType && varValue)
+            InsertVariable((const char*)varName, (const char*)varType, (const char*)varValue);
+        if (varName)
+            xmlFree(varName);
+        if (varType)
+            xmlFree(varType);
+        if (varValue)
+            xmlFree(varValue);
+        node = node->next;
+    }
+}
+
+void cXmlParser::InsertVariable(string name, string type, string value) {
+    if (!type.compare("int")) {
+        int val = atoi(value.c_str());
+        globals->AddInt(name, val);
+    } else if (!type.compare("double")) {
+        globals->AddDouble(name, value);
+    } else if (!type.compare("string")) {
+        globals->AddString(name, value);
+    }
+}
+
+void cXmlParser::ParseGlobalFonts(xmlNodePtr node) {
+    if (!node)
+        return;
+    
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (xmlStrcmp(node->name, (const xmlChar *) "font")) {
+            node = node->next;
+            continue;
+        }
+        xmlAttrPtr attr = node->properties;
+        if (attr == NULL) {
+            node = node->next;
+            continue;
+        }
+        xmlChar *fontName = NULL;
+        xmlChar *fontValue = NULL;
+        bool ok = false;
+        while (NULL != attr) {
+            if (xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+                attr = attr->next;
+                continue;
+            }
+            ok = true;
+            fontName = xmlGetProp(node, attr->name);
+            attr = attr->next;
+        }
+        if (ok) {
+            fontValue = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
+            if (fontName && fontValue) {
+                string fN = (const char*)fontName;
+                string fV = (const char*)fontValue;
+                globals->AddFont(fN, fV);
+            }
+        }
+        if (fontName)
+            xmlFree(fontName);
+        if (fontValue)
+            xmlFree(fontValue);
+        node = node->next;
+    }
+}
+
+void cXmlParser::ParseTranslations(xmlNodePtr node) {
+    if (!node)
+        return;
+    
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (xmlStrcmp(node->name, (const xmlChar *) "token")) {
+            node = node->next;
+            continue;
+        }
+        xmlAttrPtr attr = node->properties;
+        if (attr == NULL) {
+            node = node->next;
+            continue;
+        }
+        xmlChar *tokenName;
+        bool ok = false;
+        while (NULL != attr) {
+            if (xmlStrcmp(attr->name, (const xmlChar *) "name")) {
+                attr = attr->next;
+                continue;
+            }
+            ok = true;
+            tokenName = xmlGetProp(node, attr->name);
+            attr = attr->next;
+        }
+        if (!ok)
+            continue;
+        map < string, string > tokenTranslations;
+        xmlNodePtr nodeTrans = node->xmlChildrenNode;
+        while (nodeTrans != NULL) {
+            if (nodeTrans->type != XML_ELEMENT_NODE) {
+                nodeTrans = nodeTrans->next;
+                continue;
+            }
+            xmlChar *language = NULL;
+            if (xmlStrcmp(nodeTrans->name, (const xmlChar *) "trans")) {
+                nodeTrans = nodeTrans->next;
+                continue;
+            }
+            xmlAttrPtr attrTrans = nodeTrans->properties;
+            if (attrTrans == NULL) {
+                nodeTrans = nodeTrans->next;
+                continue;
+            }
+            ok = false;
+            
+            while (NULL != attrTrans) {
+                if (!ok && xmlStrcmp(attrTrans->name, (const xmlChar *) "lang")) {
+                    attrTrans = attrTrans->next;
+                    continue;
+                }
+                ok = true;
+                language = xmlGetProp(nodeTrans, attrTrans->name);
+                attrTrans = attrTrans->next;
+            }
+            if (!ok)
+                continue;
+            xmlChar *value = NULL;
+            value = xmlNodeListGetString(doc, nodeTrans->xmlChildrenNode, 1);
+            if (language && value)
+                tokenTranslations.insert(pair<string, string>((const char*)language, (const char*)value));
+            if (language)
+                xmlFree(language);
+            if (value)
+                xmlFree(value);
+            nodeTrans = nodeTrans->next;
+        }
+        if (globals) {
+            globals->AddTranslation((const char*)tokenName, tokenTranslations);
+        } else if (skinSetup) {
+            skinSetup->SetTranslation((const char*)tokenName, tokenTranslations);
+        }
+        xmlFree(tokenName);
+        node = node->next;
+    }
+}
+
+bool cXmlParser::ParseSubView(xmlNodePtr node) {
+    if (!node)
+        return false;
+    
+    if (!view)
+        return false;
+
+    cTemplateView *subView = new cTemplateViewMenu();
+    view->AddSubView((const char*)node->name, subView);
+
+    vector<pair<string, string> > subViewAttribs;
+    ParseAttributes(node->properties, node, subViewAttribs);
+
+    subView->SetParameters(subViewAttribs);
+
+    xmlNodePtr childNode = node->xmlChildrenNode;
+
+    while (childNode != NULL) {
+
+        if (childNode->type != XML_ELEMENT_NODE) {
+            childNode = childNode->next;
+            continue;
+        }
+
+        if (subView->ValidViewElement((const char*)childNode->name)) {
+            xmlAttrPtr attr = childNode->properties;
+            vector<pair<string, string> > attribs;
+            ParseAttributes(attr, childNode, attribs);
+            ParseViewElement(childNode->name, childNode->xmlChildrenNode, attribs, subView);
+        } else if (subView->ValidViewList((const char*)childNode->name)) {
+            ParseViewList(childNode, subView);
+        } else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
+            ParseViewTab(childNode, subView);           
+        } else {
+            return false;
+        }
+
+        childNode = childNode->next;
+    }
+
+    
+
+    return true;
+
+}
+
+void cXmlParser::ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, vector<pair<string, string> > &attributes, cTemplateView *subView) {
+    if (!node)
+        return;
+    
+    if (!view)
+        return;
+
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+
+        if (xmlStrcmp(node->name, (const xmlChar *) "area") && xmlStrcmp(node->name, (const xmlChar *) "areascroll")) {
+            esyslog("skindesigner: invalid tag \"%s\"", node->name);
+            node = node->next;
+            continue;
+        }
+
+        xmlAttrPtr attr = node->properties;
+        vector<pair<string, string> > attribs;
+        ParseAttributes(attr, node, attribs);
+
+        cTemplatePixmap *pix = new cTemplatePixmap();
+        if (!xmlStrcmp(node->name, (const xmlChar *) "areascroll")) {
+            pix->SetScrolling();
+        }
+        pix->SetParameters(attribs);
+        ParseFunctionCalls(node->xmlChildrenNode, pix);
+        if (subView)
+            subView->AddPixmap((const char*)viewElement, pix, attributes);
+        else
+            view->AddPixmap((const char*)viewElement, pix, attributes);
+        
+        node = node->next;
+    }
+}
+
+void cXmlParser::ParseViewList(xmlNodePtr parentNode, cTemplateView *subView) {
+    if (!parentNode || !view)
+        return;
+    
+    xmlAttrPtr attr = parentNode->properties;
+    vector<pair<string, string> > attribs;
+    ParseAttributes(attr, parentNode, attribs);
+
+    cTemplateViewList *viewList = new cTemplateViewList();
+    viewList->SetGlobals(globals);
+    viewList->SetParameters(attribs);
+
+    xmlNodePtr node = parentNode->xmlChildrenNode;
+
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+
+        if (!xmlStrcmp(node->name, (const xmlChar *) "currentelement")) {
+            xmlNodePtr childNode = node->xmlChildrenNode;
+            if (!childNode)
+                continue;
+            cTemplateViewElement *currentElement = new cTemplateViewElement();
+            xmlAttrPtr attrCur = node->properties;
+            vector<pair<string, string> > attribsCur;
+            ParseAttributes(attrCur, node, attribsCur);
+            currentElement->SetGlobals(globals);
+            currentElement->SetParameters(attribsCur);
+            while (childNode != NULL) {
+                if (childNode->type != XML_ELEMENT_NODE) {
+                    childNode = childNode->next;
+                    continue;
+                }
+                if ((!xmlStrcmp(childNode->name, (const xmlChar *) "area")) || (!xmlStrcmp(childNode->name, (const xmlChar *) "areascroll"))) {
+                    xmlAttrPtr attrPix = childNode->properties;
+                    vector<pair<string, string> > attribsPix;
+                    ParseAttributes(attrPix, childNode, attribsPix);
+                    cTemplatePixmap *pix = new cTemplatePixmap();
+                    pix->SetParameters(attribsPix);
+                    ParseFunctionCalls(childNode->xmlChildrenNode, pix);
+                    if (!xmlStrcmp(childNode->name, (const xmlChar *) "areascroll")) {
+                        pix->SetScrolling();
+                    }
+                    currentElement->AddPixmap(pix);
+                }
+                childNode = childNode->next;
+            }
+            viewList->AddCurrentElement(currentElement);
+        } else if (!xmlStrcmp(node->name, (const xmlChar *) "listelement")) {
+            xmlNodePtr childNode = node->xmlChildrenNode;
+            if (!childNode)
+                continue;
+            cTemplateViewElement *listElement = new cTemplateViewElement();
+            xmlAttrPtr attrList = node->properties;
+            vector<pair<string, string> > attribsList;
+            ParseAttributes(attrList, node, attribsList);
+            listElement->SetGlobals(globals);
+            listElement->SetParameters(attribsList);
+            while (childNode != NULL) {
+                if (childNode->type != XML_ELEMENT_NODE) {
+                    childNode = childNode->next;
+                    continue;
+                }
+                if ((!xmlStrcmp(childNode->name, (const xmlChar *) "area")) || (!xmlStrcmp(childNode->name, (const xmlChar *) "areascroll"))) {
+                    xmlAttrPtr attrPix = childNode->properties;
+                    vector<pair<string, string> > attribsPix;
+                    ParseAttributes(attrPix, childNode, attribsPix);
+                    cTemplatePixmap *pix = new cTemplatePixmap();
+                    pix->SetParameters(attribsPix);
+                    ParseFunctionCalls(childNode->xmlChildrenNode, pix);
+                    if (!xmlStrcmp(childNode->name, (const xmlChar *) "areascroll")) {
+                        pix->SetScrolling();
+                    }
+                    listElement->AddPixmap(pix);
+                }
+                childNode = childNode->next;
+            }
+            viewList->AddListElement(listElement);
+        } else {
+            node = node->next;
+            continue;
+        }
+        node = node->next;
+    }
+    if (subView)
+        subView->AddViewList((const char*)parentNode->name, viewList);
+    else
+        view->AddViewList((const char*)parentNode->name, viewList);
+}
+
+void cXmlParser::ParseViewTab(xmlNodePtr parentNode, cTemplateView *subView) {
+    if (!parentNode || !view || !subView)
+        return;
+
+    xmlAttrPtr attr = parentNode->properties;
+    vector<pair<string, string> > attribs;
+    ParseAttributes(attr, parentNode, attribs);
+
+    cTemplateViewTab *viewTab = new cTemplateViewTab();
+    viewTab->SetGlobals(globals);
+    viewTab->SetParameters(attribs);
+    viewTab->SetScrolling();
+    xmlNodePtr node = parentNode->xmlChildrenNode;
+    ParseFunctionCalls(node, viewTab);
+
+    subView->AddViewTab(viewTab);
+}
+
+void cXmlParser::ParseFunctionCalls(xmlNodePtr node, cTemplatePixmap *pix) {
+    if (!node)
+        return;
+
+    if (!view)
+        return;
+
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+
+        if (!xmlStrcmp(node->name, (const xmlChar *) "loop")) {
+            xmlNodePtr childNode = node->xmlChildrenNode;
+            if (!childNode)
+                continue;
+            xmlAttrPtr attr = node->properties;
+            vector<pair<string, string> > attribs;
+            ParseAttributes(attr, node, attribs);
+            cTemplateLoopFunction *loopFunc = new cTemplateLoopFunction();
+            loopFunc->SetParameters(attribs);
+            ParseLoopFunctionCalls(childNode, loopFunc);
+            pix->AddLoopFunction(loopFunc);
+            node = node->next;
+        } else if (view->ValidFunction((const char*)node->name)) {
+            xmlAttrPtr attr = node->properties;
+            vector<pair<string, string> > attribs;
+            ParseAttributes(attr, node, attribs);
+            pix->AddFunction((const char*)node->name, attribs);
+            node = node->next;
+        } else {
+            node = node->next;
+            continue;           
+        }
+
+    }
+}
+
+void cXmlParser::ParseLoopFunctionCalls(xmlNodePtr node, cTemplateLoopFunction *loopFunc) {
+    if (!node)
+        return;
+
+    if (!view)
+        return;
+
+    while (node != NULL) {
+
+        if (node->type != XML_ELEMENT_NODE) {
+            node = node->next;
+            continue;
+        }
+        if (view->ValidFunction((const char*)node->name)) {
+            xmlAttrPtr attr = node->properties;
+            vector<pair<string, string> > attribs;
+            ParseAttributes(attr, node, attribs);
+            loopFunc->AddFunction((const char*)node->name, attribs);
+            node = node->next;
+        } else {
+            node = node->next;
+            continue;           
+        }
+
+    }
+}
+
+bool cXmlParser::ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<string, string> > &attribs) {
+    if (attr == NULL) {
+        return false;
+    }
+
+    if (!view)
+        return false;
+
+    while (NULL != attr) {
+
+        string name = (const char*)attr->name;
+        if (!name.compare("debug")) {
+            attribs.push_back(pair<string, string>((const char*)attr->name, "true"));
+            attr = attr->next;
+            continue;
+        }
+
+        xmlChar *value = NULL;
+        value = xmlGetProp(node, attr->name);
+        if (!view->ValidAttribute((const char*)node->name, (const char*)attr->name)) {
+            esyslog("skindesigner: unknown attribute %s in %s", (const char*)attr->name, (const char*)node->name);
+            attr = attr->next;
+            if (value)
+                xmlFree(value);
+            continue;
+        }
+        if (value)
+            attribs.push_back(pair<string, string>((const char*)attr->name, (const char*)value));
+        attr = attr->next;
+        if (value)
+            xmlFree(value);
+    }
+    return true;
+}
+
+void cXmlParser::InitLibXML() {
+    xmlInitParser();
+}
+
+void cXmlParser::CleanupLibXML() {
+    xmlCleanupParser();
+}
diff --git a/libtemplate/xmlparser.h b/libtemplate/xmlparser.h
new file mode 100644
index 0000000..20f6763
--- /dev/null
+++ b/libtemplate/xmlparser.h
@@ -0,0 +1,65 @@
+#ifndef __XMLPARSER_H
+#define __XMLPARSER_H
+
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xmlerror.h>
+#include <vdr/plugin.h>
+
+#include "templateview.h"
+#include "templateviewlist.h"
+#include "templateviewtab.h"
+#include "../libcore/skinsetup.h"
+
+using namespace std;
+
+// --- cXmlParser -------------------------------------------------------------
+
+class cXmlParser {
+private:
+    cTemplateView *view;
+    cGlobals *globals;
+    cSkinSetup *skinSetup;
+    xmlParserCtxtPtr ctxt;
+    xmlDocPtr doc;
+    xmlNodePtr root;
+    string GetPath(string xmlFile);
+    void ParseSetupMenu(xmlNodePtr node);
+    void ParseSetupParameter(xmlNodePtr node);
+    void ParseGlobalColors(xmlNodePtr node);
+    void InsertColor(string name, string value);
+    void ParseGlobalVariables(xmlNodePtr node);
+    void InsertVariable(string name, string type, string value);
+    void ParseGlobalFonts(xmlNodePtr node);
+    void ParseTranslations(xmlNodePtr node);
+    bool ParseSubView(xmlNodePtr node);
+    void ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, vector<pair<string, string> > &attributes, cTemplateView *subView = NULL);
+    void ParseViewList(xmlNodePtr parentNode, cTemplateView *subView = NULL);
+    void ParseViewTab(xmlNodePtr parentNode, cTemplateView *subView);
+    void ParseFunctionCalls(xmlNodePtr node, cTemplatePixmap *pix);
+    void ParseLoopFunctionCalls(xmlNodePtr node, cTemplateLoopFunction *loopFunc);
+    bool ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<string, string> > &attribs);
+public:
+    cXmlParser(void);
+    virtual ~cXmlParser(void);
+    bool ReadView(cTemplateView *view, string xmlFile);
+    bool ReadPluginView(string plugName, int templateNumber, string templateName);
+    bool ReadGlobals(cGlobals *globals, string xmlFile, bool mandatory);
+    bool ReadSkinSetup(cSkinSetup *skinSetup, string xmlFile);
+    bool ParseView(void);
+    bool ParsePluginView(string plugName, int templateNumber);
+    bool ParseGlobals(void);
+    bool ParseSkinSetup(string skin);
+    void DeleteDocument(void);
+    static void InitLibXML();
+    static void CleanupLibXML();
+};
+
+#endif //__XMLPARSER_H
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100644
index 0000000..d3bc9d2
--- /dev/null
+++ b/po/de_DE.po
@@ -0,0 +1,91 @@
+# Copyright (C) 2014
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <louis.braun at gmx.de>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: vdr-skindesigner 0.0.1\n"
+"Report-Msgid-Bugs-To: <see README>\n"
+"POT-Creation-Date: 2015-01-19 17:09+0100\n"
+"PO-Revision-Date: 2014-09-27 11:02+0200\n"
+"Last-Translator: Louis Braun <louis.braun at gmx.de>\n"
+"Language-Team: \n"
+"Language: de_DE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "after one another"
+msgstr "eines nach dem anderen"
+
+msgid "at one go"
+msgstr "alle auf einmal"
+
+msgid "Skin"
+msgstr ""
+
+msgid "Plugin Setup"
+msgstr ""
+
+msgid "Menu Item display method"
+msgstr "Art der Ausgabe der Menüelemente"
+
+msgid "Reruns"
+msgstr "Wiederholungen"
+
+msgid "Maximum number of reruns to display"
+msgstr "Anzahl anzuzeigender Wiederholungen"
+
+msgid "Minimum timely distance of rerun (in hours)"
+msgstr "Zeitl. Abstand der Wiederholung (in h)"
+
+msgid "Limit Channel Numbers"
+msgstr "Kanalnummern begrenzen"
+
+msgid "no limit"
+msgstr "unbegrenzt"
+
+msgid "Image Loading"
+msgstr "Bilder"
+
+msgid "Debug Image Loading"
+msgstr "Debugausgabe für das Laden der Bilder"
+
+msgid "Limit Channel Logo Cache"
+msgstr "Größe des Kanallogo Caches bechränken"
+
+msgid "Number to cache initially (per size)"
+msgstr "Anzahl der initial zu cachenden Logos"
+
+msgid "Number to cache in maximum"
+msgstr "Maximale Anzahl zu cachender Logos"
+
+msgid "Skin Setup"
+msgstr ""
+
+msgid "has no setup"
+msgstr "hat kein Setup"
+
+msgid "Cache Statistics"
+msgstr "Cache Statistik"
+
+msgid "cached"
+msgstr "cached"
+
+msgid "icons"
+msgstr "Icons"
+
+msgid "size"
+msgstr "Größe"
+
+msgid "byte"
+msgstr "Byte"
+
+msgid "logos"
+msgstr "Logos"
+
+msgid "skinparts"
+msgstr "Skinparts"
+
+msgid "Skin Designer"
+msgstr "Skin Designer"
diff --git a/po/fi_FI.po b/po/fi_FI.po
new file mode 100644
index 0000000..93872ef
--- /dev/null
+++ b/po/fi_FI.po
@@ -0,0 +1,91 @@
+# Copyright (C) 2014-2015
+# This file is distributed under the same license as the PACKAGE package.
+# Rolf Ahrenberg <rolf.ahrenberg at sci.fi>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: vdr-skindesigner 0.2.0\n"
+"Report-Msgid-Bugs-To: <see README>\n"
+"POT-Creation-Date: 2015-01-25 01:25+0200\n"
+"PO-Revision-Date: 2015-01-25 01:25+0200\n"
+"Last-Translator: Rolf Ahrenberg\n"
+"Language-Team: Finnish\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "after one another"
+msgstr "yksi kerrallaan"
+
+msgid "at one go"
+msgstr "kaikki kerralla"
+
+msgid "Skin"
+msgstr "Ulkoasu"
+
+msgid "Plugin Setup"
+msgstr "Yleiset"
+
+msgid "Menu Item display method"
+msgstr "Valikkorivien esitystapa"
+
+msgid "Reruns"
+msgstr "Uusinnat"
+
+msgid "Maximum number of reruns to display"
+msgstr "Maksimissaan näytettävät uusinnat"
+
+msgid "Minimum timely distance of rerun (in hours)"
+msgstr "Minimikesto uusintojen välillä [h]"
+
+msgid "Limit Channel Numbers"
+msgstr "Aseta rajoitus kanavanumeroille"
+
+msgid "no limit"
+msgstr "ei rajoitusta"
+
+msgid "Image Loading"
+msgstr "Kuvat"
+
+msgid "Debug Image Loading"
+msgstr "Debuggaa kuvien latausta"
+
+msgid "Limit Channel Logo Cache"
+msgstr "Rajoita kanavalogojen välimuistia"
+
+msgid "Number to cache initially (per size)"
+msgstr "Oletuksena välimuistissa pidettävät logot"
+
+msgid "Number to cache in maximum"
+msgstr "Maksimissaan välimuistissa pidettävät logot"
+
+msgid "Skin Setup"
+msgstr "Ulkoasut"
+
+msgid "has no setup"
+msgstr "ei asetuksia"
+
+msgid "Cache Statistics"
+msgstr "Välimuisti"
+
+msgid "cached"
+msgstr "välimuistissa"
+
+msgid "icons"
+msgstr "ikoni(a)"
+
+msgid "size"
+msgstr "koko"
+
+msgid "byte"
+msgstr "tavu(a)"
+
+msgid "logos"
+msgstr "logo(a)"
+
+msgid "skinparts"
+msgstr "osasta"
+
+msgid "Skin Designer"
+msgstr "Skin Designer -ulkoasu"
diff --git a/scripts/README b/scripts/README
new file mode 100644
index 0000000..5f22c35
--- /dev/null
+++ b/scripts/README
@@ -0,0 +1,10 @@
+This Widget provide information about the system temperatures.
+
+You must manually create a link to the corresponding script, for example:
+ln -s temperatures.default temperatures
+
+The command "temperatures" will be executed every time the widget is drawn, so please keep it short and fast.
+The command can provide three temperatures: cpu, pc case and gpu temperature
+The command can also be called from system information widget. So the output files must also begin with 01_ - 99_ for sort/position. 
+
+Please install lm-sensors and configure it for your system. See the default script for an example.
diff --git a/scripts/temperatures.default b/scripts/temperatures.default
new file mode 100755
index 0000000..7ebff69
--- /dev/null
+++ b/scripts/temperatures.default
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# please update this script to fit your needs
+# this script is call every time the widget will be drawn, so keep it short and fast ;)
+
+OUTPUTFLDR="/tmp/skindesigner/"
+mkdir -p ${OUTPUTFLDR}
+
+# if the script is executed from system_information script set the locale back for "°C"
+LANG=de_DE.UTF-8
+
+# there can be 4 files, cpu, gpu, pccase, motherboard
+
+rm -f ${OUTPUTFLDR}/cpu ${OUTPUTFLDR}/pccase ${OUTPUTFLDR}/gpu ${OUTPUTFLDR}/motherboard
+
+# intel core-i cpu temp
+sensors -A coretemp-isa-0000 | grep "Core 0" | awk '{print $3}' | tr -d "+" > ${OUTPUTFLDR}/cpu
+
+# pc case temp
+#sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/pccase
+
+# motherboard temp
+sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/motherboard
+
+# nvidia gpu temp
+# nvidia-settings must be run as the user of the x server
+# GPU=`nvidia-settings -c :0 -t -query GPUCoreTemp | head -n 1`
+GPU=`nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader`
+echo "${GPU}°C" > ${OUTPUTFLDR}/gpu
diff --git a/scripts/temperatures.g2v b/scripts/temperatures.g2v
new file mode 100644
index 0000000..79d0774
--- /dev/null
+++ b/scripts/temperatures.g2v
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# please update this script to fit your needs
+# this script is call every time the widget will be drawn, so keep it short and fast ;)
+
+OUTPUTFLDR="/tmp/skindesigner"
+mkdir -p ${OUTPUTFLDR}
+
+# if the script is executed from system_information script set the locale back for "°C"
+LANG=de_DE.UTF-8
+
+# there can be 4 files, cpu, gpu, pccase, motherboard
+
+rm -f ${OUTPUTFLDR}/cpu ${OUTPUTFLDR}/gpu
+
+# intel core-i cpu temp
+#sensors -A coretemp-isa-0000 | grep "Core 0" | awk '{print $3}' | tr -d "+" > ./cpu
+
+# cpu temp
+CPUTEMP=($(sensors -A | grep "Core"))
+CPUTEMP[2]=${CPUTEMP[2]/+}                      # +36.0°C -> 36.0°C
+echo "${CPUTEMP[2]/./,}" > ${OUTPUTFLDR}/cpu               # 36,0°C
+echo "${CPUTEMP[2]%.*}°C" > ${OUTPUTFLDR}/cpu               # 36°C
+
+# pc case temp
+#sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/pccase
+
+# nvidia gpu temp
+# nvidia-settings must be run as the user of the x server
+GPU=$(nvidia-settings -c :0 -t -query GPUCoreTemp | head -n 1)
+echo "${GPU}°C" > ${OUTPUTFLDR}/gpu
diff --git a/services.h b/services.h
new file mode 100644
index 0000000..3c477b2
--- /dev/null
+++ b/services.h
@@ -0,0 +1,38 @@
+#ifndef __SKINDESIGNERSERVICES_H
+#define __SKINDESIGNERSERVICES_H
+
+using namespace std;
+
+#include <string>
+#include <map>
+
+/*********************************************************************
+* Data Structures for Service Calls
+*********************************************************************/
+
+// Data structure for service "RegisterPlugin"
+class RegisterPlugin {
+public:
+	RegisterPlugin(void) {
+		name = "";
+	};
+	void SetMenu(int key, string templateName) {
+		menus.insert(pair<int, string>(key, templateName));
+	}
+// in
+	string name;				 //name of plugin
+	map< int, string > menus;    //menus as key -> templatename hashmap 
+//out
+};
+
+// Data structure for service "GetDisplayMenu"
+class GetDisplayMenu {
+public:
+	GetDisplayMenu(void) {
+		displayMenu = NULL;
+	};
+// in
+//out	
+	cSDDisplayMenu *displayMenu;
+};
+#endif //__SKINDESIGNERSERVICES_H
\ No newline at end of file
diff --git a/services/epgsearch.h b/services/epgsearch.h
new file mode 100644
index 0000000..0c38793
--- /dev/null
+++ b/services/epgsearch.h
@@ -0,0 +1,167 @@
+/*
+Copyright (C) 2004-2007 Christian Wieninger
+
+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 Street, Fifth Floor, Boston, MA 02110-1301 USA
+Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+The author can be reached at cwieninger at gmx.de
+
+The project's page is at http://winni.vdr-developer.org/epgsearch
+*/
+
+#ifndef EPGSEARCHSERVICES_INC
+#define EPGSEARCHSERVICES_INC
+
+// Added by Andreas Mair (mail _AT_ andreas _DOT_ vdr-developer _DOT_ org)
+#define EPGSEARCH_SEARCHRESULTS_SERVICE_STRING_ID "Epgsearch-searchresults-v1.0"
+#define EPGSEARCH_LASTCONFLICTINFO_SERVICE_STRING_ID "Epgsearch-lastconflictinfo-v1.0"
+
+#include <string>
+#include <list>
+#include <memory>
+#include <set>
+#include <vdr/osdbase.h>
+
+// Data structure for service "Epgsearch-search-v1.0"
+struct Epgsearch_search_v1_0
+{
+// in
+      char* query;               // search term
+      int mode;                  // search mode (0=phrase, 1=and, 2=or, 3=regular expression)
+      int channelNr;             // channel number to search in (0=any)
+      bool useTitle;             // search in title
+      bool useSubTitle;          // search in subtitle
+      bool useDescription;       // search in description
+// out
+      cOsdMenu* pResultMenu;   // pointer to the menu of results
+};
+
+// Data structure for service "Epgsearch-exttimeredit-v1.0"
+struct Epgsearch_exttimeredit_v1_0
+{
+// in
+      cTimer* timer;             // pointer to the timer to edit
+      bool bNew;                 // flag that indicates, if this is a new timer or an existing one
+      const cEvent* event;             // pointer to the event corresponding to this timer (may be NULL)
+// out
+      cOsdMenu* pTimerMenu;   // pointer to the menu of results
+};
+
+// Data structure for service "Epgsearch-updatesearchtimers-v1.0"
+struct Epgsearch_updatesearchtimers_v1_0
+{
+// in
+      bool showMessage;           // inform via osd when finished?
+};
+
+// Data structure for service "Epgsearch-osdmessage-v1.0"
+struct Epgsearch_osdmessage_v1_0
+{
+// in
+      char* message;             // the message to display
+      eMessageType type;
+};
+
+// Data structure for service "EpgsearchMenu-v1.0"
+struct EpgSearchMenu_v1_0
+{
+// in
+// out
+      cOsdMenu* Menu;   // pointer to the menu
+};
+
+// Data structure for service "Epgsearch-lastconflictinfo-v1.0"
+struct Epgsearch_lastconflictinfo_v1_0
+{
+// in
+// out
+      time_t nextConflict;       // next conflict date, 0 if none
+      int relevantConflicts;     // number of relevant conflicts
+      int totalConflicts;        // total number of conflicts
+};
+
+// Data structure for service "Epgsearch-searchresults-v1.0"
+struct Epgsearch_searchresults_v1_0
+{
+// in
+      char* query;               // search term
+      int mode;                  // search mode (0=phrase, 1=and, 2=or, 3=regular expression)
+      int channelNr;             // channel number to search in (0=any)
+      bool useTitle;             // search in title
+      bool useSubTitle;          // search in subtitle
+      bool useDescription;       // search in description
+// out
+
+      class cServiceSearchResult : public cListObject 
+      {
+        public:
+         const cEvent* event;
+         cServiceSearchResult(const cEvent* Event) : event(Event) {}
+      };
+
+      cList<cServiceSearchResult>* pResultList;   // pointer to the results
+};
+
+// Data structure for service "Epgsearch-switchtimer-v1.0"
+struct Epgsearch_switchtimer_v1_0
+{
+// in
+      const cEvent* event;
+      int mode;                  // mode (0=query existance, 1=add/modify, 2=delete)
+// in/out
+      int switchMinsBefore;
+      int announceOnly;
+// out          
+      bool success;              // result
+};
+
+// Data structures for service "Epgsearch-services-v1.0"
+class cServiceHandler
+{
+  public:
+   virtual std::list<std::string> SearchTimerList() = 0;
+   // returns a list of search timer entries in the same format as used in epgsearch.conf 
+   virtual int AddSearchTimer(const std::string&) = 0;
+   // adds a new search timer and returns its ID (-1 on error)
+   virtual bool ModSearchTimer(const std::string&) = 0;
+   // edits an existing search timer and returns success
+   virtual bool DelSearchTimer(int) = 0;
+   // deletes search timer with given ID and returns success
+   virtual std::list<std::string> QuerySearchTimer(int) = 0;
+   // returns the search result of the searchtimer with given ID in the same format as used in SVDRP command 'QRYS' (->MANUAL)        
+   virtual std::list<std::string> QuerySearch(std::string) = 0;
+   // returns the search result of the searchtimer with given settings in the same format as used in SVDRP command 'QRYS' (->MANUAL)        
+   virtual std::list<std::string> ExtEPGInfoList() = 0;
+   // returns a list of extended EPG categories in the same format as used in epgsearchcats.conf 
+   virtual std::list<std::string> ChanGrpList() = 0;
+   // returns a list of channel groups maintained by epgsearch
+   virtual std::list<std::string> BlackList() = 0;
+   // returns a list of blacklists in the same format as used in epgsearchblacklists.conf
+   virtual std::set<std::string> DirectoryList() = 0;
+   // List of all recording directories used in recordings, timers, search timers or in epgsearchdirs.conf
+   virtual ~cServiceHandler() {}
+   // Read a setup value
+   virtual std::string ReadSetupValue(const std::string& entry) = 0;
+   // Write a setup value
+   virtual bool WriteSetupValue(const std::string& entry, const std::string& value) = 0;
+};
+
+struct Epgsearch_services_v1_0
+{
+// in/out
+      std::auto_ptr<cServiceHandler> handler;
+};
+
+#endif
diff --git a/services/remotetimers.h b/services/remotetimers.h
new file mode 100644
index 0000000..2dc8a97
--- /dev/null
+++ b/services/remotetimers.h
@@ -0,0 +1,141 @@
+/*
+ * remotetimers.h: Public interface of the plugin's services
+ *
+ * Copyright (C) 2008-2011 Frank Schmirler <vdr at schmirler.de>
+ *
+ * This file is part of VDR Plugin remotetimers.
+ *
+ * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ */
+
+#ifndef _SERVICE__H
+#define _SERVICE__H
+
+#ifndef __TIMERS_H
+#include <vdr/timers.h>
+#include <vdr/epg.h>
+#endif
+
+/*
+ * If the Data argument is NULL, all service calls return true.
+ * Otherwise the return value indicates success or failure of the service call.
+ *
+ * The service calls are not thread safe and must be called from the VDR main loop.
+ */
+
+/*
+ * RemoteTimers::InstantRecording-v1.0
+ * Start an instant recording or pause live TV. VDR needs to be patched to support this.
+ * The service returns false if a local timer should be used. An error occured if true is returned but the out parameters name and fileName are NULL.
+ * Data points to the following structure where pause indicates if it is an instant recording or an attempt to pause live TV.
+ */
+
+struct RemoteTimers_InstantRecording_v1_0 {
+//in
+    const cTimer    *timer;
+    bool        pause;
+    const cEvent    *event;
+//out
+    cString     name;
+    cString     fileName;
+};
+
+/* 
+ * RemoteTimers::RefreshTimers-v1.0
+ * Fetch timer list from remote VDR. You must call this service before you can use one of the service calls below.
+ * Data points to a cString which in case of failure (service call returns false) contains an error message.
+ */
+
+//out
+//  cString errorMsg;
+
+/*
+ * RemoteTimers::ForEach-v1.0
+ * Iterates the list of remote timers.
+ * The service call always returns true.
+ * Data points to a cTimer* which must be NULL to return the first timer. Pass the previously returned timer to get the next one until cTimer* is NULL.
+ *
+ * RemoteTimers::GetTimer-v1.0
+ * Test if the timer exists as either a remote or a local timer. 
+ * The service call always returns true.
+ * Data points to a cTimer* which points to the timer you are looking for. If found, cTimer* will point to the timer, otherwise it will be NULL.
+ */
+
+//in+out
+//  cTimer* timer;
+
+/*
+ * RemoteTimers::GetMatch-v1.0
+ * Find the remote or local timer which matches the event best.
+ * The service call always returns true.
+ * Data points to the following structure:
+ */
+
+struct RemoteTimers_GetMatch_v1_0 {
+//in
+    const cEvent    *event;
+//out
+    cTimer      *timer;
+    int     timerMatch;
+    int     timerType;
+    bool        isRemote;
+};
+
+/*
+ * RemoteTimers::GetTimerByEvent-v1.0
+ * Find the remote or local timer matching the event.
+ * If no timer matches, the service call returns false.
+ * Data points to a RemoteTimers_Event_v1_0 struct.
+ *
+ * RemoteTimers::NewTimerByEvent-v1.0
+ * Add a new timer for an event.
+ * In case of an error, the service call returns false and the structure includes an error message.
+ * Data points to a RemoteTimers_Event_v1_0 struct.
+ */
+
+struct RemoteTimers_Event_v1_0 {
+//in
+        const cEvent    *event;
+//out
+    cTimer      *timer;
+    cString     errorMsg;
+};
+
+/*
+ * RemoteTimers::NewTimer-v1.0
+ * Add a new timer.
+ * In case of an error, the service call returns false and the structure includes an error message.
+ * Data points to a RemoteTimers_Timer_v1_0 struct.
+ *
+ * RemoteTimers::ModTimer-v1.0
+ * Change an existing timer.
+ * In case of an error, the service call returns false and the structure includes an error message.
+ * Data points to a RemoteTimers_Timer_v1_0 struct.
+ *
+ * RemoteTimers::DelTimer-v1.0
+ * Delete an existing timer.
+ * In case of an error, the service call returns false and the structure includes an error message.
+ * Data points to a RemoteTimers_Timer_v1_0 struct.
+ */
+
+struct RemoteTimers_Timer_v1_0 {
+//in+out
+    cTimer      *timer;
+//out
+    cString     errorMsg;
+};
+
+#endif //_SERVICE__H
diff --git a/services/scraper2vdr.h b/services/scraper2vdr.h
new file mode 100644
index 0000000..a5d6043
--- /dev/null
+++ b/services/scraper2vdr.h
@@ -0,0 +1,214 @@
+#ifndef __SCRAPER2VDRSERVICES_H
+#define __SCRAPER2VDRSERVICES_H
+
+#include <string>
+#include <vector>
+#include <vdr/epg.h>
+#include <vdr/recording.h>
+
+enum tvType {
+    tSeries,
+    tMovie,
+    tNone,
+};
+
+/*********************************************************************
+* Helper Structures
+*********************************************************************/
+class cTvMedia {
+public:
+    cTvMedia(void) {
+        path = "";
+        width = height = 0;
+    };
+    std::string path;
+    int width;
+    int height;
+};
+
+class cEpisode {
+public:
+    cEpisode(void) {
+        number = 0;
+        season = 0;
+        name = "";
+        firstAired = "";
+        guestStars = "";
+        overview = "";
+        rating = 0.0;
+    };
+    int number;
+    int season;
+    std::string name;
+    std::string firstAired;
+    std::string guestStars;
+    std::string overview;
+    float rating;
+    cTvMedia episodeImage;
+};
+
+class cActor {
+public:
+    cActor(void) {
+        name = "";
+        role = "";
+    };
+    std::string name;
+    std::string role;
+    cTvMedia actorThumb;
+};
+
+/*********************************************************************
+* Data Structures for Service Calls
+*********************************************************************/
+
+// Data structure for service "GetEventType"
+class ScraperGetEventType {
+public:
+    ScraperGetEventType(void) {
+        event = NULL;
+        recording = NULL;
+        type = tNone;
+        movieId = 0;
+        seriesId = 0;
+        episodeId = 0;
+    };
+// in
+    const cEvent *event;             // check type for this event 
+    const cRecording *recording;     // or for this recording
+//out
+    tvType type;                   //typeSeries or typeMovie
+    int movieId;
+    int seriesId;
+    int episodeId;
+};
+
+//Data structure for full series and episode information
+class cMovie {
+public:
+    cMovie(void) {
+        title = "";
+        originalTitle = "";
+        tagline = "";    
+        overview = "";
+        adult = false;
+        collectionName = "";
+        budget = 0;
+        revenue = 0;
+        genres = "";
+        homepage = "";
+        releaseDate = "";
+        runtime = 0;
+        popularity = 0.0;
+        voteAverage = 0.0;
+    };
+//IN
+    int movieId;                    // movieId fetched from ScraperGetEventType
+//OUT    
+    std::string title;
+    std::string originalTitle;
+    std::string tagline;    
+    std::string overview;
+    bool adult;
+    std::string collectionName;
+    int budget;
+    int revenue;
+    std::string genres;
+    std::string homepage;
+    std::string releaseDate;
+    int runtime;
+    float popularity;
+    float voteAverage;
+    cTvMedia poster;
+    cTvMedia fanart;
+    cTvMedia collectionPoster;
+    cTvMedia collectionFanart;
+    std::vector<cActor> actors;
+};
+
+//Data structure for full series and episode information
+class cSeries {
+public:
+    cSeries(void) {
+        seriesId = 0;
+        episodeId = 0;
+        name = "";
+        overview = "";
+        firstAired = "";
+        network = "";
+        genre = "";
+        rating = 0.0;
+        status = "";
+    };
+//IN
+    int seriesId;                   // seriesId fetched from ScraperGetEventType
+    int episodeId;                  // episodeId fetched from ScraperGetEventType
+//OUT
+    std::string name;
+    std::string overview;
+    std::string firstAired;
+    std::string network;
+    std::string genre;
+    float rating;
+    std::string status;
+    cEpisode episode;
+    std::vector<cActor> actors;
+    std::vector<cTvMedia> posters;
+    std::vector<cTvMedia> banners;
+    std::vector<cTvMedia> fanarts;
+    cTvMedia seasonPoster;
+};
+
+// Data structure for service "GetPosterBanner"
+class ScraperGetPosterBanner {
+public:
+    ScraperGetPosterBanner(void) {
+        type = tNone;
+        event = NULL;
+    };
+// in
+    const cEvent *event;             // check type for this event
+//out
+    tvType type;                   //typeSeries or typeMovie
+    cTvMedia poster;
+    cTvMedia banner;
+};
+
+// Data structure for service "GetPosterBannerV2"
+class ScraperGetPosterBannerV2 {
+public:
+    ScraperGetPosterBannerV2(void) {
+        type = tNone;
+        event = NULL;
+        recording = NULL;
+    };
+// in
+    const cEvent *event;             // check type for this event
+    const cRecording *recording;     // check type for this recording
+//out
+    tvType type;                     //typeSeries or typeMovie
+    cTvMedia poster;
+    cTvMedia banner;
+};
+
+// Data structure for service "GetPoster"
+class ScraperGetPoster {
+public:
+// in
+    const cEvent *event;             // check type for this event
+    const cRecording *recording;     // or for this recording
+//out
+    cTvMedia poster;
+};
+
+// Data structure for service "GetPosterThumb"
+class ScraperGetPosterThumb {
+public:
+// in
+    const cEvent *event;             // check type for this event
+    const cRecording *recording;     // or for this recording
+//out
+    cTvMedia poster;
+};
+
+#endif //__SCRAPER2VDRSERVICES_H
\ No newline at end of file
diff --git a/services/weatherforecast.h b/services/weatherforecast.h
new file mode 100644
index 0000000..13f3c1e
--- /dev/null
+++ b/services/weatherforecast.h
@@ -0,0 +1,49 @@
+#ifndef __WEATHERFORECASTSERVICES_H
+#define __WEATHERFORECASTSERVICES_H
+
+#include <string>
+
+class cServiceCurrentWeather {
+public:
+	cServiceCurrentWeather(void) {
+	    timeStamp = "";
+	    temperature = "";
+        minTemperature = "";
+        maxTemperature = "";
+	    apparentTemperature = "";
+	    summary = "";
+	    icon = "";
+	    precipitationIntensity = "";
+	    precipitationProbability = 0;
+	    precipitationType = "";
+	    humidity = 0;
+	    windSpeed = "";
+	    windBearing = 0;
+	    windBearingString = "";
+	    visibility = "";
+	    cloudCover = 0;
+	    pressure = "";
+	    ozone = "";
+	};
+    std::string timeStamp;
+    std::string temperature;
+    std::string apparentTemperature;
+    std::string minTemperature;
+    std::string maxTemperature;
+    std::string summary;
+    std::string icon;
+    std::string precipitationIntensity;
+    int precipitationProbability;
+    std::string precipitationType;
+    int humidity;
+    std::string windSpeed;
+    int windBearing;
+    std::string windBearingString;
+    std::string visibility;
+    int cloudCover;
+    std::string pressure;
+    std::string ozone;
+};
+
+#endif //__WEATHERFORECASTSERVICES_H
+
diff --git a/setup.c b/setup.c
new file mode 100644
index 0000000..611cc69
--- /dev/null
+++ b/setup.c
@@ -0,0 +1,219 @@
+#include "setup.h"
+
+cSkinDesignerSetup::cSkinDesignerSetup() {
+    numLogosPerSizeInitial = config.numLogosPerSizeInitial;
+    limitLogoCache = config.limitLogoCache;
+    numLogosMax = config.numLogosMax;
+    debugImageLoading = config.debugImageLoading;
+    rerunAmount = config.rerunAmount;
+    rerunDistance = config.rerunDistance;
+    rerunMaxChannel = config.rerunMaxChannel;
+    blockFlush = config.blockFlush;
+    menuDisplayStyle[0] = tr("after one another");
+    menuDisplayStyle[1] = tr("at one go");
+    Setup();
+}
+
+cSkinDesignerSetup::~cSkinDesignerSetup() {
+    config.setupCloseDoReload = true;
+}
+
+
+void cSkinDesignerSetup::Setup(void) {
+    int current = Current();
+    Clear();
+
+    SkinSetup();
+    PluginSetup();
+    ImageCacheStatistics();
+
+    SetCurrent(Get(current));
+    Display();
+}
+
+eOSState cSkinDesignerSetup::ProcessKey(eKeys Key) {
+    bool hadSubMenu = HasSubMenu();
+    eOSState state = cMenuSetupPage::ProcessKey(Key);
+    if (hadSubMenu && Key == kOk) {
+        Store();
+    }
+    if (!hadSubMenu && (state == osUnknown || Key == kOk)) {
+        if ((Key == kOk && !hadSubMenu)) {
+            switch (Key) {
+                case kOk: {
+                    string itemText = Get(Current())->Text();
+                    size_t hit = itemText.find(tr("Skin"));
+                    if (hit == 0) {
+                        string skin = itemText.substr(strlen(tr("Skin"))+1);
+                        state = AddSubMenu(new cSkindesignerSkinSetup(skin, ""));
+                    }
+                    break;
+                } default:
+                    break;
+            }
+        }
+    }
+    return state;
+}
+
+void cSkinDesignerSetup::Store(void) {
+    config.numLogosPerSizeInitial = numLogosPerSizeInitial;
+    config.limitLogoCache = limitLogoCache;
+    config.numLogosMax = numLogosMax;
+    config.debugImageLoading = debugImageLoading;
+    config.rerunAmount = rerunAmount;
+    config.rerunDistance = rerunDistance;
+    config.rerunMaxChannel = rerunMaxChannel;
+    config.blockFlush = blockFlush;
+
+    config.InitSetupIterator();
+    cSkinSetup *skinSetup = NULL;
+    while (skinSetup = config.GetNextSkinSetup()) {
+        string skin = skinSetup->GetSkin();
+        skinSetup->InitParameterIterator();
+        cSkinSetupParameter *param = NULL;
+        while (param = skinSetup->GetNextParameter()) {
+            cString paramName = cString::sprintf("%s.%s", skin.c_str(), param->name.c_str());
+            SetupStore(*paramName, param->value);
+            config.UpdateSkinSetupParameter(*paramName, param->value);
+        }
+    }
+    config.UpdateGlobals();
+
+    SetupStore("DebugImageLoading", debugImageLoading);
+    SetupStore("LimitChannelLogoCache", limitLogoCache);
+    SetupStore("NumberLogosInitially", numLogosPerSizeInitial);
+    SetupStore("NumberLogosMax", numLogosMax);
+    SetupStore("RerunAmount", rerunAmount);
+    SetupStore("RerunDistance", rerunDistance);
+    SetupStore("RerunMaxChannel", rerunMaxChannel);
+    SetupStore("BlockFlush", blockFlush);
+}
+
+cOsdItem *cSkinDesignerSetup::InfoItem(const char *label) {
+    cOsdItem *item;
+    item = new cOsdItem(cString::sprintf("---------------- %s ----------------", tr(label)));
+    item->SetSelectable(false);
+    return item;
+}
+
+void cSkinDesignerSetup::PluginSetup(void) {
+    Add(InfoItem(tr("Plugin Setup")));
+
+    Add(new cMenuEditStraItem(tr("Menu Item display method"), &blockFlush, 2, menuDisplayStyle));
+
+    Add(InfoItem(tr("Reruns")));
+    Add(new cMenuEditIntItem(tr("Maximum number of reruns to display"), &rerunAmount, 1, 100));
+    Add(new cMenuEditIntItem(tr("Minimum timely distance of rerun (in hours)"), &rerunDistance, 0, 1000));
+    Add(new cMenuEditIntItem(tr("Limit Channel Numbers"), &rerunMaxChannel, 0, 1000, tr("no limit")));
+
+    Add(InfoItem(tr("Image Loading")));
+    Add(new cMenuEditBoolItem(tr("Debug Image Loading"), &debugImageLoading));
+    Add(new cMenuEditBoolItem(tr("Limit Channel Logo Cache"), &limitLogoCache));
+    Add(new cMenuEditIntItem(tr("Number to cache initially (per size)"), &numLogosPerSizeInitial, 0, 1000));
+    Add(new cMenuEditIntItem(tr("Number to cache in maximum"), &numLogosMax, 0, 1000));
+}
+
+void cSkinDesignerSetup::SkinSetup(void) {
+    Add(InfoItem(tr("Skin Setup")));
+
+    config.InitSkinIterator();
+    string skin = "";
+    while (config.GetSkin(skin)) {
+        cSkinSetup *skinSetup = config.GetSkinSetup(skin);
+        if (!skinSetup) {
+            Add(new cOsdItem(cString::sprintf("%s %s\t%s", tr("Skin"), skin.c_str(), tr("has no setup"))));
+            cList<cOsdItem>::Last()->SetSelectable(false);
+        } else {
+            Add(new cOsdItem(cString::sprintf("%s %s", tr("Skin"), skin.c_str())));
+        }
+    }
+}
+
+void cSkinDesignerSetup::ImageCacheStatistics(void) {
+    if (!imgCache) {
+        return;
+    }
+
+    Add(InfoItem(tr("Cache Statistics")));
+    int sizeIconCache = 0;
+    int numIcons = 0;
+    imgCache->GetIconCacheSize(numIcons, sizeIconCache);
+    cString iconCacheInfo = cString::sprintf("%s %d %s - %s %d %s", tr("cached"), numIcons, tr("icons"), tr("size"), sizeIconCache, tr("byte"));
+    Add(new cOsdItem(*iconCacheInfo));
+    cList<cOsdItem>::Last()->SetSelectable(false);
+    
+    int sizeLogoCache = 0;
+    int numLogos = 0;
+    imgCache->GetLogoCacheSize(numLogos, sizeLogoCache);
+    cString logoCacheInfo = cString::sprintf("%s %d %s - %s %d %s", tr("cached"), numLogos, tr("logos"), tr("size"), sizeLogoCache, tr("byte"));
+    Add(new cOsdItem(*logoCacheInfo));
+    cList<cOsdItem>::Last()->SetSelectable(false);
+
+    int sizeSkinpartCache = 0;
+    int numSkinparts = 0;
+    imgCache->GetSkinpartsCacheSize(numSkinparts, sizeSkinpartCache);
+    cString skinpartCacheInfo = cString::sprintf("%s %d %s - %s %d %s", tr("cached"), numSkinparts, tr("skinparts"), tr("size"), sizeSkinpartCache, tr("byte"));
+    Add(new cOsdItem(*skinpartCacheInfo));
+    cList<cOsdItem>::Last()->SetSelectable(false);
+}
+
+// --- cSkinSetupSubMenu -----------------------------------------------------------
+
+cSkinSetupSubMenu::cSkinSetupSubMenu(string name, string displayText) : cOsdItem(displayText.c_str()) {
+    this->name = name;
+}
+
+// --- cSkindesignerSkinSetup -----------------------------------------------------------
+
+cSkindesignerSkinSetup::cSkindesignerSkinSetup(string skin, string name)  : 
+cOsdMenu(*cString::sprintf("%s: %s \"%s\" %s", trVDR("Setup"), tr("Skin"), skin.c_str(), name.c_str()), 30) {
+    this->skin = skin;
+    this->name = name;
+    Set();
+}
+
+cSkindesignerSkinSetup::~cSkindesignerSkinSetup() {
+}
+
+eOSState cSkindesignerSkinSetup::ProcessKey(eKeys Key) {
+    eOSState state = cOsdMenu::ProcessKey(Key);
+    if (state == osUnknown) {
+        switch (Key) {
+            case kOk: {
+                cOsdItem *current = Get(Current());
+                cSkinSetupSubMenu *subMenuItem = dynamic_cast<cSkinSetupSubMenu*>(current);
+                if (subMenuItem) {
+                    state = AddSubMenu(new cSkindesignerSkinSetup(skin, subMenuItem->GetName()));
+                    break;
+                } else {
+                    return osBack;
+                }
+            } default:
+                break;
+        }
+    }
+    return state;
+}
+
+void cSkindesignerSkinSetup::Set(void) {
+    cSkinSetupMenu *menu = config.GetSkinSetupMenu(skin, name);
+    if (!menu) {
+        return;
+    }
+    menu->InitParameterIterator();
+    cSkinSetupParameter *param = NULL;
+    while (param = menu->GetNextParameter(false)) {
+        if (param->type == sptInt) {
+            Add(new cMenuEditIntItem(param->displayText.c_str(), &param->value, param->min, param->max));
+        } else if (param->type == sptBool) {
+            Add(new cMenuEditBoolItem(param->displayText.c_str(), &param->value));
+        }
+    }
+
+    menu->InitSubmenuIterator();
+    cSkinSetupMenu *subMenu = NULL;
+    while (subMenu = menu->GetNextSubMenu(false)) {
+        Add(new cSkinSetupSubMenu(subMenu->GetName(), subMenu->GetDisplayText()));
+    }
+}
diff --git a/setup.h b/setup.h
new file mode 100644
index 0000000..c06a5cf
--- /dev/null
+++ b/setup.h
@@ -0,0 +1,57 @@
+#ifndef __SKINDESIGNER_SETUP_H
+#define __SKINDESIGNER_SETUP_H
+
+#include "config.h"
+
+// --- cSkinDesignerSetup -----------------------------------------------------------
+
+class cSkinDesignerSetup : public cMenuSetupPage {
+private:
+    int numLogosPerSizeInitial;
+    int limitLogoCache;
+    int numLogosMax;
+    int debugImageLoading;
+    int rerunAmount;
+    int rerunDistance;
+    int rerunMaxChannel;
+    int blockFlush;
+    const char *menuDisplayStyle[2];
+
+    void Setup(void);
+    virtual void Store(void);
+    virtual eOSState ProcessKey(eKeys Key);
+    cOsdItem *InfoItem(const char *label);
+    void PluginSetup(void);
+    void SkinSetup(void);
+    void ImageCacheStatistics(void);
+public:
+    cSkinDesignerSetup(void);
+    virtual ~cSkinDesignerSetup();
+};
+
+// --- cSkinSetupSubMenu -----------------------------------------------------------
+
+class cSkinSetupSubMenu : public cOsdItem {
+private:
+    string name;
+public:
+    cSkinSetupSubMenu(string name, string displayText);
+    virtual ~cSkinSetupSubMenu() {};
+    string GetName(void) { return name; };
+};
+
+// --- cSkindesignerSkinSetup -----------------------------------------------------------
+
+class cSkindesignerSkinSetup : public cOsdMenu {
+private:
+    string skin;
+    string name;
+protected:
+    virtual eOSState ProcessKey(eKeys Key);
+    void Set(void);
+public:
+    cSkindesignerSkinSetup(string skin, string menu);
+    virtual ~cSkindesignerSkinSetup();
+};
+
+#endif //__SKINDESIGNER_SETUP_H
\ No newline at end of file
diff --git a/skindesclient-0.0.1/COPYING b/skindesclient-0.0.1/COPYING
new file mode 100644
index 0000000..f90922e
--- /dev/null
+++ b/skindesclient-0.0.1/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/skindesclient-0.0.1/Makefile b/skindesclient-0.0.1/Makefile
new file mode 100644
index 0000000..7e19d59
--- /dev/null
+++ b/skindesclient-0.0.1/Makefile
@@ -0,0 +1,123 @@
+#
+# Makefile for a Video Disk Recorder plugin
+#
+# $Id$
+
+# The official name of this plugin.
+# This name will be used in the '-P...' option of VDR to load the plugin.
+# By default the main source file also carries this name.
+
+PLUGIN = skindesclient
+
+### The version number of this plugin (taken from the main source file):
+
+VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
+
+### The directory environment:
+
+# Use package data if installed...otherwise assume we're under the VDR source directory:
+PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
+LIBDIR = $(call PKGCFG,libdir)
+LOCDIR = $(call PKGCFG,locdir)
+PLGCFG = $(call PKGCFG,plgcfg)
+#
+TMPDIR ?= /tmp
+
+### The compiler options:
+
+export CFLAGS   = $(call PKGCFG,cflags)
+export CXXFLAGS = $(call PKGCFG,cxxflags)
+
+### The version number of VDR's plugin API:
+
+APIVERSION = $(call PKGCFG,apiversion)
+
+### Allow user defined options to overwrite defaults:
+
+-include $(PLGCFG)
+
+### The name of the distribution archive:
+
+ARCHIVE = $(PLUGIN)-$(VERSION)
+PACKAGE = vdr-$(ARCHIVE)
+
+### The name of the shared object file:
+
+SOFILE = libvdr-$(PLUGIN).so
+
+### Includes and Defines (add further entries here):
+
+INCLUDES +=
+
+DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
+
+### The object files (add further files here):
+
+OBJS = $(PLUGIN).o \
+       libskindesigner/skindesignerosdbase.o
+
+### The main target:
+
+all: $(SOFILE) i18n
+
+### Implicit rules:
+
+%.o: %.c
+	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
+
+### Dependencies:
+
+MAKEDEP = $(CXX) -MM -MG
+DEPFILE = .dependencies
+$(DEPFILE): Makefile
+	@$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
+
+-include $(DEPFILE)
+
+### Internationalization (I18N):
+
+PODIR     = po
+I18Npo    = $(wildcard $(PODIR)/*.po)
+I18Nmo    = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs  = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
+I18Npot   = $(PODIR)/$(PLUGIN).pot
+
+%.mo: %.po
+	msgfmt -c -o $@ $<
+
+$(I18Npot): $(wildcard *.c)
+	xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
+
+%.po: $(I18Npot)
+	msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
+	@touch $@
+
+$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+	install -D -m644 $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmo) $(I18Npot)
+
+install-i18n: $(I18Nmsgs)
+
+### Targets:
+
+$(SOFILE): $(OBJS)
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
+
+install-lib: $(SOFILE)
+	install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
+
+install: install-lib install-i18n
+
+dist: $(I18Npo) clean
+	@-rm -rf $(TMPDIR)/$(ARCHIVE)
+	@mkdir $(TMPDIR)/$(ARCHIVE)
+	@cp -a * $(TMPDIR)/$(ARCHIVE)
+	@tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE)
+	@-rm -rf $(TMPDIR)/$(ARCHIVE)
+	@echo Distribution package created as $(PACKAGE).tgz
+
+clean:
+	@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
+	@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
diff --git a/skindesclient-0.0.1/README b/skindesclient-0.0.1/README
new file mode 100644
index 0000000..3b270ac
--- /dev/null
+++ b/skindesclient-0.0.1/README
@@ -0,0 +1,16 @@
+This is a "plugin" for the Video Disk Recorder (VDR).
+
+Written by:                  Louis Braun <louis.braun at gmx.de>
+
+Project's homepage:          ---
+
+Latest version available at: ---
+
+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.
+See the file COPYING for more information.
+
+Description: This is just an example how to use the skindesigner 
+template engine with a VDR plugin
diff --git a/skindesclient-0.0.1/libskindesigner/services.h b/skindesclient-0.0.1/libskindesigner/services.h
new file mode 100644
index 0000000..0a016fa
--- /dev/null
+++ b/skindesclient-0.0.1/libskindesigner/services.h
@@ -0,0 +1,52 @@
+#ifndef __SKINDESIGNERSERVICES_H
+#define __SKINDESIGNERSERVICES_H
+
+using namespace std;
+
+#include <string>
+#include <vector>
+#include <map>
+
+enum eMenuType {
+    mtList,
+    mtText
+};
+
+class cSDDisplayMenu : public cSkinDisplayMenu {
+public:
+    virtual void SetTitle(const char *Title);
+    virtual void SetPluginMenu(string name, int menu, int type, bool init);
+    virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable);
+    virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens);
+};
+
+/*********************************************************************
+* Data Structures for Service Calls
+*********************************************************************/
+
+// Data structure for service "RegisterPlugin"
+class RegisterPlugin {
+public:
+    RegisterPlugin(void) {
+        name = "";
+    };
+    void SetMenu(int key, string templateName) {
+        menus.insert(pair<int, string>(key, templateName));
+    }
+// in
+    string name;                 //name of plugin
+    map< int, string > menus;    //menus as key -> templatename hashmap 
+//out
+};
+
+// Data structure for service "GetDisplayMenu"
+class GetDisplayMenu {
+public:
+    GetDisplayMenu(void) {
+        displayMenu = NULL;
+    };
+// in
+//out   
+    cSDDisplayMenu *displayMenu;
+};
+#endif //__SKINDESIGNERSERVICES_H
\ No newline at end of file
diff --git a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c
new file mode 100644
index 0000000..821efdc
--- /dev/null
+++ b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c
@@ -0,0 +1,172 @@
+#include "skindesignerosdbase.h"
+
+/**********************************************************************
+* cSkindesignerOsdItem
+**********************************************************************/
+cSkindesignerOsdItem::cSkindesignerOsdItem(eOSState State) : cOsdItem(State) {
+    sdDisplayMenu = NULL;
+}
+
+cSkindesignerOsdItem::cSkindesignerOsdItem(const char *Text, eOSState State, bool Selectable) : cOsdItem(Text, State, Selectable) {
+    sdDisplayMenu = NULL;
+}  
+
+cSkindesignerOsdItem::~cSkindesignerOsdItem() {
+
+}
+
+void cSkindesignerOsdItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable) {
+    if (sdDisplayMenu) {
+        if (!sdDisplayMenu->SetItemPlugin(&stringTokens, &intTokens, &loopTokens, Index, Current, Selectable)) {
+            DisplayMenu->SetItem(Text(), Index, Current, Selectable);
+        }
+    } else {
+        DisplayMenu->SetItem(Text(), Index, Current, Selectable);
+    }
+}
+
+void cSkindesignerOsdItem::AddStringToken(string key, string value) {
+    stringTokens.insert(pair<string,string>(key, value));
+}
+
+void cSkindesignerOsdItem::AddIntToken(string key, int value) {
+    intTokens.insert(pair<string,int>(key, value));
+}
+
+void cSkindesignerOsdItem::AddLoopToken(string loopName, map<string, string> &tokens) {
+    map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName);
+    if (hitLoop == loopTokens.end()) {
+        vector<map<string, string> > tokenVector;
+        tokenVector.push_back(tokens);
+        loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector));
+    } else {
+        vector<map<string, string> > *tokenVector = &hitLoop->second;
+        tokenVector->push_back(tokens);
+    }
+}
+
+
+/**********************************************************************
+* cSkindesignerOsdMenu
+**********************************************************************/
+cSkindesignerOsdMenu::cSkindesignerOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) : cOsdMenu(Title, c0, c1, c2, c3, c4) {
+    init = true;
+    displayText = false;
+    sdDisplayMenu = NULL;
+    pluginName = "";
+    SetMenuCategory(mcPlugin);
+    SetSkinDesignerDisplayMenu();
+}
+
+cSkindesignerOsdMenu::~cSkindesignerOsdMenu() {
+
+}
+
+void cSkindesignerOsdMenu::SetPluginMenu(int menu, eMenuType type) {
+    if (type == mtList)
+        displayText = false;
+    else if (type == mtText)
+        displayText = true;
+
+    if (sdDisplayMenu) {
+        sdDisplayMenu->SetPluginMenu(pluginName, menu, type, init);
+    }
+    init = false;
+}
+
+bool cSkindesignerOsdMenu::SetSkinDesignerDisplayMenu(void) {
+    static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner");
+    if (!pSkinDesigner) {
+        return false;   
+    }
+    GetDisplayMenu call;
+    bool ok = pSkinDesigner->Service("GetDisplayMenu", &call);
+    if (ok && call.displayMenu) {
+        sdDisplayMenu = call.displayMenu;
+        return true;
+    }
+    return false;
+}
+
+void cSkindesignerOsdMenu::ClearTokens(void) {
+    text = "";
+    stringTokens.clear();
+    intTokens.clear();
+    loopTokens.clear();
+}
+
+void cSkindesignerOsdMenu::AddStringToken(string key, string value) {
+    stringTokens.insert(pair<string,string>(key, value));
+}
+
+void cSkindesignerOsdMenu::AddIntToken(string key, int value) {
+    intTokens.insert(pair<string,int>(key, value));
+}
+
+void cSkindesignerOsdMenu::AddLoopToken(string loopName, map<string, string> &tokens) {
+    map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName);
+    if (hitLoop == loopTokens.end()) {
+        vector<map<string, string> > tokenVector;
+        tokenVector.push_back(tokens);
+        loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector));
+    } else {
+        vector<map<string, string> > *tokenVector = &hitLoop->second;
+        tokenVector->push_back(tokens);
+    }
+}
+
+void cSkindesignerOsdMenu::TextKeyLeft(void) {
+    if (!displayText)
+        return;
+    DisplayMenu()->Scroll(true, true);
+}
+
+void cSkindesignerOsdMenu::TextKeyRight(void) {
+    if (!displayText)
+        return;
+    DisplayMenu()->Scroll(false, true);
+}
+
+void cSkindesignerOsdMenu::TextKeyUp(void) {
+    if (!displayText)
+        return;
+    DisplayMenu()->Scroll(true, false);
+}
+
+void cSkindesignerOsdMenu::TextKeyDown(void) {
+    if (!displayText)
+        return;
+    DisplayMenu()->Scroll(false, false);
+}
+
+void cSkindesignerOsdMenu::Display(void) {
+    if (displayText) {
+        if (sdDisplayMenu) {
+            sdDisplayMenu->SetTitle(Title());
+            if (sdDisplayMenu->SetPluginText(&stringTokens, &intTokens, &loopTokens)) {
+                sdDisplayMenu->Flush();
+            } else {
+                DisplayMenu()->Clear();
+                DisplayMenu()->SetTitle(Title());
+                DisplayMenu()->SetText(text.c_str(), false);
+                DisplayMenu()->Flush();
+            }
+        } else {
+            DisplayMenu()->Clear();
+            DisplayMenu()->SetTitle(Title());
+            DisplayMenu()->SetText(text.c_str(), false);
+            DisplayMenu()->Flush();
+        }
+        return;
+    }
+    if (sdDisplayMenu) {
+        sdDisplayMenu->SetTitle(Title());
+        for (cOsdItem *item = First(); item; item = Next(item)) {
+            cSkindesignerOsdItem *sdItem = dynamic_cast<cSkindesignerOsdItem*>(item);
+            if (sdItem) {
+                sdItem->SetDisplayMenu(sdDisplayMenu);
+            }
+        }
+    }
+    cOsdMenu::Display();
+}
diff --git a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h
new file mode 100644
index 0000000..88068af
--- /dev/null
+++ b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h
@@ -0,0 +1,62 @@
+#ifndef __SKINDESIGNEROSDBASE_H
+#define __SKINDESIGNEROSDBASE_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+#include <vdr/osdbase.h>
+#include <vdr/plugin.h>
+#include "services.h"
+
+class cSkindesignerOsdItem : public cOsdItem {
+private:
+    cSDDisplayMenu *sdDisplayMenu;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > loopTokens;
+protected:
+public:
+    cSkindesignerOsdItem(eOSState State = osUnknown);
+    cSkindesignerOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
+    virtual ~cSkindesignerOsdItem();
+    virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
+    void SetDisplayMenu(cSDDisplayMenu *sdDisplayMenu) { this->sdDisplayMenu = sdDisplayMenu; };
+    void AddStringToken(string key, string value);
+    void AddIntToken(string key, int value);
+    void AddLoopToken(string loopName, map<string, string> &tokens);
+};
+
+
+class cSkindesignerOsdMenu : public cOsdMenu {
+private:
+    bool init;
+    bool displayText;
+    string pluginName;
+    cSDDisplayMenu *sdDisplayMenu;
+    string text;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > loopTokens;
+    bool SetSkinDesignerDisplayMenu(void);
+protected:
+    void ClearTokens(void);
+    void SetPluginName(string name) {pluginName = name; };
+    void SetPluginMenu(int menu, eMenuType type);
+    void SetText(string text) { this->text = text; };
+    void AddStringToken(string key, string value);
+    void AddIntToken(string key, int value);
+    void AddLoopToken(string loopName, map<string, string> &tokens);
+    void TextKeyLeft(void);
+    void TextKeyRight(void);
+    void TextKeyUp(void);
+    void TextKeyDown(void);
+public:
+    cSkindesignerOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
+    virtual ~cSkindesignerOsdMenu();
+    virtual void Display(void);
+};
+
+#endif // __SKINDESIGNEROSDBASE_H
+
diff --git a/skindesclient-0.0.1/osdmenu.c b/skindesclient-0.0.1/osdmenu.c
new file mode 100644
index 0000000..e32b2d1
--- /dev/null
+++ b/skindesclient-0.0.1/osdmenu.c
@@ -0,0 +1,148 @@
+#include <vdr/osdbase.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <sstream>
+#include "libskindesigner/skindesignerosdbase.h"
+
+enum eMenus {
+    meListMain,
+    meListSub,
+    meDetail
+};
+
+class cPlugOsdMenu : public cSkindesignerOsdMenu {
+private:
+    void SetMenu(int numItems, bool subfolder = false);
+    void SetDetailView(int element);
+public:
+    cPlugOsdMenu(void);
+    virtual ~cPlugOsdMenu();
+    virtual eOSState ProcessKey(eKeys key);
+};
+
+
+//***************************************************************************
+// Public Functions
+//***************************************************************************
+
+cPlugOsdMenu::cPlugOsdMenu(void) : cSkindesignerOsdMenu("Skindesigner Client") {
+    SetPluginName("skindesclient");
+    SetMenu(10);
+}
+
+cPlugOsdMenu::~cPlugOsdMenu(void) {
+    
+}
+
+eOSState cPlugOsdMenu::ProcessKey(eKeys key) {
+    eOSState state = cOsdMenu::ProcessKey(key);
+    switch (key) {
+        case kOk: {
+            int element = Current();
+            if (element%2)
+                SetDetailView(element);
+            else
+                SetMenu(25, true);
+            state = osContinue;
+            break;
+        } case kLeft: {
+            TextKeyLeft();
+            state = osContinue;
+            break;
+        } case kRight: {
+            TextKeyRight();
+            state = osContinue;            
+            break;
+        } case kUp: {
+            TextKeyUp();
+            state = osContinue;            
+            break;
+        } case kDown: {
+            TextKeyDown();
+            state = osContinue;            
+            break;
+        }
+        default:
+            break;
+    }
+    return state;
+}
+
+//***************************************************************************
+// Private Functions
+//***************************************************************************
+
+void cPlugOsdMenu::SetMenu(int numItems, bool subfolder) {
+    eMenus menu = subfolder ? meListSub : meListMain;
+    SetPluginMenu(menu, mtList);
+    Clear();
+
+    for (int i=0; i < numItems; i++) {
+        cSkindesignerOsdItem *item = new cSkindesignerOsdItem();
+        //add some tokens to the menu item
+        stringstream text;
+        if (i%2)
+            text << "DetailItem" << (i+1);
+        else
+            text << "FolderItem" << (i+1);
+        item->SetText(text.str().c_str());
+        item->AddIntToken("itemnumber", i);
+        item->AddStringToken("menuitemtext", text.str().c_str());
+
+        stringstream text2;
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        text2 << "CurrentItemText" << (i+1) << "\n";
+        item->AddStringToken("currentitemtext", text2.str().c_str());
+        
+        //Loop Token Example
+        for (int row=0; row<20; row++) {
+            map<string, string> tokens;
+            for (int col=0; col<3; col++) {
+                stringstream key;
+                stringstream value;
+                key << "loop1[" << "col" << col << "]";
+                value << "menuitem" << i << "-" << row << "x" << col;
+                tokens.insert(pair<string,string>(key.str(), value.str()));
+            }
+            item->AddLoopToken("loop1", tokens);
+        }
+        //Add item
+        bool current = (i==0)?true:false;
+        Add(item, current);
+    }
+    SetHelp("Red", "Green", "Yellow", "Blue");
+    Display();
+}
+
+void cPlugOsdMenu::SetDetailView(int element) {
+    SetPluginMenu(meDetail, mtText);
+    Clear();
+    ClearTokens();
+    
+    SetText("Text to be displayed if skindesigner templates are not available");
+
+    AddIntToken("menuitem", element);
+    AddStringToken("tabtext", "String Token to be displayed if skindesigner template is available");
+
+    //Loop Token Example
+    for (int row=0; row<25; row++) {
+        map<string, string> tokens;
+        for (int col=0; col<10; col++) {
+            stringstream key;
+            stringstream value;
+            key << "loop1[" << "col" << col << "]";
+            value << "row" << row << "-" << "col" << "-" << col;
+            tokens.insert(pair<string,string>(key.str(), value.str()));
+        }
+        AddLoopToken("loop1", tokens);
+    }
+
+    SetHelp("Red", "Green", "Yellow", "Blue");
+    Display();
+}
diff --git a/skindesclient-0.0.1/skindesclient.c b/skindesclient-0.0.1/skindesclient.c
new file mode 100644
index 0000000..01bff96
--- /dev/null
+++ b/skindesclient-0.0.1/skindesclient.c
@@ -0,0 +1,147 @@
+/*
+ * skindesclient.c: A plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ * $Id$
+ */
+
+#include <vdr/plugin.h>
+#include "osdmenu.c"
+#include "libskindesigner/services.h"
+
+static const char *VERSION        = "0.0.1";
+static const char *DESCRIPTION    = "SkinDesigner Test Client";
+static const char *MAINMENUENTRY  = "Skindesclient";
+
+class cPluginSkindesclient : public cPlugin {
+private:
+  // Add any member variables or functions you may need here.
+public:
+  cPluginSkindesclient(void);
+  virtual ~cPluginSkindesclient();
+  virtual const char *Version(void) { return VERSION; }
+  virtual const char *Description(void) { return DESCRIPTION; }
+  virtual const char *CommandLineHelp(void);
+  virtual bool ProcessArgs(int argc, char *argv[]);
+  virtual bool Initialize(void);
+  virtual bool Start(void);
+  virtual void Stop(void);
+  virtual void Housekeeping(void);
+  virtual void MainThreadHook(void);
+  virtual cString Active(void);
+  virtual time_t WakeupTime(void);
+  virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
+  virtual cOsdObject *MainMenuAction(void);
+  virtual cMenuSetupPage *SetupMenu(void);
+  virtual bool SetupParse(const char *Name, const char *Value);
+  virtual bool Service(const char *Id, void *Data = NULL);
+  virtual const char **SVDRPHelpPages(void);
+  virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
+  };
+
+cPluginSkindesclient::cPluginSkindesclient(void)
+{
+
+}
+
+cPluginSkindesclient::~cPluginSkindesclient()
+{
+}
+
+const char *cPluginSkindesclient::CommandLineHelp(void)
+{
+  return NULL;
+}
+
+bool cPluginSkindesclient::ProcessArgs(int argc, char *argv[])
+{
+  return true;
+}
+
+bool cPluginSkindesclient::Initialize(void)
+{
+  return true;
+}
+
+bool cPluginSkindesclient::Start(void)
+{
+  RegisterPlugin reg;
+  reg.name = "skindesclient";
+  reg.SetMenu(meListMain, "menulistmain.xml");
+  reg.SetMenu(meListSub, "menulistsub.xml");
+  reg.SetMenu(meDetail, "menudetail.xml");
+  static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner");
+  if (pSkinDesigner) {
+    bool ok = pSkinDesigner->Service("RegisterPlugin", &reg);
+  } else {
+    esyslog("skindesclient: skindesigner not available");
+  }
+  return true;
+}
+
+void cPluginSkindesclient::Stop(void)
+{
+  // Stop any background activities the plugin is performing.
+}
+
+void cPluginSkindesclient::Housekeeping(void)
+{
+  // Perform any cleanup or other regular tasks.
+}
+
+void cPluginSkindesclient::MainThreadHook(void)
+{
+  // Perform actions in the context of the main program thread.
+  // WARNING: Use with great care - see PLUGINS.html!
+}
+
+cString cPluginSkindesclient::Active(void)
+{
+  // Return a message string if shutdown should be postponed
+  return NULL;
+}
+
+time_t cPluginSkindesclient::WakeupTime(void)
+{
+  // Return custom wakeup time for shutdown script
+  return 0;
+}
+
+cOsdObject *cPluginSkindesclient::MainMenuAction(void)
+{
+  cOsdObject *menu = new cPlugOsdMenu();  
+  return menu;
+}
+
+cMenuSetupPage *cPluginSkindesclient::SetupMenu(void)
+{
+  // Return a setup menu in case the plugin supports one.
+  return NULL;
+}
+
+bool cPluginSkindesclient::SetupParse(const char *Name, const char *Value)
+{
+  // Parse your own setup parameters and store their values.
+  return false;
+}
+
+bool cPluginSkindesclient::Service(const char *Id, void *Data)
+{
+  // Handle custom service requests from other plugins
+  return false;
+}
+
+const char **cPluginSkindesclient::SVDRPHelpPages(void)
+{
+  // Return help text for SVDRP commands this plugin implements
+  return NULL;
+}
+
+cString cPluginSkindesclient::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
+{
+  // Process SVDRP commands this plugin implements
+  return NULL;
+}
+
+VDRPLUGINCREATOR(cPluginSkindesclient); // Don't touch this!
diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml
new file mode 100644
index 0000000..82f13ab
--- /dev/null
+++ b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+    <!-- dummyheader -->
+    <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+    <colorbuttons>
+    </colorbuttons>
+    <!-- Available Variables in detail header:
+    {menuitem}          Number of menu item element from list 
+    {tabtext}           Text for Tab
+    -->
+    <detailheader>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="3">
+            <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="Header for menuitem {menuitem} detailed information" />
+        </area>
+    </detailheader>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in tab elements:
+    {menuitem}          Number of menu item element from list 
+    {tabtext}           Text for Tab
+    {loop1[]}           test array
+    {loop1[col0]}       test array first col
+    ...
+    {loop1[col3]}       test array fourth col
+    -->
+    <!-- TAB TEST1 -->
+    <tab name="Test1" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" />
+    </tab>
+    <!-- TAB TEST2 -->
+    <tab name="Test2" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext x="10" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" />
+        <loop name="loop1" x="0" y="9%" width="{areawidth} - 40" orientation="vertical">
+            <drawtext x="20" y="0" width="{areawidth} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]} {loop1[col3]}" />
+        </loop>
+    </tab>
+    <!-- Available Variables tablabels:
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="0" y="85%" width="98%" height="5%" layer="3">
+            <loop name="tabs" x="0" y="0" orientation="horizontal">
+                <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" />
+                <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="  {tabs[title]}  " />
+            </loop>
+        </area>
+    </tablabels>
+</menuplugin>
\ No newline at end of file
diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml
new file mode 100644
index 0000000..2d88c32
--- /dev/null
+++ b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    -->
+    <header>
+    </header>
+
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="6">
+        <!-- Available Variables schedules menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {current}
+        {separator}
+        {itemnumber}
+        {menuitemtext}
+        {currentitemtext}
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <area x="1%" width="58%" layer="3">
+                <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables schedules menu currentelement:
+        {itemnumber}
+        {menuitemtext}
+        {currentitemtext}
+        {loop1[]}           test array
+        {loop1[col0]}       test array first col
+        ...
+        {loop1[col2]}       test array third col
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="63%" y="0" width="36%" height="85%" layer="3">
+                <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" />
+                <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" />
+                <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" />
+            </area>
+            <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3">
+                <loop name="loop1" x="0" y="0" orientation="vertical">
+                    <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menuplugin>
\ No newline at end of file
diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml
new file mode 100644
index 0000000..acc3341
--- /dev/null
+++ b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    -->
+    <header>
+    </header>
+
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="12">
+        <!-- Available Variables schedules menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {current}
+        {separator}
+        {itemnumber}
+        {menuitemtext}
+        {currentitemtext}
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <area x="1%" width="58%" layer="3">
+                <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables schedules menu currentelement:
+        {itemnumber}
+        {menuitemtext}
+        {currentitemtext}
+        {loop1[]}           test array
+        {loop1[col0]}       test array first col
+        ...
+        {loop1[col2]}       test array third col
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="63%" y="0" width="36%" height="85%" layer="3">
+                <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" />
+                <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" />
+                <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" />
+            </area>
+            <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3">
+                <loop name="loop1" x="0" y="0" orientation="vertical">
+                    <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menuplugin>
\ No newline at end of file
diff --git a/skindesigner.c b/skindesigner.c
new file mode 100644
index 0000000..b641cd8
--- /dev/null
+++ b/skindesigner.c
@@ -0,0 +1,262 @@
+/*
+ * skindesigner.c: A plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ * $Id$
+ */
+#include <getopt.h>
+#include <vdr/plugin.h>
+
+#define DEFINE_CONFIG 1
+#include "config.h"
+#include "designer.h"
+#include "setup.h"
+#include "services.h"
+
+#if defined(APIVERSNUM) && APIVERSNUM < 20000 
+#error "VDR-2.0.0 API version or greater is required!"
+#endif
+
+
+static const char *VERSION        = "0.2.2";
+static const char *DESCRIPTION    = trNOOP("Skin Designer");
+
+class cPluginSkinDesigner : public cPlugin {
+private:
+    vector<cSkinDesigner*> skins;
+public:
+    cPluginSkinDesigner(void);
+    virtual ~cPluginSkinDesigner();
+    virtual const char *Version(void) { return VERSION; }
+    virtual const char *Description(void) { return tr(DESCRIPTION); }
+    virtual const char *CommandLineHelp(void);
+    virtual bool ProcessArgs(int argc, char *argv[]);
+    virtual bool Initialize(void);
+    virtual bool Start(void);
+    virtual void Stop(void);
+    virtual void Housekeeping(void);
+    virtual void MainThreadHook(void);
+    virtual cString Active(void);
+    virtual time_t WakeupTime(void);
+    virtual const char *MainMenuEntry(void) {return NULL;}
+    virtual cOsdObject *MainMenuAction(void);
+    virtual cMenuSetupPage *SetupMenu(void);
+    virtual bool SetupParse(const char *Name, const char *Value);
+    virtual bool Service(const char *Id, void *Data = NULL);
+    virtual const char **SVDRPHelpPages(void);
+    virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
+};
+
+cPluginSkinDesigner::cPluginSkinDesigner(void) {
+}
+
+cPluginSkinDesigner::~cPluginSkinDesigner() {
+}
+
+const char *cPluginSkinDesigner::CommandLineHelp(void) {
+  return
+         "  -s <SKINPATH>, --skinpath=<SKINPATH> Set directory where xml skins are stored\n"
+         "  -l <LOGOPATH>, --logopath=<LOGOPATH> Set directory where a common logo set for all skins is stored\n"
+         "  -e <EPGIMAGESPATH>, --epgimages=<IMAGESPATH> Set directory where epgimages are stored\n";
+}
+
+bool cPluginSkinDesigner::ProcessArgs(int argc, char *argv[]) {
+  // Implement command line argument processing here if applicable.
+    static const struct option long_options[] = {
+        { "epgimages", required_argument, NULL, 'e' },
+        { "logopath", required_argument, NULL, 'l' },
+        { "skinpath", required_argument, NULL, 's' },
+        { 0, 0, 0, 0 }
+    };
+
+    int c;
+    while ((c = getopt_long(argc, argv, "e:s:l:", long_options, NULL)) != -1) {
+        switch (c) {
+            case 'e':
+                config.SetEpgImagePath(cString(optarg));
+                break;
+            case 'l':
+                config.SetLogoPath(cString(optarg));
+                break;
+            case 's':
+                config.SetSkinPath(cString(optarg));
+                break;
+            default:
+                return false;
+        }
+    }
+    return true;
+}
+
+bool cPluginSkinDesigner::Initialize(void) {
+    return true;
+}
+
+bool cPluginSkinDesigner::Start(void) {
+    cXmlParser::InitLibXML();
+    cImageImporterSVG::InitLibRSVG();
+    bool trueColorAvailable = true;
+    
+    if (!cOsdProvider::SupportsTrueColor()) {
+        esyslog("skindesigner: No TrueColor OSD found! Using default Skin LCARS!");
+        trueColorAvailable = false;
+    } else
+        dsyslog("skindesigner: TrueColor OSD found");
+    config.SetOsdLanguage();
+    config.SetPathes();
+    config.ReadSkins();
+    config.InitSkinIterator();
+    string skin = "";
+    while (config.GetSkin(skin)) {
+        config.ReadSkinSetup(skin);
+        cSkinDesigner *newSkin = new cSkinDesigner(skin);
+        skins.push_back(newSkin);
+        if (!trueColorAvailable) {
+            newSkin->ActivateBackupSkin();
+        }
+    }
+    config.TranslateSetup();
+    config.SetSkinSetupParameters();
+
+    if (skins.size() == 0) {
+        esyslog("skindesigner: no skins found! Using default Skin LCARS!");
+    }
+    return true;
+}
+
+void cPluginSkinDesigner::Stop(void) {
+    delete imgCache;
+    delete fontManager;
+    cXmlParser::CleanupLibXML();
+}
+
+void cPluginSkinDesigner::Housekeeping(void) {
+}
+
+void cPluginSkinDesigner::MainThreadHook(void) {
+}
+
+cString cPluginSkinDesigner::Active(void) {
+    return NULL;
+}
+
+time_t cPluginSkinDesigner::WakeupTime(void) {
+    return 0;
+}
+
+cOsdObject *cPluginSkinDesigner::MainMenuAction(void) {
+    return NULL;
+}
+
+cMenuSetupPage *cPluginSkinDesigner::SetupMenu(void) {
+    return new cSkinDesignerSetup();
+}
+
+bool cPluginSkinDesigner::SetupParse(const char *Name, const char *Value) {
+    return config.SetupParse(Name, Value);
+}
+
+bool cPluginSkinDesigner::Service(const char *Id, void *Data) {
+    if (Data == NULL)
+        return false;
+
+    if (strcmp(Id, "RegisterPlugin") == 0) {
+        RegisterPlugin* call = (RegisterPlugin*) Data;
+        if (call->menus.size() < 1) {
+            esyslog("skindesigner: error - plugin without menus registered");
+            return false;
+        }
+        config.AddPlugin(call->name, call->menus);
+        dsyslog("skindesigner: plugin %s has registered %ld templates", call->name.c_str(), call->menus.size());
+        return true;
+    } else if (strcmp(Id, "GetDisplayMenu") == 0) {
+        GetDisplayMenu* call = (GetDisplayMenu*) Data;
+        cSkin *current = Skins.Current();
+        for (vector<cSkinDesigner*>::iterator skin = skins.begin(); skin != skins.end(); skin++) {
+            if (*skin == current) {
+                cSDDisplayMenu *displayMenu = (*skin)->GetDisplayMenu();
+                if (displayMenu) {
+                    call->displayMenu = displayMenu;
+                    return true;
+                } else
+                    return false;
+            }
+        }
+        return false;
+    }
+
+    return false;
+}
+
+const char **cPluginSkinDesigner::SVDRPHelpPages(void) {
+    static const char *HelpPages[] = {
+        "RELD\n"
+        "    force reload of templates and caches",
+        "SCTK\n"
+        "    Set custom Token name = value",
+        "LCTK\n"
+        "    List custom Tokens",
+        "LSTF\n"
+        "    List available Fonts",
+        0
+    };
+    return HelpPages;
+}
+
+cString cPluginSkinDesigner::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) {
+    
+    cSkinDesigner *activeSkin = NULL;
+    for (vector<cSkinDesigner*>::iterator skin = skins.begin(); skin != skins.end(); skin++) {
+        string activeSkinName = Setup.OSDSkin;
+        string currentSkinName = (*skin)->Description();
+        if (!currentSkinName.compare(activeSkinName)) {
+            activeSkin = *skin;
+            break;
+        }
+    }
+
+    if (!activeSkin) {
+        ReplyCode = 550;
+        return "";
+    }
+
+    if (strcasecmp(Command, "RELD") == 0) {
+        config.ClearSkinSetups();
+        config.InitSkinIterator();
+        string skin = "";
+        while (config.GetSkin(skin)) {
+            config.ReadSkinSetup(skin);
+        }
+        config.TranslateSetup();
+        config.SetSkinSetupParameters();
+        activeSkin->Reload();
+        ReplyCode = 250;
+        return "SKINDESIGNER reload of templates and caches forced.";
+    } else if (strcasecmp(Command, "LSTF") == 0) {
+        activeSkin->ListAvailableFonts();
+        ReplyCode = 250;
+        return "SKINDESIGNER available fonts listed in syslog.";
+    } else if (strcasecmp(Command, "SCTK") == 0) {
+        if (!Option) {
+            ReplyCode = 501;
+            return "SKINDESIGNER SCTK Error: no Token name = value set";
+        }
+        bool optionOk = activeSkin->SetCustomToken(Option);
+        if (optionOk) {
+            ReplyCode = 250;
+            return cString::sprintf("SKINDESIGNER Set custom Token %s", Option);
+        } else {
+            ReplyCode = 501;
+            return cString::sprintf("SKINDESIGNER Invalid custom Token %s", Option);
+        }
+    } else if (strcasecmp(Command, "LCTK") == 0) {
+        activeSkin->ListCustomTokens();
+        ReplyCode = 250;
+        return "SKINDESIGNER Custom Tokens listed in Log";
+    }
+    ReplyCode = 502;
+    return "";
+}
+
+VDRPLUGINCREATOR(cPluginSkinDesigner); // Don't touch this!
diff --git a/skins/blackhole/globals.xml b/skins/blackhole/globals.xml
new file mode 100644
index 0000000..9096212
--- /dev/null
+++ b/skins/blackhole/globals.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+        <token name="tr(noactivetimers)">
+            <trans lang="en_EN">no active timers</trans>
+            <trans lang="de_DE">keine aktiven Timer</trans>
+        </token>
+        <token name="tr(transponder)">
+            <trans lang="en_EN">Transponder</trans>
+            <trans lang="de_DE">Transponder</trans>
+        </token>
+        <token name="tr(schedule)">
+            <trans lang="en_EN">Schedule</trans>
+            <trans lang="de_DE">Programm</trans>
+        </token>
+        <token name="tr(since)">
+            <trans lang="en_EN">since</trans>
+            <trans lang="de_DE">Seit</trans>
+        </token>
+        <token name="tr(reruns)">
+            <trans lang="en_EN">Reruns</trans>
+            <trans lang="de_DE">Wiederholungen</trans>
+        </token>
+        <token name="tr(rerunsof)">
+            <trans lang="en_EN">Reruns of</trans>
+            <trans lang="de_DE">Wiederholungen von</trans>
+        </token>
+        <token name="tr(actors)">
+            <trans lang="en_EN">Actors</trans>
+            <trans lang="de_DE">Schauspieler</trans>
+        </token>
+        <token name="tr(episode)">
+            <trans lang="en_EN">Episode</trans>
+            <trans lang="de_DE">Folge</trans>
+        </token>
+        <token name="tr(season)">
+            <trans lang="en_EN">Season</trans>
+            <trans lang="de_DE">Staffel</trans>
+        </token>
+        <token name="tr(gueststars)">
+            <trans lang="en_EN">Guest Stars</trans>
+            <trans lang="de_DE">Gaststars</trans>
+        </token>
+        <token name="tr(seriesfirstaired)">
+            <trans lang="en_EN">Series First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Serie</trans>
+        </token>
+        <token name="tr(episodefirstaired)">
+            <trans lang="en_EN">Episode First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Episode</trans>
+        </token>
+        <token name="tr(network)">
+            <trans lang="en_EN">Network</trans>
+            <trans lang="de_DE">TV Station</trans>
+        </token>
+        <token name="tr(genre)">
+            <trans lang="en_EN">Genre</trans>
+            <trans lang="de_DE">Genre</trans>
+        </token>
+        <token name="tr(status)">
+            <trans lang="en_EN">Status</trans>
+            <trans lang="de_DE">Status</trans>
+        </token>
+        <token name="tr(rating)">
+            <trans lang="en_EN">Rating</trans>
+            <trans lang="de_DE">Bewertung</trans>
+        </token>
+        <token name="tr(episoderating)">
+            <trans lang="en_EN">Episode Rating</trans>
+            <trans lang="de_DE">Bewertung der Folge</trans>
+        </token>
+        <token name="tr(recinfo)">
+            <trans lang="en_EN">Recording Information</trans>
+            <trans lang="de_DE">Aufnahme Informationen</trans>
+        </token>
+        <token name="tr(seriesgalery)">
+            <trans lang="en_EN">Series Galery</trans>
+            <trans lang="de_DE">Serien Galerie</trans>
+        </token>
+        <token name="tr(moviegalery)">
+            <trans lang="en_EN">Movie Galery</trans>
+            <trans lang="de_DE">Spielfilm Galerie</trans>
+        </token>
+        <token name="tr(originaltitle)">
+            <trans lang="en_EN">Original Title</trans>
+            <trans lang="de_DE">Originaltitel</trans>
+        </token>
+        <token name="tr(budget)">
+            <trans lang="en_EN">Budget</trans>
+            <trans lang="de_DE">Budget</trans>
+        </token>
+        <token name="tr(revenue)">
+            <trans lang="en_EN">Revenue</trans>
+            <trans lang="de_DE">Einnahmen</trans>
+        </token>
+        <token name="tr(adult)">
+            <trans lang="en_EN">Adult</trans>
+            <trans lang="de_DE">Nur für Erwachsene</trans>
+        </token>
+        <token name="tr(releasedate)">
+            <trans lang="en_EN">Release Date</trans>
+            <trans lang="de_DE">Erscheinungsdatum</trans>
+        </token>
+        <token name="tr(runtime)">
+            <trans lang="en_EN">Runtime</trans>
+            <trans lang="de_DE">Laufzeit</trans>
+        </token>
+        <token name="tr(popularity)">
+            <trans lang="en_EN">Popularity</trans>
+            <trans lang="de_DE">Popularität</trans>
+        </token>
+        <token name="tr(voteaverage)">
+            <trans lang="en_EN">Vote Average</trans>
+            <trans lang="de_DE">Durchschnittliche Wertung</trans>
+        </token>
+        <token name="tr(homepage)">
+            <trans lang="en_EN">Homepage</trans>
+            <trans lang="de_DE">Homepage</trans>
+        </token>
+        <token name="tr(recsize)">
+            <trans lang="en_EN">Recording size</trans>
+            <trans lang="de_DE">Größe der Aufnahme</trans>
+        </token>
+        <token name="tr(recsizecutted)">
+            <trans lang="en_EN">Cutted Recording Size</trans>
+            <trans lang="de_DE">Größe der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(reclength)">
+            <trans lang="en_EN">Recording Length</trans>
+            <trans lang="de_DE">Länge der Aufnahme</trans>
+        </token>
+        <token name="tr(reclengthcutted)">
+            <trans lang="en_EN">Cutted Recording Length</trans>
+            <trans lang="de_DE">Länge der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(bitrate)">
+            <trans lang="en_EN">Bit Rate</trans>
+            <trans lang="de_DE">Bitrate</trans>
+        </token>
+        <token name="tr(format)">
+            <trans lang="en_EN">Format</trans>
+            <trans lang="de_DE">Format</trans>
+        </token>
+        <token name="tr(searchtimer)">
+            <trans lang="en_EN">Searchtimer</trans>
+            <trans lang="de_DE">Suchtimer</trans>
+        </token>
+        <token name="tr(volume)">
+            <trans lang="en_EN">Volume</trans>
+            <trans lang="de_DE">Lautstärke</trans>
+        </token>
+        <token name="tr(pause)">
+            <trans lang="en_EN">Pause</trans>
+            <trans lang="de_DE">Pause</trans>
+        </token>
+        <token name="tr(temp)">
+            <trans lang="en_EN">Temperature</trans>
+            <trans lang="de_DE">Temperatur</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(todaymin)">
+            <trans lang="en_EN">minimum today</trans>
+            <trans lang="de_DE">heutiges Minimum</trans>
+        </token>
+        <token name="tr(todaymax)">
+            <trans lang="en_EN">maximum today</trans>
+            <trans lang="de_DE">heutiges Maximum</trans>
+        </token>
+        <token name="tr(precipitationprobability)">
+            <trans lang="en_EN">Precipitation Prob.</trans>
+            <trans lang="de_DE">Regenwahrsch.</trans>
+        </token>
+        <token name="tr(precipitationintensity)">
+            <trans lang="en_EN">Precipitation Intensity</trans>
+            <trans lang="de_DE">Regenmenge</trans>
+        </token>
+        <token name="tr(humidity)">
+            <trans lang="en_EN">Humidity</trans>
+            <trans lang="de_DE">Luftfeuchtigkeit</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(windbearing)">
+            <trans lang="en_EN">Wind Bearing</trans>
+            <trans lang="de_DE">Windrichtung</trans>
+        </token>
+        <token name="tr(windspeed)">
+            <trans lang="en_EN">Wind Speed</trans>
+            <trans lang="de_DE">Windgeschwindigkeit</trans>
+        </token>
+        <token name="tr(cloudcover)">
+            <trans lang="en_EN">Cloud Cover</trans>
+            <trans lang="de_DE">Bewölkung</trans>
+        </token>
+        <token name="tr(pressure)">
+            <trans lang="en_EN">Pressure</trans>
+            <trans lang="de_DE">Luftdruck</trans>
+        </token>
+        <token name="tr(ozone)">
+            <trans lang="en_EN">Ozone</trans>
+            <trans lang="de_DE">Ozon</trans>
+        </token>
+        <token name="tr(visibility)">
+            <trans lang="en_EN">visibility</trans>
+            <trans lang="de_DE">Sicht</trans>
+        </token>
+        <token name="tr(conditions)">
+            <trans lang="en_EN">Weather Conditions</trans>
+            <trans lang="de_DE">Wetterlage</trans>
+        </token>
+        <token name="tr(from)">
+            <trans lang="en_EN">from</trans>
+            <trans lang="de_DE">aus</trans>
+        </token>
+        <token name="tr(felt)">
+            <trans lang="en_EN">felt</trans>
+            <trans lang="de_DE">gefühlt</trans>
+        </token>
+        <token name="tr(min)">
+            <trans lang="en_EN">min</trans>
+            <trans lang="de_DE">min</trans>
+        </token>
+        <token name="tr(max)">
+            <trans lang="en_EN">max</trans>
+            <trans lang="de_DE">max</trans>
+        </token>
+       <token name="tr(for)">
+            <trans lang="en_EN">for</trans>
+            <trans lang="de_DE">für</trans>
+        </token>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+    </fonts>
+</globals>
diff --git a/skins/blackhole/setup.xml b/skins/blackhole/setup.xml
new file mode 100644
index 0000000..e590344
--- /dev/null
+++ b/skins/blackhole/setup.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE setup SYSTEM "../../dtd/setup.dtd">
+
+<setup>
+    <menu>
+        <parameter type="bool" name="showdevices" displaytext="{tr(showdevices)}">0</parameter>
+        <parameter type="bool" name="showposter" displaytext="{tr(showpostertext)}">1</parameter>
+        <parameter type="bool" name="showmainmenuicons" displaytext="{tr(showmainmenuicons)}">1</parameter>
+        <parameter type="int" name="fadetime" min="0" max="1000" displaytext="{tr(fadetext)}">300</parameter>
+        <parameter type="int" name="nummenuitemsmain" min="6" max="30" displaytext="{tr(nummenuitemsmain)}">10</parameter>
+        <parameter type="int" name="nummenuitems" min="6" max="30" displaytext="{tr(nummenuitems)}">10</parameter>
+        <parameter type="int" name="nummenuitemsdefault" min="6" max="30" displaytext="{tr(nummenuitemsdefault)}">16</parameter>
+        <parameter type="bool" name="showsubtitle" displaytext="{tr(showsubtitle)}">1</parameter>
+    </menu>
+
+    <translations>
+        <token name="tr(showdevices)">
+            <trans lang="en_EN">Show DVB device info when switching channel</trans>
+            <trans lang="de_DE">DVB Karten Info beim Umschalten anzeigen</trans>
+            <trans lang="fi_FI">Näytä DVB-tiedot kanavanvaihdossa</trans>
+        </token>
+        <token name="tr(showpostertext)">
+            <trans lang="en_EN">Show Poster when switching channel</trans>
+            <trans lang="de_DE">Poster beim Umschalten anzeigen</trans>
+            <trans lang="fi_FI">Näytä posterit kanavanvaihdossa</trans>
+        </token>
+        <token name="tr(showmainmenuicons)">
+            <trans lang="en_EN">Show Icons in Main Menu</trans>
+            <trans lang="de_DE">Icons im Hauptmenü anzeigen</trans>
+            <trans lang="fi_FI">Näytä ikonit päävalikossa</trans>
+        </token>
+        <token name="tr(fadetext)">
+            <trans lang="en_EN">Fade time in ms</trans>
+            <trans lang="de_DE">Einblendzeit in ms</trans>
+            <trans lang="fi_FI">Häivytyksen kesto [ms]</trans>
+        </token>
+        <token name="tr(nummenuitemsmain)">
+            <trans lang="en_EN">Items in main menu</trans>
+            <trans lang="de_DE">Elemente im Hauptmenü</trans>
+            <trans lang="fi_FI">Valinnat päävalikossa</trans>
+        </token>
+        <token name="tr(nummenuitems)">
+            <trans lang="en_EN">Items in schedules, timers, ... menus</trans>
+            <trans lang="de_DE">Elemente in Programm, Timer, ... Menüs</trans>
+            <trans lang="fi_FI">Valinnat alivalikoissa</trans>
+        </token>
+        <token name="tr(nummenuitemsdefault)">
+            <trans lang="en_EN">Items in default list menu</trans>
+            <trans lang="de_DE">Elemente im Standard ListenMenü</trans>
+            <trans lang="fi_FI">Valinnat valikkolistoissa</trans>
+        </token>
+        <token name="tr(showsubtitle)">
+            <trans lang="en_EN">Show shorttexts in schedules menus</trans>
+            <trans lang="de_DE">Kurztexte im Programm Menü anzeigen</trans>
+            <trans lang="fi_FI">Näytä lyhyet kuvaukset ohjelmaoppaassa</trans>
+        </token>
+    </translations>
+</setup>
diff --git a/skins/blackhole/themes/default/icons/clear-day.png b/skins/blackhole/themes/default/icons/clear-day.png
new file mode 100644
index 0000000..2b06a14
Binary files /dev/null and b/skins/blackhole/themes/default/icons/clear-day.png differ
diff --git a/skins/blackhole/themes/default/icons/clear-night.png b/skins/blackhole/themes/default/icons/clear-night.png
new file mode 100644
index 0000000..9bbe49f
Binary files /dev/null and b/skins/blackhole/themes/default/icons/clear-night.png differ
diff --git a/skins/blackhole/themes/default/icons/cloudy.png b/skins/blackhole/themes/default/icons/cloudy.png
new file mode 100644
index 0000000..9870c7f
Binary files /dev/null and b/skins/blackhole/themes/default/icons/cloudy.png differ
diff --git a/skins/blackhole/themes/default/icons/fog.png b/skins/blackhole/themes/default/icons/fog.png
new file mode 100644
index 0000000..9bc88d2
Binary files /dev/null and b/skins/blackhole/themes/default/icons/fog.png differ
diff --git a/skins/blackhole/themes/default/icons/ico_back_active.svg b/skins/blackhole/themes/default/icons/ico_back_active.svg
new file mode 100644
index 0000000..5c50a6a
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_back_active.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_back_active.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="8.4793415"
+       y1="92.956429"
+       x2="81.716125"
+       y2="5.6427336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99379431,0,0,0.99783746,1.7413488,0.10780794)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 88.154745,18.920038 -32.032972,20.992504 0,-17.000157 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.99135 L 7.8352948,46.07818 c -3.7803931,2.166305 -3.7803931,5.677695 0,7.844 L 49.276518,81.079324 c 3.780393,2.166305 6.845255,0.379179 6.845255,-3.99135 l 0,-17.001154 32.032972,20.992504 C 91.935138,83.245629 95,81.458503 95,77.087974 l 0,-54.175589 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_back_active_x1.svg b/skins/blackhole/themes/default/icons/ico_back_active_x1.svg
new file mode 100644
index 0000000..bbda2ee
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_back_active_x1.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_back_active_x1.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="8.4793415"
+       y1="92.956429"
+       x2="81.716125"
+       y2="5.6427336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99379431,0,0,0.99783746,1.7413488,0.10780794)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.6257887,0.8137125)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.844109"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 88.154745,18.920038 -32.032972,20.992504 0,-17.000157 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.99135 L 7.8352948,46.07818 c -3.7803931,2.166305 -3.7803931,5.677695 0,7.844 L 49.276518,81.079324 c 3.780393,2.166305 6.845255,0.379179 6.845255,-3.99135 l 0,-17.001154 32.032972,20.992504 C 91.935138,83.245629 95,81.458503 95,77.087974 l 0,-54.175589 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_back_active_x2.svg b/skins/blackhole/themes/default/icons/ico_back_active_x2.svg
new file mode 100644
index 0000000..7af4481
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_back_active_x2.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_back_active_x2.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="8.4793415"
+       y1="92.956429"
+       x2="81.716125"
+       y2="5.6427336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99379431,0,0,0.99783746,1.7413488,0.10780794)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.6257887,0.8137125)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,34.29179,0.8137125)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 88.154745,18.920038 -32.032972,20.992504 0,-17.000157 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.99135 L 7.8352948,46.07818 c -3.7803931,2.166305 -3.7803931,5.677695 0,7.844 L 49.276518,81.079324 c 3.780393,2.166305 6.845255,0.379179 6.845255,-3.99135 l 0,-17.001154 32.032972,20.992504 C 91.935138,83.245629 95,81.458503 95,77.087974 l 0,-54.175589 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /><rect
+     ry="2.2137191"
+     y="5.0000057"
+     x="36.666004"
+     height="9.9999895"
+     width="26.665991"
+     id="rect4244"
+     style="opacity:0.8;fill:url(#linearGradient4246);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_back_active_x3.svg b/skins/blackhole/themes/default/icons/ico_back_active_x3.svg
new file mode 100644
index 0000000..d1bef47
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_back_active_x3.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_back_active_x3.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="8.4793415"
+       y1="92.956429"
+       x2="81.716125"
+       y2="5.6427336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99379431,0,0,0.99783746,1.7413488,0.10780794)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.6257887,0.8137125)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,34.29179,0.8137125)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4250"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,65.959791,0.8137125)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 88.154745,18.920038 -32.032972,20.992504 0,-17.000157 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.99135 L 7.8352948,46.07818 c -3.7803931,2.166305 -3.7803931,5.677695 0,7.844 L 49.276518,81.079324 c 3.780393,2.166305 6.845255,0.379179 6.845255,-3.99135 l 0,-17.001154 32.032972,20.992504 C 91.935138,83.245629 95,81.458503 95,77.087974 l 0,-54.175589 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /><rect
+     ry="2.2137191"
+     y="5.0000057"
+     x="36.666004"
+     height="9.9999895"
+     width="26.665991"
+     id="rect4244"
+     style="opacity:0.8;fill:url(#linearGradient4246);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4250);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4248"
+     width="26.665991"
+     height="9.9999895"
+     x="68.334007"
+     y="5.0000057"
+     ry="2.2137191" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_back_inactive.svg b/skins/blackhole/themes/default/icons/ico_back_inactive.svg
new file mode 100644
index 0000000..68be369
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_back_inactive.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_back_inactive.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#001428;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#003c5e;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="8.4793415"
+       y1="92.956429"
+       x2="81.716125"
+       y2="5.6427336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99379431,0,0,0.99783746,1.7413488,0.10780794)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 88.154745,18.920038 -32.032972,20.992504 0,-17.000157 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.99135 L 7.8352948,46.07818 c -3.7803931,2.166305 -3.7803931,5.677695 0,7.844 L 49.276518,81.079324 c 3.780393,2.166305 6.845255,0.379179 6.845255,-3.99135 l 0,-17.001154 32.032972,20.992504 C 91.935138,83.245629 95,81.458503 95,77.087974 l 0,-54.175589 c 0,-4.370528 -3.064862,-6.157655 -6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_crypted.svg b/skins/blackhole/themes/default/icons/ico_crypted.svg
new file mode 100644
index 0000000..df8c2fc
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_crypted.svg
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="50"
+   id="svg5311"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 99.999998 50.000001"
+   sodipodi:docname="ico_crypted.svg">
+  <defs
+     id="defs5313">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5915">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5917" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5919" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5897">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop5899" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5901" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter7120">
+      <feGaussianBlur
+         stdDeviation="3.92425"
+         id="feGaussianBlur12" />
+    </filter>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter5893"
+       x="-0.0063413271"
+       width="1.0126827"
+       y="-0.11147067"
+       height="1.2229413">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.12034188"
+         id="feGaussianBlur5895" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5897"
+       id="linearGradient5903"
+       x1="70.15654"
+       y1="1028.686"
+       x2="102.21464"
+       y2="988.41858"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5915"
+       id="linearGradient5921"
+       x1="24.279434"
+       y1="1045.9269"
+       x2="137.19443"
+       y2="986.90466"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="9.0643817"
+     inkscape:cx="41.079163"
+     inkscape:cy="28.367353"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5316">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient5903);fill-opacity:1;stroke:#ffffff;stroke-width:1.9572556;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;"
+       id="rect5883"
+       width="98.042747"
+       height="48.042744"
+       x="0.97862577"
+       y="1003.3408"
+       ry="0.58335191" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m -150.86157,869.08162 c -63.87429,0 -115.71874,72.9778 -115.71874,162.87498 0,89.8971 51.84445,162.8437 115.71874,162.8437 50.82546,0 94.030674,-46.1785 109.562504,-110.3437 l 94.65626,0 32.375,-39.2188 21.343746,0 14.375,14.375 34.46875,0 5.71875,-9.875 33.21875,0 15.3125,26.5313 28.09375,0 18.21875,-18.2188 24.1875,0 21.03125,21.0313 26.40625,0 52.65625,-52.6563 0,-15.5312 -11.8125,-3.1563 -31.53125,-31.53118 -379.531256,0 c -16.1877,-62.464 -58.789514,-107.125 -108.750004,- [...]
+       style="opacity:0.56000001;stroke:#000000;stroke-width:4;filter:url(#filter7120)"
+       id="path17"
+       transform="matrix(0.12135861,0,0,0.12135861,46.172783,902.75355)" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 26.650848,1008.9523 c -7.751696,0 -14.043465,8.8565 -14.043465,19.7663 0,10.9097 6.291769,19.7624 14.043465,19.7624 6.168105,0 11.411428,-5.6041 13.296355,-13.3911 l 11.48735,0 3.928986,-4.7595 2.59025,0 1.74453,1.7445 4.183075,0 0.694022,-1.1984 4.03138,0 1.8583,3.2198 3.409423,0 2.210998,-2.211 2.935361,0 2.552323,2.5523 3.204629,0 6.390286,-6.3903 0,-1.8849 -1.433546,-0.383 -3.82659,-3.8266 -46.059387,0 c -1.964516,-7.5806 -7.13461,-13.0005 -13.197745,-13.0005 z m -5.37391 [...]
+       style="fill:url(#linearGradient5921);fill-opacity:1;stroke:#000000;stroke-width:0.48543447"
+       id="path19" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 89.73457,1025.7794 -2.591003,-2.591 0.186192,0.1186 c 0,0 -33.998038,0.3386 -38.197,0.3386 -4.198962,0 -4.943939,2.1338 -4.943939,2.1338 l 45.54575,0 z"
+       style="fill:#4d4d4d;stroke:#000000;stroke-width:0.23058137;filter:url(#filter5893)"
+       id="path21" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 26.650848,1008.9523 c -7.751696,0 -14.043465,8.8565 -14.043465,19.7663 0,10.9097 6.291769,19.7624 14.043465,19.7624 6.168105,0 11.411428,-5.6041 13.296355,-13.3911 l 11.48735,0 3.928986,-4.7595 2.59025,0 1.74453,1.7445 4.183075,0 0.694022,-1.1984 4.03138,0 1.8583,3.2198 3.409423,0 2.210998,-2.211 2.935361,0 2.552323,2.5523 3.204629,0 6.390286,-6.3903 0,-1.8849 -1.433546,-0.383 -3.82659,-3.8266 -46.059387,0 c -1.964516,-7.5806 -7.13461,-13.0005 -13.197745,-13.0005 z m -5.37391 [...]
+       style="fill:none;stroke:#000000;stroke-width:0.48543447"
+       id="path23" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_cutmark_start.svg b/skins/blackhole/themes/default/icons/ico_cutmark_start.svg
new file mode 100644
index 0000000..48c2ba7
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_cutmark_start.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="20"
+   height="60"
+   id="svg4410"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   viewBox="0 0 20 60.000001"
+   sodipodi:docname="ico_cutmark_start.svg">
+  <defs
+     id="defs4412" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8.4666667"
+     inkscape:cx="3"
+     inkscape:cy="32.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="g5165"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4415">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-992.3622)">
+    <g
+       id="g5165"
+       transform="matrix(0.99676644,0,0,1.0645673,-431.01827,27.839241)">
+      <g
+         id="g4982"
+         transform="matrix(1.0818105,0,0,0.94391562,-32.786305,51.651891)">
+        <rect
+           style="display:inline;opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect5158"
+           width="5.9545999"
+           height="57.610737"
+           x="441.68228"
+           y="906.12573"
+           ry="0.35725299" />
+        <rect
+           style="opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:1.74931276;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect5161"
+           width="13.797397"
+           height="7.0984745"
+           x="431.28522"
+           y="906.00037"
+           ry="3.5492373" />
+        <rect
+           ry="3.5492373"
+           y="956.80945"
+           x="430.83862"
+           height="7.0984745"
+           width="13.797397"
+           id="rect5163"
+           style="opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:1.74931276;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+      <path
+         style="fill:#aa0000"
+         d="m 3.519685,59.740436 c -2.83822384,-0.789744 -4.24837212,-3.695526 -2.9953,-6.172178 0.5947804,-1.175563 1.9241322,-2.128627 3.3448652,-2.398063 0.3451571,-0.06546 2.2147922,-0.119014 4.1547447,-0.119014 l 3.5271861,0 0,-21.082677 0,-21.0826772 -3.277559,-0.00205 C 3.9689183,8.8810825 3.2550989,8.7351141 1.9590647,7.5925166 1.3158013,7.0254087 0.72338554,5.9229248 0.59012999,5.0449332 0.30222385,3.1479828 1.3351839,1.3732383 3.2570871,0.46279302 L 4.0511811,0.08661428 11.4278 [...]
+         id="path2993"
+         inkscape:connector-curvature="0"
+         transform="matrix(1.0032441,0,0,0.9393488,432.41651,906.02347)" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_cutmark_stop.svg b/skins/blackhole/themes/default/icons/ico_cutmark_stop.svg
new file mode 100644
index 0000000..41d6096
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_cutmark_stop.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="20"
+   height="60"
+   id="svg4410"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   viewBox="0 0 20 60.000001"
+   sodipodi:docname="ico_cutmark_stop.svg">
+  <defs
+     id="defs4412" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8.4666667"
+     inkscape:cx="3"
+     inkscape:cy="32.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="g5165"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4415">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-992.3622)">
+    <g
+       id="g5165"
+       transform="matrix(0.99676644,0,0,1.0645673,-431.01827,27.839241)">
+      <g
+         id="g4982"
+         transform="matrix(-1.0818105,0,0,0.94391562,917.69332,51.651891)">
+        <rect
+           style="display:inline;opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect5158"
+           width="5.9545999"
+           height="57.610737"
+           x="441.68228"
+           y="906.12573"
+           ry="0.35725299" />
+        <rect
+           style="opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:1.74931276;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect5161"
+           width="13.797397"
+           height="7.0984745"
+           x="431.28522"
+           y="906.00037"
+           ry="3.5492373" />
+        <rect
+           ry="3.5492373"
+           y="956.80945"
+           x="430.83862"
+           height="7.0984745"
+           width="13.797397"
+           id="rect5163"
+           style="opacity:1;fill:#800000;fill-opacity:1;stroke:#800000;stroke-width:1.74931276;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+      <path
+         style="fill:#aa0000"
+         d="M 0.85091519,59.729752 C 0.64982404,59.641517 0.38407601,59.419967 0.26036401,59.237418 0.04070838,58.913296 0.03543308,58.225468 0.03543308,29.909449 0.03543308,1.098751 0.03694318,0.91134105 0.27165355,0.59351129 0.40157481,0.41758023 0.6619666,0.21826921 0.85030197,0.1505979 1.4004033,-0.04706056 15.228276,-0.0127743 15.980315,0.18811282 c 1.408449,0.37622972 2.534731,1.27768338 3.085096,2.46925198 0.294992,0.6386724 0.340101,0.8773257 0.340101,1.7993282 0,0.9373467 -0.041 [...]
+         id="path2987"
+         inkscape:connector-curvature="0"
+         transform="matrix(1.0032441,0,0,0.9393488,432.41651,906.02347)" />
+      <path
+         style="fill:#aa0000"
+         d="M 3.9119451,59.797809 C 0.19680771,59.715951 0.30997061,59.765067 0.19557725,58.184801 0.0939909,56.781454 0.09298143,2.9742768 0.1945165,1.6439522 0.31082504,0.12006393 0.14135753,0.19082843 3.9262317,0.08570069 5.6202608,0.03864774 9.0520163,0.04798849 11.552355,0.1064579 l 4.54607,0.10630802 0.795398,0.39514232 c 0.951729,0.47280566 1.758455,1.29073706 2.178946,2.20921206 0.270512,0.5908743 0.295774,0.7697596 0.254353,1.8010521 -0.04037,1.005014 -0.08802,1.2167376 -0.38973 [...]
+         id="path2989"
+         inkscape:connector-curvature="0"
+         transform="matrix(1.0032441,0,0,0.9393488,432.41651,906.02347)" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_cutted.svg b/skins/blackhole/themes/default/icons/ico_cutted.svg
new file mode 100644
index 0000000..7938510
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_cutted.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="64px"
+   height="64px"
+   viewBox="0 0 64 64"
+   enable-background="new 0 0 64 64"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_cutted.svg"><metadata
+     id="metadata9"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs7" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview5"
+     showgrid="false"
+     inkscape:zoom="3.6875"
+     inkscape:cx="-30.508475"
+     inkscape:cy="32"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Layer_1" /><path
+     d="M54.624,47.446c-1.681-2.928-4.358-5.073-7.348-5.889c-2.034-0.556-4.099-0.452-5.896,0.28l-5.271-9.222  c4.684-8.6,11.623-21.324,12.499-22.854c2.141-3.744-1.374-7.9-1.525-8.074l-1.021-1.185l-14.156,24.76L17.749,0.504l-1.021,1.185  c-0.152,0.174-3.667,4.33-1.526,8.074c0.875,1.529,7.815,14.253,12.5,22.854l-5.272,9.222c-1.798-0.732-3.862-0.836-5.897-0.28  c-2.989,0.815-5.667,2.961-7.347,5.889c-3.157,5.519-1.884,12.207,2.836,14.908c1.318,0.758,2.779,1.143,4.342,1.143  c0.858,0,1.75-0.0 [...]
+     id="path3"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_dolby.svg b/skins/blackhole/themes/default/icons/ico_dolby.svg
new file mode 100644
index 0000000..90e087a
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_dolby.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="svg2"
+   x="0px"
+   y="0px"
+   width="150"
+   height="50"
+   viewBox="0 0 150 50"
+   enable-background="new 0 0 308.25 76.25"
+   xml:space="preserve"
+   inkscape:version="0.91pre3 r13670"
+   sodipodi:docname="ico_dolby.svg"><metadata
+     id="metadata21"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs19"><linearGradient
+       inkscape:collect="always"
+       id="linearGradient4162"><stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4164" /><stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4166" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       id="linearGradient4154"><stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4156" /><stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4158" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4154"
+       id="linearGradient4160"
+       x1="50.476055"
+       y1="29.854862"
+       x2="93.398026"
+       y2="-33.420177"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4162"
+       id="linearGradient4168"
+       x1="63.584183"
+       y1="1.3730028"
+       x2="-15.027233"
+       y2="62.706097"
+       gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     id="namedview17"
+     showgrid="false"
+     inkscape:zoom="6.1793718"
+     inkscape:cx="102.46508"
+     inkscape:cy="26.935013"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer2" /><g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="Back"
+     style="display:inline" /><g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Text"><path
+       id="path257"
+       d="m 62.683935,43.514098 -8.117377,0 c -8.418361,0 -15.434099,-8.300983 -15.434099,-18.601312 0,-9.973769 7.015738,-18.4314746 15.434099,-18.4314746 l 8.116065,0 0.0013,37.0327866 0,0 z m -46.203279,0 -8.1009838,0 0,-37.0327866 8.1009838,0 c 8.402623,0 15.441967,8.4570486 15.441967,18.4308196 0.0013,10.300984 -7.038689,18.601967 -15.441967,18.601967 M 0,50 l 71.051148,0 0,-50 L 0,0 0,50 Z"
+       inkscape:connector-curvature="0"
+       style="display:inline;fill:url(#linearGradient4160);fill-opacity:1;stroke:url(#linearGradient4168);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+       id="path239"
+       d="m 82.521982,33.643281 c 0,-0.619013 -0.201666,-0.851045 -0.806274,-0.851045 l -2.759085,0 0,6.25281 2.743123,0 c 0.553608,0 0.822236,-0.171688 0.822236,-0.825739 l 0,-4.576026 z m -0.562952,6.927108 -5.086029,0 0,-9.312449 5.178297,0 c 1.869498,0 2.544572,0.835083 2.544572,2.35731 l 0,4.366963 c 0,2.037683 -0.834693,2.588176 -2.63684,2.588176"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 86.756185,31.254824 2.072332,0 0,9.315563 -2.072332,0 z"
+       id="rect241"
+       inkscape:connector-curvature="0" /><path
+       id="path243"
+       d="m 97.305888,40.570389 -0.2153,-0.627968 c -0.30989,0.399828 -0.900484,0.790702 -2.328887,0.790702 l -1.022734,0 c -1.775672,0 -2.744292,-0.553608 -2.744292,-2.541069 l 0,-4.67024 c 0,-2.426219 1.819665,-2.454639 3.082219,-2.454639 l 2.432444,0 c 0.93203,0 1.7383,0.177917 2.14124,0.406057 l 0,1.194422 -4.69554,0 c -0.553609,0 -0.891146,0.137818 -0.891146,0.89426 l 0,4.85828 c 0,0.606165 0.38153,0.755662 0.878688,0.755662 l 1.440859,0 c 0.38776,0 1.125899,-0.165848 1.463439,-0.34 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 101.0951,31.254824 2.07272,0 0,9.315563 -2.07272,0 z"
+       id="rect245"
+       inkscape:connector-curvature="0" /><path
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 109.19483,32.780168 0,7.790221 -2.0696,0 0,-7.790221 -2.80075,0 0,-1.525342 7.63995,0 0,1.525342 z"
+       id="polygon247"
+       inkscape:connector-curvature="0" /><path
+       id="path249"
+       d="m 116.32516,32.984169 -0.12186,-0.554387 -0.0432,0 -0.13159,0.554387 -1.15665,3.635436 2.63801,0 -1.1847,-3.635436 z m 2.47294,7.58622 -0.78175,-2.391571 -3.63232,0 -0.77552,2.391571 -1.8438,0 3.3197,-9.396931 2.46281,0 3.36409,9.396931 -2.11321,0 z"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 129.0453,38.985871 0,1.584518 -6.35248,0 0,-9.312449 2.06961,0 0,7.727931 z"
+       id="polygon251"
+       inkscape:connector-curvature="0" /><path
+       id="path255"
+       d="m 145.75631,11.891394 -3.8733,7.010421 -3.74211,-7.010421 -3.50774,0 c 0.65678,1.188194 5.24565,9.814277 5.24565,9.814277 l 0,5.691417 3.76391,0 c 0.003,-0.76812 0,-5.6665 0,-5.6665 0,0 4.76718,-8.64516 5.43953,-9.839194 l -3.32594,0 z"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       id="path259"
+       d="m 105.21096,12.75451 c -1.06907,-0.743985 -2.86965,-1.130187 -5.20789,-1.130187 -2.281782,0 -3.938716,0.312621 -5.213338,1.136415 -1.331462,0.856496 -1.95943,2.294631 -1.95943,4.545268 l 0,4.88125 c 0,2.254142 0.653662,3.777927 1.944247,4.533201 1.042589,0.726853 2.746629,1.071787 5.228521,1.071787 2.45075,0 4.20151,-0.351163 5.20166,-1.0531 1.29409,-0.806274 1.96954,-2.367823 1.96954,-4.551499 l 0,-4.882027 c 0,-2.141241 -0.65599,-3.668528 -1.96331,-4.551109 m -1.54754,9.21550 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       id="path261"
+       d="m 84.433915,11.891394 -7.764915,0 0,15.513092 8.313462,0 c 4.093663,0 5.617447,-1.674061 5.617447,-6.172223 l 0,-3.409244 c 0,-4.270022 -1.728565,-5.931625 -6.165994,-5.931625 m 2.696406,9.712667 c 0,2.717817 -1.450594,3.402625 -2.666818,3.402625 l -4.291823,0 0,-10.839347 4.291823,0 c 1.216224,0 2.666818,0.686364 2.666818,3.213806 l 0,4.222916 0,0 z"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 119.7091,24.820982 -6.46382,0 0,-12.929587 -3.50073,0 0,15.511534 9.96455,0 z"
+       id="polygon263"
+       inkscape:connector-curvature="0" /><path
+       id="path265"
+       d="m 147.31864,26.052389 0.29393,0 0.45005,0.739313 0.28732,0 -0.4812,-0.753717 c 0.25034,-0.03115 0.4411,-0.162345 0.4411,-0.46134 0,-0.33598 -0.19699,-0.485867 -0.60344,-0.485867 l -0.64393,0 0,1.700534 0.25617,0 0,-0.738923 0,0 z m 0,-0.743983 0.3496,0 c 0.30017,0 0.37881,0.08759 0.37881,0.25033 0,0.186093 -0.10356,0.275247 -0.41889,0.275247 l -0.30952,0 0,-0.525577 0,0 z m -1.17496,0.625242 c 0,0.858054 0.68131,1.475509 1.49109,1.475509 0.79693,0 1.48174,-0.617455 1.48174,-1.4 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /><path
+       id="path267"
+       d="m 128.28769,25.144504 -3.15697,0 0,-11.021158 0,-0.0094 3.44155,0 c 1.16601,0 1.89091,0.926961 1.89091,2.191461 0,1.94775 -0.93747,1.994468 -3.62336,2.094523 l 0,1.795916 c 2.39469,-0.0066 4.31752,-0.154558 4.31752,2.330059 3.9e-4,1.244644 -0.79343,2.618542 -2.86965,2.618542 m 1.85664,-5.950701 c 2.75053,-0.249942 3.34852,-1.600091 3.34852,-3.536939 0,-1.710268 -0.72179,-2.577275 -1.51678,-3.066647 -0.66262,-0.417347 -1.44747,-0.698822 -3.09468,-0.698822 l -7.25568,0 0,15.51309 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1" /></g></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_folder.svg b/skins/blackhole/themes/default/icons/ico_folder.svg
new file mode 100644
index 0000000..879dafc
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_folder.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="1000px"
+   height="1000px"
+   viewBox="0 0 1000 1000"
+   enable-background="new 0 0 1000 1000"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_folder.svg"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview9"
+     showgrid="false"
+     inkscape:zoom="0.236"
+     inkscape:cx="500"
+     inkscape:cy="500"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><g
+     id="g3"
+     style="fill:#ffffff"><path
+       d="M540,190.7c-12.9-24.8-38.6-40.4-66.5-40.4H129.2c-27.6,0-50,22.4-50,50v26.8h479.7L540,190.7z"
+       id="path5"
+       style="fill:#ffffff" /><path
+       d="M870.8,272.1H79.2v463.7c0,27.6,22.4,50,50,50h741.5c27.6,0,50-22.4,50-50V322.1C920.8,294.5,898.4,272.1,870.8,272.1z"
+       id="path7"
+       style="fill:#ffffff" /></g></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_fwd_active.svg b/skins/blackhole/themes/default/icons/ico_fwd_active.svg
new file mode 100644
index 0000000..d1cacb5
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_fwd_active.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_fwd_active_.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="83.682014"
+       y1="94.881378"
+       x2="25.314117"
+       y2="8.9676428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.99379431,0,0,0.99783746,98.258651,0.10780794)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="41.185188"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 11.845255,18.920038 32.032972,20.992504 0,-17.000157 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.99135 L 92.164705,46.07818 c 3.780393,2.166305 3.780393,5.677695 0,7.844 L 50.723482,81.079324 c -3.780393,2.166305 -6.845255,0.379179 -6.845255,-3.99135 l 0,-17.001154 -32.032972,20.992504 C 8.064862,83.245629 5,81.458503 5,77.087974 L 5,22.912385 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_fwd_active_x1.svg b/skins/blackhole/themes/default/icons/ico_fwd_active_x1.svg
new file mode 100644
index 0000000..6e6b723
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_fwd_active_x1.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_fwd_active_x1_.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="83.682014"
+       y1="94.881378"
+       x2="25.314117"
+       y2="8.9676428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.99379431,0,0,0.99783746,98.258651,0.10780794)" /><linearGradient
+       id="linearGradient4140-2"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142-6" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144-1" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.625789,0.81371249)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="41.185188"
+     inkscape:cy="48.018726"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 11.845255,18.920038 32.032972,20.992504 0,-17.000157 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.99135 L 92.164705,46.07818 c 3.780393,2.166305 3.780393,5.677695 0,7.844 L 50.723482,81.079324 c -3.780393,2.166305 -6.845255,0.379179 -6.845255,-3.99135 l 0,-17.001154 -32.032972,20.992504 C 8.064862,83.245629 5,81.458503 5,77.087974 L 5,22.912385 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_fwd_active_x2.svg b/skins/blackhole/themes/default/icons/ico_fwd_active_x2.svg
new file mode 100644
index 0000000..2007221
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_fwd_active_x2.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_fwd_active_x2_.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="83.682014"
+       y1="94.881378"
+       x2="25.314117"
+       y2="8.9676428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.99379431,0,0,0.99783746,98.258651,0.10780794)" /><linearGradient
+       id="linearGradient4140-2"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142-6" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144-1" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,34.29179,0.81371249)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.625789,0.81371249)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="41.185188"
+     inkscape:cy="48.018726"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 11.845255,18.920038 32.032972,20.992504 0,-17.000157 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.99135 L 92.164705,46.07818 c 3.780393,2.166305 3.780393,5.677695 0,7.844 L 50.723482,81.079324 c -3.780393,2.166305 -6.845255,0.379179 -6.845255,-3.99135 l 0,-17.001154 -32.032972,20.992504 C 8.064862,83.245629 5,81.458503 5,77.087974 L 5,22.912385 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /><rect
+     ry="2.2137191"
+     y="5.0000057"
+     x="36.666004"
+     height="9.9999895"
+     width="26.665991"
+     id="rect4244"
+     style="opacity:0.8;fill:url(#linearGradient4246);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_fwd_active_x3.svg b/skins/blackhole/themes/default/icons/ico_fwd_active_x3.svg
new file mode 100644
index 0000000..36b75c7
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_fwd_active_x3.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_fwd_active_x3_.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="83.682014"
+       y1="94.881378"
+       x2="25.314117"
+       y2="8.9676428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.99379431,0,0,0.99783746,98.258651,0.10780794)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4250"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,65.959791,0.81371249)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /><linearGradient
+       id="linearGradient4140-2"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4142-6" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4144-1" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751733,0,0,1.1149932,34.29179,0.81371249)"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140-2"
+       id="linearGradient4242"
+       x1="4.3004775"
+       y1="14.50319"
+       x2="31.460541"
+       y2="3.2274182"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.91751736,0,0,1.1149932,2.625789,0.81371249)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="41.185188"
+     inkscape:cy="48.018726"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 11.845255,18.920038 32.032972,20.992504 0,-17.000157 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.99135 L 92.164705,46.07818 c 3.780393,2.166305 3.780393,5.677695 0,7.844 L 50.723482,81.079324 c -3.780393,2.166305 -6.845255,0.379179 -6.845255,-3.99135 l 0,-17.001154 -32.032972,20.992504 C 8.064862,83.245629 5,81.458503 5,77.087974 L 5,22.912385 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4242);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4226"
+     width="26.665991"
+     height="9.9999895"
+     x="5.0000048"
+     y="5.0000057"
+     ry="2.2137191" /><rect
+     ry="2.2137191"
+     y="5.0000057"
+     x="36.666004"
+     height="9.9999895"
+     width="26.665991"
+     id="rect4244"
+     style="opacity:0.8;fill:url(#linearGradient4246);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /><rect
+     style="opacity:0.8;fill:url(#linearGradient4250);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4248"
+     width="26.665991"
+     height="9.9999895"
+     x="68.334007"
+     y="5.0000057"
+     ry="2.2137191" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_fwd_inactive.svg b/skins/blackhole/themes/default/icons/ico_fwd_inactive.svg
new file mode 100644
index 0000000..fd121a0
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_fwd_inactive.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 100 100"
+   style="enable-background:new 0 0 100 100;"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_fwd_inactive.svg"
+   width="100%"
+   height="100%"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9"><linearGradient
+       id="linearGradient4140"><stop
+         style="stop-color:#001428;stop-opacity:1;"
+         offset="0"
+         id="stop4142" /><stop
+         style="stop-color:#003c5e;stop-opacity:1;"
+         offset="1"
+         id="stop4144" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4140"
+       id="linearGradient4146"
+       x1="83.682014"
+       y1="94.881378"
+       x2="25.314117"
+       y2="8.9676428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.99379431,0,0,0.99783746,98.258651,0.10780794)" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="5.7268259"
+     inkscape:cx="49.152542"
+     inkscape:cy="47.669492"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     inkscape:connector-curvature="0"
+     id="path5"
+     d="m 11.845255,18.920038 32.032972,20.992504 0,-17.000157 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.99135 L 92.164705,46.07818 c 3.780393,2.166305 3.780393,5.677695 0,7.844 L 50.723482,81.079324 c -3.780393,2.166305 -6.845255,0.379179 -6.845255,-3.99135 l 0,-17.001154 -32.032972,20.992504 C 8.064862,83.245629 5,81.458503 5,77.087974 L 5,22.912385 c 0,-4.370528 3.064862,-6.157655 6.845255,-3.992347 z"
+     style="fill:url(#linearGradient4146);fill-opacity:1" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_hd1080i.svg b/skins/blackhole/themes/default/icons/ico_hd1080i.svg
new file mode 100644
index 0000000..02ebf25
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_hd1080i.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="50"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 150 50.000001"
+   sodipodi:docname="ico_hd1080i.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4172">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4174" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4176" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4162">
+      <stop
+         style="stop-color:#c3c3c3;stop-opacity:1"
+         offset="0"
+         id="stop4164" />
+      <stop
+         style="stop-color:#e71f1f;stop-opacity:1"
+         offset="1"
+         id="stop4166" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4192">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4194" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4196" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4192"
+       id="linearGradient4198"
+       x1="113.87164"
+       y1="1049.3083"
+       x2="137.99171"
+       y2="963.38702"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(4.4999999e-6,-4.6e-5)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4162"
+       id="linearGradient4168"
+       x1="35.610756"
+       y1="1064.6293"
+       x2="103.83022"
+       y2="996.30615"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4172"
+       id="linearGradient4178"
+       x1="89.026787"
+       y1="989.05988"
+       x2="75.258934"
+       y2="1062.7659"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.83"
+     inkscape:cx="34.416517"
+     inkscape:cy="55.966018"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:url(#linearGradient4198);fill-opacity:1;stroke:url(#linearGradient4168);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 3.4999999e-6,1002.3622 0,50 L 150,1052.3622 l 0,-50 -149.9999965000001,0 z m 5.0000000000001,5 49.9999985,0 0,40 -49.9999985,0 0,-40 z"
+       id="rect4139" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient4178);stroke-width:1.972;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4162"
+       width="148.02827"
+       height="48.028259"
+       x="0.98586887"
+       y="1003.3481"
+       ry="0.6197632" />
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4180">
+      <path
+         d="m 65.441323,1039.2852 12.6,0 0,-2.38 -4.62,0 0,-19.95 -2.205,0 c -1.225,0.735 -2.695,1.295 -4.725,1.645 l 0,1.855 4.06,0 0,16.45 -5.11,0 0,2.38 z"
+         style=""
+         id="path4153" />
+      <path
+         d="m 88.754604,1039.7052 c 4.445,0 7.14,-4.165 7.14,-11.655 0,-7.49 -2.695,-11.515 -7.14,-11.515 -4.48,0 -7.175,4.025 -7.175,11.515 0,7.49 2.695,11.655 7.175,11.655 z m 0,-2.31 c -2.625,0 -4.375,-2.8 -4.375,-9.345 0,-6.545 1.75,-9.205 4.375,-9.205 2.59,0 4.34,2.66 4.34,9.205 0,6.545 -1.75,9.345 -4.34,9.345 z"
+         style=""
+         id="path4155" />
+      <path
+         d="m 101.42789,1033.3002 c 0,-2.03 1.33,-3.675 3.115,-4.865 3.22,1.295 6.055,2.345 6.055,5.215 0,2.31 -1.785,3.92 -4.375,3.92 -2.73,0 -4.795,-1.785 -4.795,-4.27 z m 6.3,-6.195 c -2.695,-1.05 -5.145,-2.17 -5.145,-4.83 0,-2.17 1.54,-3.605 3.605,-3.605 2.45,0 3.885,1.75 3.885,3.955 0,1.645 -0.84,3.15 -2.345,4.48 z m -8.890005,6.475 c 0,3.535 3.115005,6.125 7.315005,6.125 4.34,0 7.21,-2.625 7.21,-5.95 0,-3.01 -1.89,-4.585 -3.885,-5.74 l 0,-0.14 c 1.365,-1.05 3.08,-3.045 3.08,-5.39 0 [...]
+         style=""
+         id="path4157" />
+      <path
+         d="m 123.48117,1039.7052 c 4.445,0 7.14,-4.165 7.14,-11.655 0,-7.49 -2.695,-11.515 -7.14,-11.515 -4.48,0 -7.175,4.025 -7.175,11.515 0,7.49 2.695,11.655 7.175,11.655 z m 0,-2.31 c -2.625,0 -4.375,-2.8 -4.375,-9.345 0,-6.545 1.75,-9.205 4.375,-9.205 2.59,0 4.34,2.66 4.34,9.205 0,6.545 -1.75,9.345 -4.34,9.345 z"
+         style=""
+         id="path4159" />
+      <path
+         d="m 136.46945,1018.7752 c 1.12,0 1.995,-0.77 1.995,-1.855 0,-1.12 -0.875,-1.855 -1.995,-1.855 -1.12,0 -1.995,0.735 -1.995,1.855 0,1.085 0.875,1.855 1.995,1.855 z m -1.47,20.51 2.87,0 0,-17.01 -2.87,0 0,17.01 z"
+         style=""
+         id="path4161" />
+    </g>
+    <g
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4186">
+      <path
+         d="m 9.1945344,1039.5256 3.7799996,0 2.03,-10.325 9.065,0 -2.1,10.325 3.78,0 4.585,-22.89 -3.78,0 -1.855,9.275 -9.065,0 1.89,-9.275 -3.78,0 -4.5499996,22.89 z"
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4164" />
+      <path
+         d="m 31.54805,1039.5256 6.65,0 c 7.525,0 12.46,-5.25 12.46,-13.93 0,-5.81 -3.535,-8.96 -9.905,-8.96 l -4.655,0 -4.55,22.89 z m 4.375,-3.045 3.325,-16.8 1.4,0 c 3.885,0 6.16,2.1 6.16,6.16 0,6.755 -3.535,10.64 -8.68,10.64 l -2.205,0 z"
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4166" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_hd720p.svg b/skins/blackhole/themes/default/icons/ico_hd720p.svg
new file mode 100644
index 0000000..6e10a98
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_hd720p.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="50"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 150 50.000001"
+   sodipodi:docname="ico_hd720p.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4172">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4174" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4176" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4162">
+      <stop
+         style="stop-color:#c3c3c3;stop-opacity:1"
+         offset="0"
+         id="stop4164" />
+      <stop
+         style="stop-color:#e71f1f;stop-opacity:1"
+         offset="1"
+         id="stop4166" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4192">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4194" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4196" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4192"
+       id="linearGradient4198"
+       x1="113.87164"
+       y1="1049.3083"
+       x2="137.99171"
+       y2="963.38702"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(4.4999999e-6,-4.6e-5)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4162"
+       id="linearGradient4168"
+       x1="35.610756"
+       y1="1064.6293"
+       x2="103.83022"
+       y2="996.30615"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4172"
+       id="linearGradient4178"
+       x1="89.026787"
+       y1="989.05988"
+       x2="75.258934"
+       y2="1062.7659"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.83"
+     inkscape:cx="34.416517"
+     inkscape:cy="55.966018"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:url(#linearGradient4198);fill-opacity:1;stroke:url(#linearGradient4168);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 3.4999999e-6,1002.3622 0,50 L 150,1052.3622 l 0,-50 -149.9999965000001,0 z m 5.0000000000001,5 49.9999985,0 0,40 -49.9999985,0 0,-40 z"
+       id="rect4139" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient4178);stroke-width:1.972;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4162"
+       width="148.02827"
+       height="48.028259"
+       x="0.98586887"
+       y="1003.3481"
+       ry="0.6197632" />
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4180">
+      <path
+         d="m 72.871323,1039.2852 2.975,0 c 0.385,-8.715 1.47,-13.79 6.755,-20.545 l 0,-1.785 -14.385,0 0,2.485 11.13,0 c -4.41,6.125 -6.09,11.445 -6.475,19.845 z"
+         style=""
+         id="path4158" />
+      <path
+         d="m 85.439604,1039.2852 14.42,0 0,-2.485 -6.475,0 c -1.155,0 -2.52,0.105 -3.745,0.21 5.285,-5.53 9.1,-9.695 9.1,-13.895 0,-3.955 -2.555,-6.58 -6.685,-6.58 -2.905,0 -4.9,1.365 -6.755,3.395 l 1.645,1.645 c 1.295,-1.505 2.905,-2.695 4.76,-2.695 2.835,0 4.235,1.82 4.235,4.375 0,3.605 -3.78,7.63 -10.5,14.315 l 0,1.715 z"
+         style=""
+         id="path4160" />
+      <path
+         d="m 110.11789,1039.7052 c 4.445,0 7.14,-4.165 7.14,-11.655 0,-7.49 -2.695,-11.515 -7.14,-11.515 -4.48,0 -7.175,4.025 -7.175,11.515 0,7.49 2.695,11.655 7.175,11.655 z m 0,-2.31 c -2.625,0 -4.375,-2.8 -4.375,-9.345 0,-6.545 1.75,-9.205 4.375,-9.205 2.59,0 4.34,2.66 4.34,9.205 0,6.545 -1.75,9.345 -4.34,9.345 z"
+         style=""
+         id="path4162" />
+      <path
+         d="m 124.43617,1037.7452 c 1.575,1.225 3.15,1.96 4.725,1.96 3.885,0 7.35,-3.395 7.35,-9.17 0,-5.285 -2.345,-8.68 -6.72,-8.68 -1.995,0 -3.885,1.085 -5.425,2.38 l -0.105,0 -0.245,-1.96 -2.38,0 0,24.185 2.87,0 0,-5.74 -0.07,-2.975 z m 0.07,-2.24 0,-8.925 c 1.68,-1.505 3.115,-2.31 4.55,-2.31 3.22,0 4.48,2.52 4.48,6.265 0,4.2 -2.065,6.755 -4.865,6.755 -1.12,0 -2.625,-0.49 -4.165,-1.785 z"
+         style=""
+         id="path4164" />
+    </g>
+    <g
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4186">
+      <path
+         d="m 9.1945344,1039.5256 3.7799996,0 2.03,-10.325 9.065,0 -2.1,10.325 3.78,0 4.585,-22.89 -3.78,0 -1.855,9.275 -9.065,0 1.89,-9.275 -3.78,0 -4.5499996,22.89 z"
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4153" />
+      <path
+         d="m 31.54805,1039.5256 6.65,0 c 7.525,0 12.46,-5.25 12.46,-13.93 0,-5.81 -3.535,-8.96 -9.905,-8.96 l -4.655,0 -4.55,22.89 z m 4.375,-3.045 3.325,-16.8 1.4,0 c 3.885,0 6.16,2.1 6.16,6.16 0,6.755 -3.535,10.64 -8.68,10.64 l -2.205,0 z"
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4155" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_new_rec.svg b/skins/blackhole/themes/default/icons/ico_new_rec.svg
new file mode 100644
index 0000000..f3acaf5
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_new_rec.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="512px"
+   height="512px"
+   viewBox="0 0 512 512"
+   style="enable-background:new 0 0 512 512;"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_new_rec.svg"><metadata
+     id="metadata9"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+     id="defs7" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="852"
+     inkscape:window-height="480"
+     id="namedview5"
+     showgrid="false"
+     inkscape:zoom="0.4609375"
+     inkscape:cx="-114.98305"
+     inkscape:cy="256"
+     inkscape:window-x="840"
+     inkscape:window-y="429"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><path
+     d="M450.352,256.508l35.405-36.292c4.403-4.513,6.224-10.947,4.838-17.097c-1.387-6.15-5.79-11.182-11.704-13.37  l-47.546-17.595l16.163-48.054c2.011-5.976,0.859-12.563-3.056-17.504c-3.917-4.94-10.07-7.572-16.344-6.971l-50.478,4.766  l-6.27-50.309c-0.779-6.257-4.672-11.694-10.345-14.448c-5.671-2.753-12.353-2.45-17.75,0.806l-43.818,26.427l-27.876-42.914  c-3.435-5.287-9.311-8.477-15.616-8.477c-6.304,0-12.182,3.19-15.617,8.478l-27.616,42.517L169.4,40.138  c-5.386-3.275-12.065-3.603-17.748 [...]
+     id="path3"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_pause_active.svg b/skins/blackhole/themes/default/icons/ico_pause_active.svg
new file mode 100644
index 0000000..8c20614
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_pause_active.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="100"
+   height="100"
+   viewBox="0 0 100 100"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_pause_active.svg"><metadata
+     id="metadata45"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs43"><linearGradient
+       id="linearGradient4173"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4175" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4177" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4173"
+       id="linearGradient4179"
+       x1="-13.433744"
+       y1="86.582359"
+       x2="54.143299"
+       y2="-2.3079979"
+       gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview41"
+     showgrid="false"
+     inkscape:zoom="3.3714286"
+     inkscape:cx="26.5"
+     inkscape:cy="35"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><g
+     id="g3"
+     transform="matrix(1.0377358,0,0,0.91428571,22.5,18)"
+     style="fill:url(#linearGradient4179);fill-opacity:1"><g
+       id="g5"
+       style="fill:url(#linearGradient4179);fill-opacity:1"><path
+         d="m 44,0 c -4.972,0 -9,1.529 -9,6.5 l 0,57 c 0,4.971 4.028,6.5 9,6.5 4.971,0 9,-1.529 9,-6.5 l 0,-57 C 53,1.529 48.971,0 44,0 Z"
+         id="path7"
+         inkscape:connector-curvature="0"
+         style="fill:url(#linearGradient4179);fill-opacity:1" /><path
+         d="M 9,0 C 4.028,0 0,1.529 0,6.5 l 0,57 c 0,4.971 4.028,6.5 9,6.5 4.971,0 9,-1.529 9,-6.5 l 0,-57 C 18,1.529 13.971,0 9,0 Z"
+         id="path9"
+         inkscape:connector-curvature="0"
+         style="fill:url(#linearGradient4179);fill-opacity:1" /></g></g><g
+     id="g11"
+     transform="translate(0,30)" /><g
+     id="g13"
+     transform="translate(0,30)" /><g
+     id="g15"
+     transform="translate(0,30)" /><g
+     id="g17"
+     transform="translate(0,30)" /><g
+     id="g19"
+     transform="translate(0,30)" /><g
+     id="g21"
+     transform="translate(0,30)" /><g
+     id="g23"
+     transform="translate(0,30)" /><g
+     id="g25"
+     transform="translate(0,30)" /><g
+     id="g27"
+     transform="translate(0,30)" /><g
+     id="g29"
+     transform="translate(0,30)" /><g
+     id="g31"
+     transform="translate(0,30)" /><g
+     id="g33"
+     transform="translate(0,30)" /><g
+     id="g35"
+     transform="translate(0,30)" /><g
+     id="g37"
+     transform="translate(0,30)" /><g
+     id="g39"
+     transform="translate(0,30)" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_pause_inactive.svg b/skins/blackhole/themes/default/icons/ico_pause_inactive.svg
new file mode 100644
index 0000000..d67da95
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_pause_inactive.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="100"
+   height="100"
+   viewBox="0 0 100 100"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_pause_inactive.svg"><metadata
+     id="metadata45"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs43"><linearGradient
+       id="linearGradient4173"><stop
+         style="stop-color:#001428;stop-opacity:1;"
+         offset="0"
+         id="stop4175" /><stop
+         style="stop-color:#003c5e;stop-opacity:1;"
+         offset="1"
+         id="stop4177" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4173"
+       id="linearGradient4179"
+       x1="-13.433744"
+       y1="86.582359"
+       x2="54.143299"
+       y2="-2.3079979"
+       gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview41"
+     showgrid="false"
+     inkscape:zoom="3.3714286"
+     inkscape:cx="26.5"
+     inkscape:cy="35"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><g
+     id="g3"
+     transform="matrix(1.0377358,0,0,0.91428571,22.5,18)"
+     style="fill:url(#linearGradient4179);fill-opacity:1"><g
+       id="g5"
+       style="fill:url(#linearGradient4179);fill-opacity:1"><path
+         d="m 44,0 c -4.972,0 -9,1.529 -9,6.5 l 0,57 c 0,4.971 4.028,6.5 9,6.5 4.971,0 9,-1.529 9,-6.5 l 0,-57 C 53,1.529 48.971,0 44,0 Z"
+         id="path7"
+         inkscape:connector-curvature="0"
+         style="fill:url(#linearGradient4179);fill-opacity:1" /><path
+         d="M 9,0 C 4.028,0 0,1.529 0,6.5 l 0,57 c 0,4.971 4.028,6.5 9,6.5 4.971,0 9,-1.529 9,-6.5 l 0,-57 C 18,1.529 13.971,0 9,0 Z"
+         id="path9"
+         inkscape:connector-curvature="0"
+         style="fill:url(#linearGradient4179);fill-opacity:1" /></g></g><g
+     id="g11"
+     transform="translate(0,30)" /><g
+     id="g13"
+     transform="translate(0,30)" /><g
+     id="g15"
+     transform="translate(0,30)" /><g
+     id="g17"
+     transform="translate(0,30)" /><g
+     id="g19"
+     transform="translate(0,30)" /><g
+     id="g21"
+     transform="translate(0,30)" /><g
+     id="g23"
+     transform="translate(0,30)" /><g
+     id="g25"
+     transform="translate(0,30)" /><g
+     id="g27"
+     transform="translate(0,30)" /><g
+     id="g29"
+     transform="translate(0,30)" /><g
+     id="g31"
+     transform="translate(0,30)" /><g
+     id="g33"
+     transform="translate(0,30)" /><g
+     id="g35"
+     transform="translate(0,30)" /><g
+     id="g37"
+     transform="translate(0,30)" /><g
+     id="g39"
+     transform="translate(0,30)" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_play_active.svg b/skins/blackhole/themes/default/icons/ico_play_active.svg
new file mode 100644
index 0000000..bcb7da2
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_play_active.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="100"
+   height="100"
+   viewBox="0 0 100 100"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_play_active.svg"><metadata
+     id="metadata41"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs39"><linearGradient
+       id="linearGradient4169"><stop
+         style="stop-color:#3c0000;stop-opacity:1;"
+         offset="0"
+         id="stop4171" /><stop
+         style="stop-color:#c80000;stop-opacity:1;"
+         offset="1"
+         id="stop4173" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175"
+       x1="17.103235"
+       y1="59.3172"
+       x2="26.194145"
+       y2="-7.658658"
+       gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview37"
+     showgrid="false"
+     inkscape:zoom="3.9333333"
+     inkscape:cx="25"
+     inkscape:cy="30"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><g
+     id="g3"
+     transform="matrix(1.1,0,0,1.0666631,22.5,17.999716)"
+     style="fill:url(#linearGradient4175);fill-opacity:1"><path
+       d="M 48.479,27.435 5.672,0.915 C 2.553,-1.132 0,0.374 0,4.261 l 0,51.48 c 0,3.885 2.553,5.391 5.672,3.346 l 42.807,-26.52 c 0,0 1.521,-1.07 1.521,-2.566 0,-1.496 -1.521,-2.566 -1.521,-2.566 z"
+       id="path5"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient4175);fill-opacity:1" /></g><g
+     id="g7"
+     transform="translate(0,40)" /><g
+     id="g9"
+     transform="translate(0,40)" /><g
+     id="g11"
+     transform="translate(0,40)" /><g
+     id="g13"
+     transform="translate(0,40)" /><g
+     id="g15"
+     transform="translate(0,40)" /><g
+     id="g17"
+     transform="translate(0,40)" /><g
+     id="g19"
+     transform="translate(0,40)" /><g
+     id="g21"
+     transform="translate(0,40)" /><g
+     id="g23"
+     transform="translate(0,40)" /><g
+     id="g25"
+     transform="translate(0,40)" /><g
+     id="g27"
+     transform="translate(0,40)" /><g
+     id="g29"
+     transform="translate(0,40)" /><g
+     id="g31"
+     transform="translate(0,40)" /><g
+     id="g33"
+     transform="translate(0,40)" /><g
+     id="g35"
+     transform="translate(0,40)" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_play_inactive.svg b/skins/blackhole/themes/default/icons/ico_play_inactive.svg
new file mode 100644
index 0000000..5eee008
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_play_inactive.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="100"
+   height="100"
+   viewBox="0 0 100 100"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ico_play_inactive.svg"><metadata
+     id="metadata41"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs39"><linearGradient
+       id="linearGradient4169"><stop
+         style="stop-color:#001428;stop-opacity:1;"
+         offset="0"
+         id="stop4171" /><stop
+         style="stop-color:#003c5e;stop-opacity:1;"
+         offset="1"
+         id="stop4173" /></linearGradient><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175"
+       x1="17.103235"
+       y1="59.3172"
+       x2="26.194145"
+       y2="-7.658658"
+       gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1400"
+     inkscape:window-height="998"
+     id="namedview37"
+     showgrid="false"
+     inkscape:zoom="3.9333333"
+     inkscape:cx="25"
+     inkscape:cy="30"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><g
+     id="g3"
+     transform="matrix(1.1,0,0,1.0666631,22.5,17.999716)"
+     style="fill:url(#linearGradient4175);fill-opacity:1"><path
+       d="M 48.479,27.435 5.672,0.915 C 2.553,-1.132 0,0.374 0,4.261 l 0,51.48 c 0,3.885 2.553,5.391 5.672,3.346 l 42.807,-26.52 c 0,0 1.521,-1.07 1.521,-2.566 0,-1.496 -1.521,-2.566 -1.521,-2.566 z"
+       id="path5"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient4175);fill-opacity:1" /></g><g
+     id="g7"
+     transform="translate(0,40)" /><g
+     id="g9"
+     transform="translate(0,40)" /><g
+     id="g11"
+     transform="translate(0,40)" /><g
+     id="g13"
+     transform="translate(0,40)" /><g
+     id="g15"
+     transform="translate(0,40)" /><g
+     id="g17"
+     transform="translate(0,40)" /><g
+     id="g19"
+     transform="translate(0,40)" /><g
+     id="g21"
+     transform="translate(0,40)" /><g
+     id="g23"
+     transform="translate(0,40)" /><g
+     id="g25"
+     transform="translate(0,40)" /><g
+     id="g27"
+     transform="translate(0,40)" /><g
+     id="g29"
+     transform="translate(0,40)" /><g
+     id="g31"
+     transform="translate(0,40)" /><g
+     id="g33"
+     transform="translate(0,40)" /><g
+     id="g35"
+     transform="translate(0,40)" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_rec_on.svg b/skins/blackhole/themes/default/icons/ico_rec_on.svg
new file mode 100644
index 0000000..7dc41a6
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_rec_on.svg
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="50"
+   height="50"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 49.999999 50.000001"
+   sodipodi:docname="ico_rec_on.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4240">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4242" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4244" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4214">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop4216" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4218" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4173">
+      <stop
+         style="stop-color:#2c4255;stop-opacity:1;"
+         offset="0"
+         id="stop4175" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4177" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4173"
+       id="linearGradient4179"
+       x1="6.1765633"
+       y1="1047.7924"
+       x2="39.66613"
+       y2="1009.4264"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4214"
+       id="linearGradient4220"
+       x1="8.7948284"
+       y1="1042.3796"
+       x2="43.393124"
+       y2="1014.2346"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4240"
+       id="radialGradient4246"
+       cx="42.006367"
+       cy="1003.2948"
+       fx="42.006367"
+       fy="1003.2948"
+       r="23.434333"
+       gradientTransform="translate(0,-8.3618257e-5)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4214"
+       id="linearGradient4155"
+       gradientUnits="userSpaceOnUse"
+       x1="8.7948284"
+       y1="1042.3796"
+       x2="43.393124"
+       y2="1014.2346"
+       gradientTransform="matrix(1.0231507,0,0,1.0231507,-0.57876763,-23.784214)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="10.055058"
+     inkscape:cx="21.134219"
+     inkscape:cy="23.850628"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <circle
+       style="opacity:1;fill:#aa0000;fill-opacity:1;stroke:url(#linearGradient4155);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4196"
+       cy="1027.3622"
+       cx="25"
+       r="23.976849" />
+    <ellipse
+       cx="25"
+       cy="1027.3623"
+       rx="23.434328"
+       ry="23.43433"
+       id="ellipse4226"
+       style="opacity:1;fill:url(#radialGradient4246);fill-opacity:1;stroke:url(#linearGradient4220);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="opacity:0.75;fill:#cccccc;fill-opacity:1;stroke:url(#linearGradient4179);stroke-width:2.0349884;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4137"
+       r="23.982506"
+       cy="1027.3622"
+       cx="24.999998" />
+    <ellipse
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#00ffff;stroke-width:2.0599978;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4164"
+       cx="24.99999"
+       cy="1027.3622"
+       r="23.970001" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_recording.svg b/skins/blackhole/themes/default/icons/ico_recording.svg
new file mode 100644
index 0000000..b519600
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_recording.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="512px"
+   height="512px"
+   viewBox="0 0 512 512"
+   style="enable-background:new 0 0 512 512;"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_recording.svg"><metadata
+     id="metadata9"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs7" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview5"
+     showgrid="false"
+     inkscape:zoom="0.4609375"
+     inkscape:cx="256"
+     inkscape:cy="256"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Layer_1" /><path
+     d="M59.727,431.163h28.07c3.17,0,5.739-2.569,5.739-5.739v-37.333h53.683v37.333c0,3.17,2.57,5.739,5.739,5.739h206.084  c3.169,0,5.739-2.569,5.739-5.739v-37.333h53.683v37.333c0,3.17,2.569,5.739,5.739,5.739h28.07c3.169,0,5.738-2.569,5.738-5.739  V86.576c0-3.17-2.569-5.739-5.738-5.739h-28.07c-3.17,0-5.739,2.569-5.739,5.739v37.333h-53.683V86.576  c0-3.17-2.57-5.739-5.739-5.739H152.958c-3.169,0-5.739,2.569-5.739,5.739v37.333H93.536V86.576c0-3.17-2.569-5.739-5.739-5.739  h-28.07c-3.169,0-5. [...]
+     id="path3"
+     style="fill:#ececec" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_sd576i.svg b/skins/blackhole/themes/default/icons/ico_sd576i.svg
new file mode 100644
index 0000000..934b24d
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_sd576i.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="50"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 150 50.000001"
+   sodipodi:docname="ico_sd576i.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4172">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4174" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4176" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4162">
+      <stop
+         style="stop-color:#c3c3c3;stop-opacity:1"
+         offset="0"
+         id="stop4164" />
+      <stop
+         style="stop-color:#e71f1f;stop-opacity:1"
+         offset="1"
+         id="stop4166" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4192">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4194" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4196" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4192"
+       id="linearGradient4198"
+       x1="113.87164"
+       y1="1049.3083"
+       x2="137.99171"
+       y2="963.38702"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(4.4999999e-6,-4.6e-5)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4162"
+       id="linearGradient4168"
+       x1="35.610756"
+       y1="1064.6293"
+       x2="103.83022"
+       y2="996.30615"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4172"
+       id="linearGradient4178"
+       x1="89.026787"
+       y1="989.05988"
+       x2="75.258934"
+       y2="1062.7659"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.83"
+     inkscape:cx="82.139084"
+     inkscape:cy="55.966018"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:url(#linearGradient4198);fill-opacity:1;stroke:url(#linearGradient4168);stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 3.4999999e-6,1002.3622 0,50 L 150,1052.3622 l 0,-50 -149.9999965000001,0 z m 5.0000000000001,5 49.9999985,0 0,40 -49.9999985,0 0,-40 z"
+       id="rect4139" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient4178);stroke-width:1.972;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4162"
+       width="148.02827"
+       height="48.028259"
+       x="0.98586887"
+       y="1003.3481"
+       ry="0.6197632" />
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4180">
+      <path
+         d="m 67.551323,1036.6602 c 1.54,1.54 3.745,3.045 7.315,3.045 3.885,0 7.525,-2.73 7.525,-7.56 0,-4.83 -3.115,-7 -6.93,-7 -1.365,0 -2.38,0.35 -3.43,0.91 l 0.595,-6.615 8.645,0 0,-2.485 -11.165,0 -0.735,10.745 1.54,0.98 c 1.33,-0.875 2.275,-1.365 3.815,-1.365 2.87,0 4.76,1.82 4.76,4.9 0,3.115 -2.17,5.11 -4.9,5.11 -2.625,0 -4.305,-1.225 -5.635,-2.555 l -1.4,1.89 z"
+         style=""
+         id="path4196" />
+      <path
+         d="m 90.234604,1039.2852 2.975,0 c 0.385,-8.715 1.47,-13.79 6.755,-20.545 l 0,-1.785 -14.385,0 0,2.485 11.13,0 c -4.41,6.125 -6.09,11.445 -6.475,19.845 z"
+         style=""
+         id="path4198" />
+      <path
+         d="m 110.78289,1037.4302 c -2.835,0 -4.55,-2.345 -4.9,-6.685 1.505,-2.1 3.255,-2.94 4.655,-2.94 2.765,0 4.13,1.82 4.13,4.725 0,2.94 -1.68,4.9 -3.885,4.9 z m 6.195,-18.515 c -1.26,-1.365 -2.975,-2.38 -5.39,-2.38 -4.445,0 -8.505,3.465 -8.505,12.425 0,7.175 3.325,10.745 7.7,10.745 3.605,0 6.615,-2.905 6.615,-7.175 0,-4.585 -2.52,-6.895 -6.37,-6.895 -1.82,0 -3.815,1.085 -5.215,2.8 0.14,-7.07 2.765,-9.485 5.88,-9.485 1.4,0 2.765,0.665 3.675,1.75 l 1.61,-1.785 z"
+         style=""
+         id="path4200" />
+      <path
+         d="m 123.10617,1018.7752 c 1.12,0 1.995,-0.77 1.995,-1.855 0,-1.12 -0.875,-1.855 -1.995,-1.855 -1.12,0 -1.995,0.735 -1.995,1.855 0,1.085 0.875,1.855 1.995,1.855 z m -1.47,20.51 2.87,0 0,-17.01 -2.87,0 0,17.01 z"
+         style=""
+         id="path4202" />
+    </g>
+    <g
+       style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4186">
+      <path
+         d="m 8.3545344,1035.7806 c 2.0649996,2.905 4.8649996,4.165 7.9099996,4.165 4.97,0 8.33,-3.115 8.33,-7.21 0,-2.625 -1.12,-4.13 -3.325,-5.425 l -2.45,-1.47 c -1.75,-1.05 -2.905,-1.82 -2.905,-3.29 0,-1.575 1.295,-3.08 3.5,-3.08 1.89,0 3.36,1.015 4.515,2.31 l 2.415,-2.205 c -1.61,-1.995 -3.99,-3.36 -6.72,-3.36 -4.305,0 -7.595,3.045 -7.595,6.72 0,2.695 1.47,4.34 3.465,5.565 l 2.415,1.47 c 1.68,1.015 2.765,1.855 2.765,3.29 0,2.135 -1.715,3.465 -4.095,3.465 -2.24,0 -4.165,-1.19 -5.495, [...]
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4191" />
+      <path
+         d="m 27.309769,1039.5256 6.65,0 c 7.525,0 12.46,-5.25 12.46,-13.93 0,-5.81 -3.535,-8.96 -9.905,-8.96 l -4.655,0 -4.55,22.89 z m 4.375,-3.045 3.325,-16.8 1.4,0 c 3.885,0 6.16,2.1 6.16,6.16 0,6.755 -3.535,10.64 -8.68,10.64 l -2.205,0 z"
+         style="font-style:italic;font-variant:normal;font-weight:600;font-stretch:normal;font-size:35px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Semi-Bold Italic';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path4193" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_timer.svg b/skins/blackhole/themes/default/icons/ico_timer.svg
new file mode 100644
index 0000000..1e377b2
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_timer.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="512px"
+   height="512px"
+   viewBox="0 0 512 512"
+   enable-background="new 0 0 512 512"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_timer.svg"><metadata
+     id="metadata9"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs7" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="852"
+     inkscape:window-height="480"
+     id="namedview5"
+     showgrid="false"
+     inkscape:zoom="0.4609375"
+     inkscape:cx="256"
+     inkscape:cy="256"
+     inkscape:window-x="555"
+     inkscape:window-y="210"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><path
+     d="M64,80V16c0-8.844,7.156-16,16-16s16,7.156,16,16v64c0,8.844-7.156,16-16,16S64,88.844,64,80z M336,96  c8.844,0,16-7.156,16-16V16c0-8.844-7.156-16-16-16s-16,7.156-16,16v64C320,88.844,327.156,96,336,96z M512,384  c0,70.688-57.313,128-128,128s-128-57.313-128-128s57.313-128,128-128S512,313.313,512,384z M480,384c0-52.938-43.063-96-96-96  s-96,43.063-96,96s43.063,96,96,96S480,436.938,480,384z M128,192H64v64h64V192z M64,352h64v-64H64V352z M160,256h64v-64h-64V256z   M160,352h64v-64h-64V352 [...]
+     id="path3"
+     style="fill:#ececec" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_timer_active.svg b/skins/blackhole/themes/default/icons/ico_timer_active.svg
new file mode 100644
index 0000000..23a4c47
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_timer_active.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="21.621px"
+   height="29.046px"
+   viewBox="0 0 21.621 29.046"
+   style="enable-background:new 0 0 21.621 29.046;"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_timer_active.svg"><metadata
+     id="metadata39"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs37" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview35"
+     showgrid="false"
+     inkscape:zoom="8.1250432"
+     inkscape:cx="10.8105"
+     inkscape:cy="14.523"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     d="M21.621,17.932c0,1.291-1.193,2.104-2.486,2.104h-0.01c0.965,0.166,2.111,1.331,2.111,2.462c0,1.243-1.184,2.019-2.43,2.019  h-1.072c0.844,0.243,1.977,1.375,1.977,2.462c0,1.27-1.191,2.067-2.459,2.067H6.443C2.883,29.046,0,26.159,0,22.599  c0,0,0-6.872,0-6.88c0-2.522,1.395-5.189,3.59-6.042c1.711-1.126,5.15-3.133,5.883-6.85c0-1.449,0-2.809,0-2.809  s4.807-0.52,4.807,3.999c0,5.322-3.348,6.186-0.686,6.314h3.98c1.406,0,2.621,1.37,2.621,2.779c0,1.217-1.154,2.006-2.119,2.254  h1.059C20.428,1 [...]
+     id="path3"
+     style="fill:#2ca02c" /><g
+     id="g5" /><g
+     id="g7" /><g
+     id="g9" /><g
+     id="g11" /><g
+     id="g13" /><g
+     id="g15" /><g
+     id="g17" /><g
+     id="g19" /><g
+     id="g21" /><g
+     id="g23" /><g
+     id="g25" /><g
+     id="g27" /><g
+     id="g29" /><g
+     id="g31" /><g
+     id="g33" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_timer_inactive.svg b/skins/blackhole/themes/default/icons/ico_timer_inactive.svg
new file mode 100644
index 0000000..b826014
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_timer_inactive.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="64px"
+   height="64px"
+   viewBox="0 0 64 64"
+   enable-background="new 0 0 64 64"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_timer_inactive.svg"><metadata
+     id="metadata11"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs9" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="3.6875"
+     inkscape:cx="32"
+     inkscape:cy="32"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Layer_1" /><g
+     id="g3"
+     style="fill:#800000"><path
+       fill="#231F20"
+       d="M55.71,29.883c0.089-0.149,0.206-0.31,0.336-0.451c0.024-0.03,2.384-3.062,1.586-6.226   c-0.395-1.566-1.478-2.846-3.217-3.807c0.438-1.075,1.002-3.068,0.271-5.023c-0.596-1.592-1.905-2.803-3.892-3.598   c-0.206-1.243-0.917-4.161-3.184-6.056c-1.332-1.114-2.979-1.678-4.896-1.678c-0.303,0-0.603,0.014-0.837,0.042   c-0.412-0.05-2.626-0.289-5.701-0.289c-5.128,0-12.479,0.65-18.352,3.739l-4.07,1.208H7.932H5.846v1.765V33.4h2.065l6.229,0.094   c1.83,1.133,3.523,2.616,5.167,4.058c1.792,1.573 [...]
+       id="path5"
+       style="fill:#800000" /></g></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_videotext.svg b/skins/blackhole/themes/default/icons/ico_videotext.svg
new file mode 100644
index 0000000..f75a4e6
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_videotext.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="50"
+   height="50"
+   id="svg4557"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 49.999999 50.000002"
+   sodipodi:docname="ico_videotext.svg">
+  <defs
+     id="defs4559">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4144">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4146" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4148" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5131">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop5133" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5135" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5131"
+       id="linearGradient5137"
+       x1="25.232635"
+       y1="1025.8571"
+       x2="48.598396"
+       y2="1002.0261"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4144"
+       id="linearGradient4150"
+       x1="47.160355"
+       y1="1007.4194"
+       x2="-9.0758705"
+       y2="1061.2273"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.9727988"
+     inkscape:cx="17.389319"
+     inkscape:cy="26.264818"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4562">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient5137);fill-opacity:1;stroke:url(#linearGradient4150);stroke-width:1.94959891;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5113"
+       width="48.050404"
+       height="48.050404"
+       x="0.97479796"
+       y="1003.337"
+       ry="0.60414463" />
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text5105">
+      <path
+         d="m 11.844751,1014.0037 -0.490909,0.5091 -0.854545,-0.8545 0,-3.891 1.345454,-1.3636 0,5.6 z m -0.6,2 -4.4545454,4.4546 -0.9636363,0 0,-0.9637 4.4545457,-4.4727 1.072727,-0.018 -0.109091,1 z m -5.6545454,-2.3454 -0.8545454,0.8545 -0.5090909,-0.5091 0,-5.6 1.3636363,1.3636 0,3.891 z m -1.3636363,6.8 0.6727272,0.6727 0.6909091,-0.6727 0,-4.5819 -0.8545454,-0.8545 -0.5090909,0.5273 0,4.9091 z"
+         style=""
+         id="path4153" />
+      <path
+         d="m 16.231257,1014.0037 -0.509091,0.5091 -0.854546,-0.8545 0,-4.5819 0.672728,-0.6727 0.690909,0.6727 0,4.9273 z m 0,6.4546 -0.690909,0.6727 -0.672728,-0.6727 0,-4.5819 0.854546,-0.8545 0.509091,0.5273 0,4.9091 z"
+         style=""
+         id="path4155" />
+      <path
+         d="m 26.883814,1019.5128 -0.672728,0.6909 -0.672727,-0.6909 0,-3.6364 0.854545,-0.8545 0.49091,0.5273 0,3.9636 z m 0,-5.5091 -0.49091,0.5091 -0.854545,-0.8545 0,-3.6364 0.672727,-0.6909 0.672728,0.6909 0,3.9818 z m -0.927273,-4.9273 -0.672727,0.6909 -4.418182,0 -1.345455,-1.3636 5.763637,0 0.672727,0.6727 z m 0,11.3819 -0.672727,0.6727 -5.763637,0 1.345455,-1.3637 4.418182,0 0.672727,0.691 z m -5.327273,-6.8 -0.854545,0.8545 -0.509091,-0.5091 0,-5.3454 1.363636,1.3636 0,3.6364 z [...]
+         style=""
+         id="path4157" />
+      <path
+         d="m 36.688501,1008.4037 -1.345454,1.3636 -4.672728,0 -1.345454,-1.3636 7.363636,0 z m 0,12.7273 -7.363636,0 1.345454,-1.3637 4.672728,0 1.345454,1.3637 z m -6.254545,-5.2546 0,3.6364 -1.363637,1.3636 0,-5.3272 0.509091,-0.5273 0.854546,0.8545 z m -1.363637,-1.8727 0,-5.3454 1.363637,1.3636 0,3.6364 -0.854546,0.8545 -0.509091,-0.5091 z m 6.181818,0.091 0.69091,0.6727 -0.69091,0.6728 -4.745454,0 -0.672727,-0.6728 0.672727,-0.6727 4.745454,0 z"
+         style=""
+         id="path4159" />
+      <path
+         d="m 46.493189,1014.0037 -0.49091,0.5091 -0.854545,-0.8545 0,-3.6364 0.672727,-0.6909 0.672728,0.6909 0,3.9818 z m -0.927273,-4.9273 -0.672727,0.6909 -4.418182,0 -0.672728,-0.6909 0.672728,-0.6727 4.418182,0 0.672727,0.6727 z m 0.927273,10.4364 -0.672728,0.6909 -0.672727,-0.6909 0,-3.6364 0.854545,-0.8545 0.49091,0.5273 0,3.9636 z m -6.254546,-5.8545 -0.854545,0.8545 -0.509091,-0.5091 0,-3.9818 0.672727,-0.6909 0.690909,0.6909 0,3.6364 z m -1.363636,5.8545 0.672727,0.6909 0.6909 [...]
+         style=""
+         id="path4161" />
+    </g>
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.71295929px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text5109">
+      <path
+         d="m 12.277513,1029.2725 -1.595236,1.6168 -5.8204532,0 -1.6167927,-1.6168 9.0324819,0 z m -3.7078447,14.2924 -0.8191749,0.7976 -0.7976177,-0.7976 0,-4.6348 1.01319,-1.0132 0.6036026,0.6036 0,5.0444 z m 0,-6.8336 -0.6036026,0.582 -1.01319,-0.9916 0,-4.333 0.7976177,-0.7976 0.8191749,0.7976 0,4.7426 z"
+         style=""
+         id="path4164" />
+      <path
+         d="m 23.90242,1029.2725 -1.595235,1.6168 -5.54021,0 -1.595235,-1.6168 8.73068,0 z m 0,15.09 -8.73068,0 1.595235,-1.6167 5.54021,0 1.595235,1.6167 z m -7.415689,-6.23 0,4.3115 -1.616792,1.6167 0,-6.3162 0.603602,-0.6252 1.01319,1.0132 z m -1.616792,-2.2204 0,-6.3378 1.616792,1.6168 0,4.3114 -1.01319,1.0132 -0.603602,-0.6036 z m 7.32946,0.1078 0.819175,0.7976 -0.819175,0.7976 -5.626439,0 -0.797617,-0.7976 0.797617,-0.7976 5.626439,0 z"
+         style=""
+         id="path4166" />
+      <path
+         d="m 31.323667,1036.5157 0,-1.7677 3.2767,-5.4755 0.926961,0 0,1.5737 -3.384486,5.6695 -0.819175,0 z m -1.422778,0 -3.406043,-5.6695 0,-1.5737 0.926961,0 3.2767,5.4755 0,1.7677 -0.797618,0 z m 0.797618,0.6036 0,1.7677 -3.2767,5.4755 -0.926961,0 0,-1.5736 3.406043,-5.6696 0.797618,0 z m 1.422778,0 3.406043,5.6696 0,1.5736 -0.926961,0 -3.2767,-5.4755 0,-1.7677 0.797618,0 z"
+         style=""
+         id="path4168" />
+      <path
+         d="m 47.152234,1029.2725 -1.595235,1.6168 -5.820454,0 -1.616792,-1.6168 9.032481,0 z m -3.707844,14.2924 -0.819175,0.7976 -0.797618,-0.7976 0,-4.6348 1.01319,-1.0132 0.603603,0.6036 0,5.0444 z m 0,-6.8336 -0.603603,0.582 -1.01319,-0.9916 0,-4.333 0.797618,-0.7976 0.819175,0.7976 0,4.7426 z"
+         style=""
+         id="path4170" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/ico_volume_full.svg b/skins/blackhole/themes/default/icons/ico_volume_full.svg
new file mode 100644
index 0000000..3dbfe7a
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_volume_full.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="150"
+   height="150"
+   viewBox="0 0 150 150"
+   enable-background="new 0 0 128 128"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_volume_full.svg"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview9"
+     showgrid="false"
+     inkscape:zoom="1.84375"
+     inkscape:cx="64"
+     inkscape:cy="64"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     d="m 55.484746,35.10678 -21.9,16.4 -20,0 c -3.3,0 -6.0000002,2.7 -6.0000002,6 l 0,41.8 c 0,3.3 2.7000002,6 6.0000002,6 l 20,0 21.9,16.4 c 4,3 9.6,0.2 9.6,-4.8 l 0,-77 c 0,-5 -5.7,-7.8 -9.6,-4.8 z"
+     id="path3"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     d="m 84.884746,44.90678 c -2.7,-2.7 -7.2,-2.7 -9.9,0 -2.7,2.7 -2.7,7.2 0,9.9 13,13 13,34.1 0,47.1 -2.7,2.7 -2.7,7.2 0,9.9 1.4,1.4 3.2,2 4.9,2 1.7,0 3.6,-0.7 4.9,-2.1 18.600004,-18.3 18.600004,-48.3 0.1,-66.8 z"
+     id="path5"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     d="m 92.684746,29.20678 c -2.7,2.7 -2.7,7.2 0,9.9 10.500004,10.5 16.300004,24.4 16.300004,39.3 0,14.9 -5.8,28.8 -16.300004,39.3 -2.7,2.7 -2.7,7.2 0,9.9 1.4,1.4 3.2,2.1 4.9,2.1 1.8,0 3.600004,-0.7 4.900004,-2 13.1,-13.1 20.4,-30.6 20.4,-49.2 0,-18.6 -7.2,-36 -20.4,-49.2 -2.600004,-2.8 -7.000004,-2.8 -9.800004,-0.1 z"
+     id="path7"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     inkscape:connector-curvature="0"
+     id="path4142"
+     d="m 116.58324,17.126202 c -2.74544,3.22855 -2.74544,8.609466 0,11.838016 10.67672,12.555472 16.57435,29.176524 16.57435,46.993336 0,17.816806 -5.89763,34.437866 -16.57435,46.993336 -2.74544,3.22855 -2.74544,8.60947 0,11.83802 1.42357,1.67406 3.25386,2.51109 4.98247,2.51109 1.8303,0 3.66059,-0.83703 4.98247,-2.39152 13.32049,-15.66444 20.74335,-36.59023 20.74335,-58.83135 0,-22.241121 -7.32118,-43.047331 -20.74335,-58.831352 -2.64376,-3.348126 -7.11781,-3.348126 -9.96494,-0.119576 z"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_volume_low.svg b/skins/blackhole/themes/default/icons/ico_volume_low.svg
new file mode 100644
index 0000000..6b4259d
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_volume_low.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="150"
+   height="150"
+   viewBox="0 0 150 150"
+   enable-background="new 0 0 128 128"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_volume_low.svg"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview9"
+     showgrid="false"
+     inkscape:zoom="1.84375"
+     inkscape:cx="64"
+     inkscape:cy="64"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     d="m 55.484746,35.10678 -21.9,16.4 -20,0 c -3.3,0 -6.0000002,2.7 -6.0000002,6 l 0,41.8 c 0,3.3 2.7000002,6 6.0000002,6 l 20,0 21.9,16.4 c 4,3 9.6,0.2 9.6,-4.8 l 0,-77 c 0,-5 -5.7,-7.8 -9.6,-4.8 z"
+     id="path3"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     d="m 84.884746,44.90678 c -2.7,-2.7 -7.2,-2.7 -9.9,0 -2.7,2.7 -2.7,7.2 0,9.9 13,13 13,34.1 0,47.1 -2.7,2.7 -2.7,7.2 0,9.9 1.4,1.4 3.2,2 4.9,2 1.7,0 3.6,-0.7 4.9,-2.1 18.600004,-18.3 18.600004,-48.3 0.1,-66.8 z"
+     id="path5"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_volume_medium.svg b/skins/blackhole/themes/default/icons/ico_volume_medium.svg
new file mode 100644
index 0000000..24042fe
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_volume_medium.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="150"
+   height="150"
+   viewBox="0 0 150 150"
+   enable-background="new 0 0 128 128"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_volume_medium.svg"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview9"
+     showgrid="false"
+     inkscape:zoom="1.84375"
+     inkscape:cx="64"
+     inkscape:cy="64"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     d="m 55.484746,35.10678 -21.9,16.4 -20,0 c -3.3,0 -6.0000002,2.7 -6.0000002,6 l 0,41.8 c 0,3.3 2.7000002,6 6.0000002,6 l 20,0 21.9,16.4 c 4,3 9.6,0.2 9.6,-4.8 l 0,-77 c 0,-5 -5.7,-7.8 -9.6,-4.8 z"
+     id="path3"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     d="m 84.884746,44.90678 c -2.7,-2.7 -7.2,-2.7 -9.9,0 -2.7,2.7 -2.7,7.2 0,9.9 13,13 13,34.1 0,47.1 -2.7,2.7 -2.7,7.2 0,9.9 1.4,1.4 3.2,2 4.9,2 1.7,0 3.6,-0.7 4.9,-2.1 18.600004,-18.3 18.600004,-48.3 0.1,-66.8 z"
+     id="path5"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /><path
+     d="m 92.684746,29.20678 c -2.7,2.7 -2.7,7.2 0,9.9 10.500004,10.5 16.300004,24.4 16.300004,39.3 0,14.9 -5.8,28.8 -16.300004,39.3 -2.7,2.7 -2.7,7.2 0,9.9 1.4,1.4 3.2,2.1 4.9,2.1 1.8,0 3.600004,-0.7 4.900004,-2 13.1,-13.1 20.4,-30.6 20.4,-49.2 0,-18.6 -7.2,-36 -20.4,-49.2 -2.600004,-2.8 -7.000004,-2.8 -9.800004,-0.1 z"
+     id="path7"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_volume_mute.svg b/skins/blackhole/themes/default/icons/ico_volume_mute.svg
new file mode 100644
index 0000000..a2b915f
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_volume_mute.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Capa_1"
+   x="0px"
+   y="0px"
+   width="150"
+   height="150"
+   viewBox="0 0 150 150"
+   enable-background="new 0 0 128 128"
+   xml:space="preserve"
+   inkscape:version="0.91pre2 r13516"
+   sodipodi:docname="ico_volume_mute.svg"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     id="namedview9"
+     showgrid="false"
+     inkscape:zoom="1.84375"
+     inkscape:cx="64"
+     inkscape:cy="64"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Capa_1" /><path
+     d="m 55.484746,35.10678 -21.9,16.4 -20,0 c -3.3,0 -6.0000002,2.7 -6.0000002,6 l 0,41.8 c 0,3.3 2.7000002,6 6.0000002,6 l 20,0 21.9,16.4 c 4,3 9.6,0.2 9.6,-4.8 l 0,-77 c 0,-5 -5.7,-7.8 -9.6,-4.8 z"
+     id="path3"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff" /></svg>
\ No newline at end of file
diff --git a/skins/blackhole/themes/default/icons/ico_widescreen.svg b/skins/blackhole/themes/default/icons/ico_widescreen.svg
new file mode 100644
index 0000000..ed7d0c8
--- /dev/null
+++ b/skins/blackhole/themes/default/icons/ico_widescreen.svg
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="50"
+   id="svg4226"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 50.000001"
+   sodipodi:docname="ico_widescreen.svg">
+  <defs
+     id="defs4228">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4793">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4795" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop4797" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4793"
+       id="linearGradient4799"
+       x1="74.292336"
+       y1="1044.8075"
+       x2="136.43808"
+       y2="1007.2992"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98704728,0,0,0.95610511,0.97145448,45.091876)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="linearGradient4158"
+       x1="4.2645707"
+       y1="1057.3361"
+       x2="159.72176"
+       y2="984.17682"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98704728,0,0,0.95610511,0.97145448,45.091876)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.5387454"
+     inkscape:cx="70.5"
+     inkscape:cy="24.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <metadata
+     id="metadata4231">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1002.3622)">
+    <path
+       style="fill:url(#linearGradient4799);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4158);stroke-width:1.94290602;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.97145301,1003.4554 c 48.96784399,5.0284 98.28055599,5.5469 148.05709699,0 l 0,47.8053 c -49.138948,-5.9953 -98.51387,-5.3615 -148.05709699,0 z"
+       id="path4774"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4801"
+       transform="translate(-0.3942576,1.101626)">
+      <path
+         d="m 56.21701,1036.2286 -10.822753,0 0,-2.041 4.162597,0 0,-13.4009 -4.162597,0 0,-1.8261 q 0.845947,0 1.812744,-0.1343 0.966797,-0.1477 1.463623,-0.4163 0.617676,-0.3357 0.966797,-0.8459 0.362548,-0.5237 0.416259,-1.3965 l 2.081299,0 0,18.02 4.082031,0 0,2.041 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+         id="path4146"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 75.163544,1029.743 q 0,3.0481 -2.01416,4.9817 -2.000733,1.9202 -4.914551,1.9202 -1.477051,0 -2.685547,-0.4565 -1.208496,-0.4566 -2.13501,-1.3562 -1.154785,-1.1145 -1.785889,-2.9541 -0.617675,-1.8396 -0.617675,-4.4312 0,-2.6587 0.563965,-4.7131 0.577392,-2.0545 1.826171,-3.6524 1.181641,-1.5173 3.048096,-2.3633 1.866455,-0.8593 4.350586,-0.8593 0.792236,0 1.329346,0.067 0.537109,0.067 1.087646,0.2417 l 0,2.5647 -0.134277,0 q -0.375977,-0.2014 -1.141358,-0.376 -0.751953,-0.18 [...]
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+         id="path4148"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 84.536102,1025.0568 -3.209228,0 0,-3.8269 3.209228,0 0,3.8269 z m 0,11.1718 -3.209228,0 0,-3.8269 3.209228,0 0,3.8269 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+         id="path4150"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 104.86569,1025.0299 q 0,2.6184 -0.60425,4.7534 -0.59082,2.135 -1.79931,3.6389 -1.22193,1.5308 -3.061526,2.3633 -1.839599,0.8325 -4.32373,0.8325 -0.698242,0 -1.315918,-0.081 -0.617676,-0.067 -1.101074,-0.2283 l 0,-2.5647 0.134277,0 q 0.389404,0.2014 1.101074,0.3894 0.71167,0.1746 1.584473,0.1746 2.967529,0 4.645994,-1.7725 1.6919,-1.7859 1.96045,-4.9145 -1.24878,0.7519 -2.349852,1.0742 -1.101075,0.3222 -2.403565,0.3222 -1.235351,0 -2.242431,-0.2417 -0.993653,-0.2417 -2.00073 [...]
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+         id="path4152"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/icons/partly-cloudy-day.png b/skins/blackhole/themes/default/icons/partly-cloudy-day.png
new file mode 100644
index 0000000..b6df179
Binary files /dev/null and b/skins/blackhole/themes/default/icons/partly-cloudy-day.png differ
diff --git a/skins/blackhole/themes/default/icons/partly-cloudy-night.png b/skins/blackhole/themes/default/icons/partly-cloudy-night.png
new file mode 100644
index 0000000..aa358fb
Binary files /dev/null and b/skins/blackhole/themes/default/icons/partly-cloudy-night.png differ
diff --git a/skins/blackhole/themes/default/icons/rain.png b/skins/blackhole/themes/default/icons/rain.png
new file mode 100644
index 0000000..8275003
Binary files /dev/null and b/skins/blackhole/themes/default/icons/rain.png differ
diff --git a/skins/blackhole/themes/default/icons/sleet.png b/skins/blackhole/themes/default/icons/sleet.png
new file mode 100644
index 0000000..1d99ae0
Binary files /dev/null and b/skins/blackhole/themes/default/icons/sleet.png differ
diff --git a/skins/blackhole/themes/default/icons/snow.png b/skins/blackhole/themes/default/icons/snow.png
new file mode 100644
index 0000000..939e22f
Binary files /dev/null and b/skins/blackhole/themes/default/icons/snow.png differ
diff --git a/skins/blackhole/themes/default/icons/wind.png b/skins/blackhole/themes/default/icons/wind.png
new file mode 100644
index 0000000..d92ec15
Binary files /dev/null and b/skins/blackhole/themes/default/icons/wind.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Applikationen.png b/skins/blackhole/themes/default/menuicons/customicons/Applikationen.png
new file mode 100644
index 0000000..3c3b616
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Applikationen.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Audio.png b/skins/blackhole/themes/default/menuicons/customicons/Audio.png
new file mode 100644
index 0000000..ff387fe
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Audio.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png b/skins/blackhole/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png
new file mode 100644
index 0000000..3cdddc9
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Dienstprogramme.png b/skins/blackhole/themes/default/menuicons/customicons/Dienstprogramme.png
new file mode 100644
index 0000000..793aba6
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Dienstprogramme.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/FireFox.png b/skins/blackhole/themes/default/menuicons/customicons/FireFox.png
new file mode 100644
index 0000000..192fadc
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/FireFox.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Info.png b/skins/blackhole/themes/default/menuicons/customicons/Info.png
new file mode 100644
index 0000000..6737431
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Info.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Internet.png b/skins/blackhole/themes/default/menuicons/customicons/Internet.png
new file mode 100644
index 0000000..f3db150
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Internet.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Medien.png b/skins/blackhole/themes/default/menuicons/customicons/Medien.png
new file mode 100644
index 0000000..0ce2360
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Medien.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Rechner neu starten.png b/skins/blackhole/themes/default/menuicons/customicons/Rechner neu starten.png
new file mode 100644
index 0000000..5783ccf
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Rechner neu starten.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Remote wakeup.png b/skins/blackhole/themes/default/menuicons/customicons/Remote wakeup.png
new file mode 100644
index 0000000..1cd2f6e
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Remote wakeup.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Spiele.png b/skins/blackhole/themes/default/menuicons/customicons/Spiele.png
new file mode 100644
index 0000000..8e07161
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Spiele.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/System herunterfahren.png b/skins/blackhole/themes/default/menuicons/customicons/System herunterfahren.png
new file mode 100644
index 0000000..e0234df
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/System herunterfahren.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/System.png b/skins/blackhole/themes/default/menuicons/customicons/System.png
new file mode 100644
index 0000000..81d100e
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/System.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Tools.png b/skins/blackhole/themes/default/menuicons/customicons/Tools.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Tools.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Tunderbird.png b/skins/blackhole/themes/default/menuicons/customicons/Tunderbird.png
new file mode 100644
index 0000000..5ae27e0
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Tunderbird.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png b/skins/blackhole/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png
new file mode 100644
index 0000000..cd7b81c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/VDR neu starten.png b/skins/blackhole/themes/default/menuicons/customicons/VDR neu starten.png
new file mode 100644
index 0000000..14904ca
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/VDR neu starten.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Video.png b/skins/blackhole/themes/default/menuicons/customicons/Video.png
new file mode 100644
index 0000000..490ca4b
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Video.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Web.png b/skins/blackhole/themes/default/menuicons/customicons/Web.png
new file mode 100644
index 0000000..20260e3
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Web.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/XBMC.png b/skins/blackhole/themes/default/menuicons/customicons/XBMC.png
new file mode 100644
index 0000000..c7c4c04
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/XBMC.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/Xterm.png b/skins/blackhole/themes/default/menuicons/customicons/Xterm.png
new file mode 100644
index 0000000..fa75282
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/Xterm.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/audiovideo.png b/skins/blackhole/themes/default/menuicons/customicons/audiovideo.png
new file mode 100644
index 0000000..726538d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/audiovideo.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/markad_status.png b/skins/blackhole/themes/default/menuicons/customicons/markad_status.png
new file mode 100644
index 0000000..4fdc7a4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/markad_status.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/schneiden_abbrechen.png b/skins/blackhole/themes/default/menuicons/customicons/schneiden_abbrechen.png
new file mode 100644
index 0000000..b2e0bd3
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/schneiden_abbrechen.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/tux.png b/skins/blackhole/themes/default/menuicons/customicons/tux.png
new file mode 100644
index 0000000..c5b4742
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/tux.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/usb.png b/skins/blackhole/themes/default/menuicons/customicons/usb.png
new file mode 100644
index 0000000..c4db1d4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/usb.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/vdrlogo.png b/skins/blackhole/themes/default/menuicons/customicons/vdrlogo.png
new file mode 100644
index 0000000..037a191
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/vdrlogo.png differ
diff --git a/skins/blackhole/themes/default/menuicons/customicons/yaicon_blue.png b/skins/blackhole/themes/default/menuicons/customicons/yaicon_blue.png
new file mode 100644
index 0000000..2c49273
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/customicons/yaicon_blue.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/admin.png b/skins/blackhole/themes/default/menuicons/pluginicons/admin.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/admin.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/arghdirector.png b/skins/blackhole/themes/default/menuicons/pluginicons/arghdirector.png
new file mode 100644
index 0000000..bbd221a
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/arghdirector.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/autostart.png b/skins/blackhole/themes/default/menuicons/pluginicons/autostart.png
new file mode 100644
index 0000000..6fdb1bb
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/autostart.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/avahi4vdr.png b/skins/blackhole/themes/default/menuicons/pluginicons/avahi4vdr.png
new file mode 100644
index 0000000..044e71d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/avahi4vdr.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/avards.png b/skins/blackhole/themes/default/menuicons/pluginicons/avards.png
new file mode 100644
index 0000000..cf8d037
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/avards.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/block.png b/skins/blackhole/themes/default/menuicons/pluginicons/block.png
new file mode 100644
index 0000000..86127c2
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/block.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/burn.png b/skins/blackhole/themes/default/menuicons/pluginicons/burn.png
new file mode 100644
index 0000000..305d7ff
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/burn.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/cdplayer.png b/skins/blackhole/themes/default/menuicons/pluginicons/cdplayer.png
new file mode 100644
index 0000000..89a6c19
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/cdplayer.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/chanman.png b/skins/blackhole/themes/default/menuicons/pluginicons/chanman.png
new file mode 100644
index 0000000..a73e83c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/chanman.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/check.png b/skins/blackhole/themes/default/menuicons/pluginicons/check.png
new file mode 100644
index 0000000..d487a24
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/check.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/conflictcheckonly.png b/skins/blackhole/themes/default/menuicons/pluginicons/conflictcheckonly.png
new file mode 100644
index 0000000..7f832bd
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/conflictcheckonly.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/ddci.png b/skins/blackhole/themes/default/menuicons/pluginicons/ddci.png
new file mode 100644
index 0000000..4ad459c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/ddci.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/devstatus.png b/skins/blackhole/themes/default/menuicons/pluginicons/devstatus.png
new file mode 100644
index 0000000..96c0ec1
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/devstatus.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/dummydevice.png b/skins/blackhole/themes/default/menuicons/pluginicons/dummydevice.png
new file mode 100644
index 0000000..11fd707
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/dummydevice.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/duplicates.png b/skins/blackhole/themes/default/menuicons/pluginicons/duplicates.png
new file mode 100644
index 0000000..dc1be57
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/duplicates.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/dvbapi.png b/skins/blackhole/themes/default/menuicons/pluginicons/dvbapi.png
new file mode 100644
index 0000000..b966461
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/dvbapi.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/dvbhddevice.png b/skins/blackhole/themes/default/menuicons/pluginicons/dvbhddevice.png
new file mode 100644
index 0000000..b874297
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/dvbhddevice.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/dvbsddevice.png b/skins/blackhole/themes/default/menuicons/pluginicons/dvbsddevice.png
new file mode 100644
index 0000000..106184e
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/dvbsddevice.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/dynamite.png b/skins/blackhole/themes/default/menuicons/pluginicons/dynamite.png
new file mode 100644
index 0000000..28ea35a
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/dynamite.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/eepg.png b/skins/blackhole/themes/default/menuicons/pluginicons/eepg.png
new file mode 100644
index 0000000..3938b96
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/eepg.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/epg2vdr.png b/skins/blackhole/themes/default/menuicons/pluginicons/epg2vdr.png
new file mode 100644
index 0000000..ac8757e
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/epg2vdr.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/epgsearch.png b/skins/blackhole/themes/default/menuicons/pluginicons/epgsearch.png
new file mode 100644
index 0000000..5eab415
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/epgsearch.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/epgsearchonly.png b/skins/blackhole/themes/default/menuicons/pluginicons/epgsearchonly.png
new file mode 100644
index 0000000..b5186e7
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/epgsearchonly.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/epgsync.png b/skins/blackhole/themes/default/menuicons/pluginicons/epgsync.png
new file mode 100644
index 0000000..5c14009
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/epgsync.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/externalplayer.png b/skins/blackhole/themes/default/menuicons/pluginicons/externalplayer.png
new file mode 100644
index 0000000..2bd67db
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/externalplayer.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/extrecmenu.png b/skins/blackhole/themes/default/menuicons/pluginicons/extrecmenu.png
new file mode 100644
index 0000000..6f613f1
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/extrecmenu.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/favorites.png b/skins/blackhole/themes/default/menuicons/pluginicons/favorites.png
new file mode 100644
index 0000000..409c852
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/favorites.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/femon.png b/skins/blackhole/themes/default/menuicons/pluginicons/femon.png
new file mode 100644
index 0000000..e87b711
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/femon.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/fepg.png b/skins/blackhole/themes/default/menuicons/pluginicons/fepg.png
new file mode 100644
index 0000000..65023ed
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/fepg.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/filebrowser.png b/skins/blackhole/themes/default/menuicons/pluginicons/filebrowser.png
new file mode 100644
index 0000000..d3f90e0
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/filebrowser.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/fritzbox.png b/skins/blackhole/themes/default/menuicons/pluginicons/fritzbox.png
new file mode 100644
index 0000000..7bfc229
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/fritzbox.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/graphlcd.png b/skins/blackhole/themes/default/menuicons/pluginicons/graphlcd.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/graphlcd.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/graphtft.png b/skins/blackhole/themes/default/menuicons/pluginicons/graphtft.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/graphtft.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/image.png b/skins/blackhole/themes/default/menuicons/pluginicons/image.png
new file mode 100644
index 0000000..33644e0
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/image.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/imonlcd.png b/skins/blackhole/themes/default/menuicons/pluginicons/imonlcd.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/imonlcd.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/iptv.png b/skins/blackhole/themes/default/menuicons/pluginicons/iptv.png
new file mode 100644
index 0000000..4494ddc
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/iptv.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/lcdproc.png b/skins/blackhole/themes/default/menuicons/pluginicons/lcdproc.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/lcdproc.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/mailbox.png b/skins/blackhole/themes/default/menuicons/pluginicons/mailbox.png
new file mode 100644
index 0000000..1bc76e8
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/mailbox.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/makemkv.png b/skins/blackhole/themes/default/menuicons/pluginicons/makemkv.png
new file mode 100644
index 0000000..41cddf1
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/makemkv.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/markad.png b/skins/blackhole/themes/default/menuicons/pluginicons/markad.png
new file mode 100644
index 0000000..b3defaf
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/markad.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/mlist.png b/skins/blackhole/themes/default/menuicons/pluginicons/mlist.png
new file mode 100644
index 0000000..19c367f
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/mlist.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/music.png b/skins/blackhole/themes/default/menuicons/pluginicons/music.png
new file mode 100644
index 0000000..abb012e
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/music.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/noepg.png b/skins/blackhole/themes/default/menuicons/pluginicons/noepg.png
new file mode 100644
index 0000000..eb9410d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/noepg.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/nordlichtsepg.png b/skins/blackhole/themes/default/menuicons/pluginicons/nordlichtsepg.png
new file mode 100644
index 0000000..3ee3fa2
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/nordlichtsepg.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/osdteletext.png b/skins/blackhole/themes/default/menuicons/pluginicons/osdteletext.png
new file mode 100644
index 0000000..664e770
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/osdteletext.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/peer.png b/skins/blackhole/themes/default/menuicons/pluginicons/peer.png
new file mode 100644
index 0000000..998d568
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/peer.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/play.png b/skins/blackhole/themes/default/menuicons/pluginicons/play.png
new file mode 100644
index 0000000..2848fc6
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/play.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/pvrinput.png b/skins/blackhole/themes/default/menuicons/pluginicons/pvrinput.png
new file mode 100644
index 0000000..724f698
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/pvrinput.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/quickepgsearch.png b/skins/blackhole/themes/default/menuicons/pluginicons/quickepgsearch.png
new file mode 100644
index 0000000..76a31f4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/quickepgsearch.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/radio.png b/skins/blackhole/themes/default/menuicons/pluginicons/radio.png
new file mode 100644
index 0000000..193b7d4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/radio.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/remote.png b/skins/blackhole/themes/default/menuicons/pluginicons/remote.png
new file mode 100644
index 0000000..7f46b1b
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/remote.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/remotetimers.png b/skins/blackhole/themes/default/menuicons/pluginicons/remotetimers.png
new file mode 100644
index 0000000..fae3b79
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/remotetimers.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/rssreader.png b/skins/blackhole/themes/default/menuicons/pluginicons/rssreader.png
new file mode 100644
index 0000000..db538f0
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/rssreader.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/sc.png b/skins/blackhole/themes/default/menuicons/pluginicons/sc.png
new file mode 100644
index 0000000..2472d6c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/sc.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/scraper2vdr.png b/skins/blackhole/themes/default/menuicons/pluginicons/scraper2vdr.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/scraper2vdr.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/screenshot.png b/skins/blackhole/themes/default/menuicons/pluginicons/screenshot.png
new file mode 100644
index 0000000..be9b4d5
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/screenshot.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/seduatmo.png b/skins/blackhole/themes/default/menuicons/pluginicons/seduatmo.png
new file mode 100644
index 0000000..4b5292f
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/seduatmo.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/skyselectfeeds.png b/skins/blackhole/themes/default/menuicons/pluginicons/skyselectfeeds.png
new file mode 100644
index 0000000..d81a024
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/skyselectfeeds.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/sleeptimer.png b/skins/blackhole/themes/default/menuicons/pluginicons/sleeptimer.png
new file mode 100644
index 0000000..cd4956f
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/sleeptimer.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/softhddevice.png b/skins/blackhole/themes/default/menuicons/pluginicons/softhddevice.png
new file mode 100644
index 0000000..df13f2c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/softhddevice.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/streamdev-server.png b/skins/blackhole/themes/default/menuicons/pluginicons/streamdev-server.png
new file mode 100644
index 0000000..e89ed8b
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/streamdev-server.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/systeminfo.png b/skins/blackhole/themes/default/menuicons/pluginicons/systeminfo.png
new file mode 100644
index 0000000..b14763f
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/systeminfo.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/targavfd.png b/skins/blackhole/themes/default/menuicons/pluginicons/targavfd.png
new file mode 100644
index 0000000..e91b111
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/targavfd.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/trayopenng.png b/skins/blackhole/themes/default/menuicons/pluginicons/trayopenng.png
new file mode 100644
index 0000000..6ebd17d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/trayopenng.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/tvguide.png b/skins/blackhole/themes/default/menuicons/pluginicons/tvguide.png
new file mode 100644
index 0000000..968a37c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/tvguide.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/tvm2vdr.png b/skins/blackhole/themes/default/menuicons/pluginicons/tvm2vdr.png
new file mode 100644
index 0000000..47f9a91
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/tvm2vdr.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/tvscraper.png b/skins/blackhole/themes/default/menuicons/pluginicons/tvscraper.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/tvscraper.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/undelete.png b/skins/blackhole/themes/default/menuicons/pluginicons/undelete.png
new file mode 100644
index 0000000..a53d50a
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/undelete.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/weatherforecast.png b/skins/blackhole/themes/default/menuicons/pluginicons/weatherforecast.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/weatherforecast.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/weatherng.png b/skins/blackhole/themes/default/menuicons/pluginicons/weatherng.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/weatherng.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/xmltv2vdr.png b/skins/blackhole/themes/default/menuicons/pluginicons/xmltv2vdr.png
new file mode 100644
index 0000000..ea73c74
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/xmltv2vdr.png differ
diff --git a/skins/blackhole/themes/default/menuicons/pluginicons/yaepghg.png b/skins/blackhole/themes/default/menuicons/pluginicons/yaepghg.png
new file mode 100644
index 0000000..53ce443
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/pluginicons/yaepghg.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/CAM.png b/skins/blackhole/themes/default/menuicons/standardicons/CAM.png
new file mode 100644
index 0000000..a394877
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/CAM.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Channels.png b/skins/blackhole/themes/default/menuicons/standardicons/Channels.png
new file mode 100644
index 0000000..ba2ba78
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Channels.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Commands.png b/skins/blackhole/themes/default/menuicons/standardicons/Commands.png
new file mode 100644
index 0000000..c6a83ef
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Commands.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/DVB.png b/skins/blackhole/themes/default/menuicons/standardicons/DVB.png
new file mode 100644
index 0000000..3789145
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/DVB.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/EPG.png b/skins/blackhole/themes/default/menuicons/standardicons/EPG.png
new file mode 100644
index 0000000..e868b90
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/EPG.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/LNB.png b/skins/blackhole/themes/default/menuicons/standardicons/LNB.png
new file mode 100644
index 0000000..896dd99
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/LNB.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Miscellaneous.png b/skins/blackhole/themes/default/menuicons/standardicons/Miscellaneous.png
new file mode 100644
index 0000000..2a41c4d
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Miscellaneous.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/OSD.png b/skins/blackhole/themes/default/menuicons/standardicons/OSD.png
new file mode 100644
index 0000000..8f571c6
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/OSD.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Plugins.png b/skins/blackhole/themes/default/menuicons/standardicons/Plugins.png
new file mode 100644
index 0000000..3fcba70
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Plugins.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Recording.png b/skins/blackhole/themes/default/menuicons/standardicons/Recording.png
new file mode 100644
index 0000000..741b1af
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Recording.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Recordings.png b/skins/blackhole/themes/default/menuicons/standardicons/Recordings.png
new file mode 100644
index 0000000..79aeeb7
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Recordings.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Replay.png b/skins/blackhole/themes/default/menuicons/standardicons/Replay.png
new file mode 100644
index 0000000..621596c
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Replay.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Restart.png b/skins/blackhole/themes/default/menuicons/standardicons/Restart.png
new file mode 100644
index 0000000..aa23cd4
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Restart.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Schedule.png b/skins/blackhole/themes/default/menuicons/standardicons/Schedule.png
new file mode 100644
index 0000000..3a98cac
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Schedule.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Setup.png b/skins/blackhole/themes/default/menuicons/standardicons/Setup.png
new file mode 100644
index 0000000..d121148
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Setup.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/StopRecording.png b/skins/blackhole/themes/default/menuicons/standardicons/StopRecording.png
new file mode 100644
index 0000000..ed83fbb
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/StopRecording.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/StopReplay.png b/skins/blackhole/themes/default/menuicons/standardicons/StopReplay.png
new file mode 100644
index 0000000..9192760
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/StopReplay.png differ
diff --git a/skins/blackhole/themes/default/menuicons/standardicons/Timers.png b/skins/blackhole/themes/default/menuicons/standardicons/Timers.png
new file mode 100644
index 0000000..b866c36
Binary files /dev/null and b/skins/blackhole/themes/default/menuicons/standardicons/Timers.png differ
diff --git a/skins/blackhole/themes/default/skinparts/buttonblue.svg b/skins/blackhole/themes/default/skinparts/buttonblue.svg
new file mode 100644
index 0000000..fd3724f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/buttonblue.svg
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="400"
+   height="70"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 399.99999 70.000001"
+   sodipodi:docname="buttonblue.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4180">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop4182" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop4184" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4189"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4158"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4162"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1046.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4180"
+       id="linearGradient4222"
+       gradientUnits="userSpaceOnUse"
+       x1="210.71375"
+       y1="901.98651"
+       x2="199.81989"
+       y2="1036.3486" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.7722603"
+     inkscape:cx="46.297009"
+     inkscape:cy="37"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4206"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-982.3622)"
+     id="g4206"
+     inkscape:groupmode="layer"
+     inkscape:label="Blau"
+     style="display:inline">
+    <g
+       id="g4640">
+      <rect
+         style="opacity:1;fill:#0044aa;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4208"
+         width="400"
+         height="69.999992"
+         x="-2.857143e-006"
+         y="982.36218"
+         ry="0.42781609" />
+      <path
+         style="opacity:1;fill:#002255;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+         d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+         id="path4210"
+         inkscape:connector-curvature="0"
+         transform="matrix(0.97355433,0,0,1.0027745,1.2811918,-2.8409497)" />
+      <path
+         style="opacity:1;fill:url(#linearGradient4222);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+         d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+         id="path4212"
+         inkscape:connector-curvature="0"
+         transform="matrix(0.97441791,0,0,0.93341814,6.350042,68.54286)" />
+      <rect
+         style="opacity:1;fill:url(#radialGradient4189);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4214"
+         width="400"
+         height="2"
+         x="-2.857143e-006"
+         y="982.36218"
+         ry="0.427816" />
+      <rect
+         ry="0.427816"
+         y="1052.3622"
+         x="-2.857143e-006"
+         height="2"
+         width="400"
+         id="rect4216"
+         style="opacity:1;fill:url(#radialGradient4193);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:url(#radialGradient4158);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4218"
+         width="400"
+         height="1.9999976"
+         x="-2.857143e-006"
+         y="982.36218"
+         ry="0.023262138" />
+      <rect
+         ry="0.023262138"
+         y="1050.3622"
+         x="-2.857143e-006"
+         height="1.9999976"
+         width="400"
+         id="rect4220"
+         style="opacity:1;fill:url(#radialGradient4162);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/buttongreen.svg b/skins/blackhole/themes/default/skinparts/buttongreen.svg
new file mode 100644
index 0000000..02746ff
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/buttongreen.svg
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="400"
+   height="70"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 399.99999 70.000001"
+   sodipodi:docname="buttongreen.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4173">
+      <stop
+         style="stop-color:#ced659;stop-opacity:1;"
+         offset="0"
+         id="stop4175" />
+      <stop
+         style="stop-color:#ced659;stop-opacity:0;"
+         offset="1"
+         id="stop4177" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4173"
+       id="linearGradient4179"
+       x1="186.87177"
+       y1="-76.304359"
+       x2="168.72545"
+       y2="50.159344"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1.3456955,985.50214)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4385"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4387"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4391"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1046.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.7722603"
+     inkscape:cx="46.297009"
+     inkscape:cy="37"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Grün"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-982.3622)"
+     style="display:inline">
+    <g
+       id="g4400"
+       transform="translate(0.17733523,0)">
+      <rect
+         ry="0.42781609"
+         y="982.36218"
+         x="-2.857143e-006"
+         height="69.999992"
+         width="400"
+         id="rect4137"
+         style="opacity:1;fill:#008000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         transform="matrix(0.97355433,0,0,1.0027745,1.2811918,-2.8409497)"
+         inkscape:connector-curvature="0"
+         id="path4139"
+         d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+         style="opacity:1;fill:#036403;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+      <path
+         transform="matrix(0.97441791,0,0,0.93341814,6.350042,68.54286)"
+         inkscape:connector-curvature="0"
+         id="path4154"
+         d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+         style="opacity:1;fill:url(#linearGradient4179);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+      <rect
+         ry="0.427816"
+         y="982.36218"
+         x="-2.857143e-006"
+         height="2"
+         width="400"
+         id="rect4181"
+         style="opacity:1;fill:url(#radialGradient4385);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:url(#radialGradient4387);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4191"
+         width="400"
+         height="2"
+         x="-2.857143e-006"
+         y="1052.3622"
+         ry="0.427816" />
+      <rect
+         ry="0.023262138"
+         y="982.36218"
+         x="-2.857143e-006"
+         height="1.9999976"
+         width="400"
+         id="rect4150"
+         style="opacity:1;fill:url(#radialGradient4389);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:url(#radialGradient4391);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4160"
+         width="400"
+         height="1.9999976"
+         x="-2.857143e-006"
+         y="1050.3622"
+         ry="0.023262138" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/buttonred.svg b/skins/blackhole/themes/default/skinparts/buttonred.svg
new file mode 100644
index 0000000..1f1b756
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/buttonred.svg
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="400"
+   height="70"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 399.99999 70.000001"
+   sodipodi:docname="buttonred.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4180">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop4182" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop4184" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4189"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200"
+       gradientTransform="matrix(1,0,0,0.00500002,0.17733523,978.44535)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0.17733523,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4158"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200"
+       gradientTransform="matrix(1,0,0,0.00500002,0.17733523,978.44535)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4162"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0.17733523,1046.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4180"
+       id="linearGradient4186"
+       x1="210.71375"
+       y1="901.98651"
+       x2="199.81989"
+       y2="1036.3486"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.7722603"
+     inkscape:cx="122.11533"
+     inkscape:cy="37"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4164"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-982.3622)"
+     id="g4164"
+     inkscape:groupmode="layer"
+     inkscape:label="Rot"
+     style="display:inline">
+    <rect
+       ry="0.42781609"
+       y="982.36218"
+       x="0.17733237"
+       height="69.999992"
+       width="400"
+       id="rect4166"
+       style="opacity:1;fill:#aa0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       transform="matrix(0.97355433,0,0,1.0027745,1.458527,-2.8409497)"
+       inkscape:connector-curvature="0"
+       id="path4168"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       style="opacity:1;fill:#550000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <path
+       transform="matrix(0.97441791,0,0,0.93341814,6.5273772,68.54286)"
+       inkscape:connector-curvature="0"
+       id="path4170"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       style="opacity:1;fill:url(#linearGradient4186);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <rect
+       ry="0.427816"
+       y="982.36218"
+       x="0.17733237"
+       height="2"
+       width="400"
+       id="rect4172"
+       style="opacity:1;fill:url(#radialGradient4189);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4193);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4174"
+       width="400"
+       height="2"
+       x="0.17733237"
+       y="1052.3622"
+       ry="0.427816" />
+    <rect
+       ry="0.023262138"
+       y="982.36218"
+       x="0.17733237"
+       height="1.9999976"
+       width="400"
+       id="rect4176"
+       style="opacity:1;fill:url(#radialGradient4158);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4162);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4178"
+       width="400"
+       height="1.9999976"
+       x="0.17733237"
+       y="1050.3622"
+       ry="0.023262138" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/buttonyellow.svg b/skins/blackhole/themes/default/skinparts/buttonyellow.svg
new file mode 100644
index 0000000..063b113
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/buttonyellow.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="400"
+   height="70"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 399.99999 70.000001"
+   sodipodi:docname="buttonyellow.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="linearGradient4204"
+       gradientUnits="userSpaceOnUse"
+       x1="210.71375"
+       y1="901.98651"
+       x2="200.39896"
+       y2="1020.6317" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4567"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4569"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,978.44535)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4571"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1046.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.7722603"
+     inkscape:cx="139.77115"
+     inkscape:cy="37"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4188"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     style="display:inline"
+     inkscape:label="Gelb"
+     inkscape:groupmode="layer"
+     id="g4188"
+     transform="translate(0,-982.3622)">
+    <rect
+       style="opacity:1;fill:#806600;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4190"
+       width="400"
+       height="69.999992"
+       x="-2.857143e-006"
+       y="982.36218"
+       ry="0.42781609" />
+    <path
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       id="path4192"
+       inkscape:connector-curvature="0"
+       transform="matrix(0.97355433,0,0,1.0027745,1.2811918,-0.58394479)" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4565);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4196"
+       width="400"
+       height="2"
+       x="-2.857143e-006"
+       y="982.36218"
+       ry="0.427816" />
+    <rect
+       ry="0.427816"
+       y="1052.3622"
+       x="-2.857143e-006"
+       height="2"
+       width="400"
+       id="rect4198"
+       style="opacity:1;fill:url(#radialGradient4567);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4569);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4200"
+       width="400"
+       height="1.9999976"
+       x="-2.857143e-006"
+       y="982.36218"
+       ry="0.023262138" />
+    <rect
+       ry="0.023262138"
+       y="1050.3622"
+       x="-2.857143e-006"
+       height="1.9999976"
+       width="400"
+       id="rect4202"
+       style="opacity:1;fill:url(#radialGradient4571);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="opacity:1;fill:url(#linearGradient4204);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       id="path4194"
+       inkscape:connector-curvature="0"
+       transform="matrix(0.97441791,0,0,0.93341814,5.2215394,66.285855)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaychannelback.svg b/skins/blackhole/themes/default/skinparts/displaychannelback.svg
new file mode 100644
index 0000000..8a8d8a9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaychannelback.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1920"
+   height="324"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1920 324"
+   sodipodi:docname="displaychannelback.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.77683186"
+     inkscape:cx="502.7572"
+     inkscape:cy="210.50666"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Background"
+     style="display:inline"
+     transform="translate(0,-756)">
+    <path
+       style="fill:#000000;fill-opacity:0.7254902;fill-rule:evenodd;stroke:#000000;stroke-width:1.00440681px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0.5022034,1079.4978 0,-322.99561 199.8953666,0 c 1.61847,29.93978 18.19235,46.83581 49.97385,50.46807 l 949.50298,0 c 28.354,-2.64869 48.9217,-14.73328 49.9739,-50.46807 l 669.6495,0 0,322.99561 z"
+       id="path4162"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaychannelbackepg.svg b/skins/blackhole/themes/default/skinparts/displaychannelbackepg.svg
new file mode 100644
index 0000000..5803fdb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaychannelbackepg.svg
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1280"
+   height="130"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1280 130"
+   sodipodi:docname="displaychannelbackepg.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4794">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4796" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4798" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4778">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4780" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4782" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4759">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop4761" />
+      <stop
+         style="stop-color:#00284a;stop-opacity:0;"
+         offset="1"
+         id="stop4763" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4759"
+       id="linearGradient4766"
+       x1="935.20227"
+       y1="896.86908"
+       x2="935.20227"
+       y2="991.521"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0017221,0,0,1.0190265,-325.66949,54.937088)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4778"
+       id="radialGradient4786"
+       cx="965"
+       cy="876"
+       fx="965"
+       fy="876"
+       r="640"
+       gradientTransform="matrix(1,0,0,0.0015625,-324.99999,949.63124)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4778"
+       id="radialGradient4790"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.0015625,-324.99999,1077.6312)"
+       cx="965"
+       cy="876"
+       fx="965"
+       fy="876"
+       r="640" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4794"
+       id="radialGradient4800"
+       cx="326"
+       cy="940"
+       fx="326"
+       fy="940"
+       r="0.9999997"
+       gradientTransform="matrix(1.0000003,0,0,65.000017,-325.00009,-60085.016)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4794"
+       id="radialGradient4800-0"
+       cx="326"
+       cy="940"
+       fx="326"
+       fy="940"
+       r="0.9999997"
+       gradientTransform="matrix(0.9999995,0,0,65.000016,953.00041,-60085.015)"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:label="Black Hole"
+       inkscape:menu="Morphology"
+       inkscape:menu-tooltip="Creates a black light inside and outside"
+       height="1.5"
+       width="1.5"
+       y="-0.25"
+       x="-0.25"
+       style="color-interpolation-filters:sRGB"
+       id="filter4448">
+      <feGaussianBlur
+         stdDeviation="5"
+         in="SourceAlpha"
+         result="result1"
+         id="feGaussianBlur4450" />
+      <feComposite
+         operator="arithmetic"
+         k2="3.2"
+         k1="-1"
+         k4="-2"
+         result="result3"
+         in2="result1"
+         id="feComposite4452"
+         k3="0" />
+      <feColorMatrix
+         values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 10 0 "
+         result="result2"
+         id="feColorMatrix4454" />
+      <feComposite
+         result="fbSourceGraphic"
+         in="SourceGraphic"
+         operator="out"
+         in2="result2"
+         id="feComposite4456" />
+      <feBlend
+         mode="multiply"
+         in="result1"
+         in2="fbSourceGraphic"
+         result="result91"
+         id="feBlend4458" />
+      <feBlend
+         mode="screen"
+         in="fbSourceGraphic"
+         in2="result91"
+         id="feBlend4460" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4759"
+       id="linearGradient4232"
+       x1="8.9874849"
+       y1="1027.2526"
+       x2="50.451012"
+       y2="1027.2526"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4759"
+       id="linearGradient4240"
+       x1="8.9874849"
+       y1="1027.2526"
+       x2="50.451012"
+       y2="1027.2526"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4759"
+       id="linearGradient4309"
+       x1="68.407776"
+       y1="985.8446"
+       x2="34.716022"
+       y2="1026.4244"
+       gradientUnits="userSpaceOnUse" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <filter
+       style="color-interpolation-filters:sRGB"
+       id="filter7120">
+      <feGaussianBlur
+         stdDeviation="3.92425"
+         id="feGaussianBlur12" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.64122727"
+     inkscape:cx="587.59957"
+     inkscape:cy="32.802006"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="EPG"
+     transform="translate(0,-950)">
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4736"
+       width="1280"
+       height="129.99998"
+       x="5.0516455e-006"
+       y="950"
+       ry="0.35725296" />
+    <rect
+       ry="0.35725296"
+       y="950"
+       x="4.9999999e-006"
+       height="129.99998"
+       width="1280"
+       id="rect4749"
+       style="opacity:1;fill:url(#linearGradient4766);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4786);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4768"
+       width="1280"
+       height="1.9999907"
+       x="4.9999999e-006"
+       y="950"
+       ry="0.30650064" />
+    <rect
+       ry="0.30650064"
+       y="1078"
+       x="4.9999999e-006"
+       height="1.9999907"
+       width="1280"
+       id="rect4788"
+       style="opacity:1;fill:url(#radialGradient4790);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4800);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4792"
+       width="1.99999"
+       height="129.99998"
+       x="5.0000008e-006"
+       y="950"
+       ry="0.3036862" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4800-0);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4792-6"
+       width="1.9999883"
+       height="129.99998"
+       x="1278"
+       y="950"
+       ry="0.3036862" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaychannellogoback.svg b/skins/blackhole/themes/default/skinparts/displaychannellogoback.svg
new file mode 100644
index 0000000..02eca0f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaychannellogoback.svg
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="200"
+   viewBox="0 0 299.99998 200"
+   id="svg3615"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   sodipodi:docname="displaychannellogoback.svg">
+  <defs
+     id="defs3617">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4451">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4453" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4455" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4437">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4439" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4441" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4425">
+      <stop
+         style="stop-color:#333333;stop-opacity:1;"
+         offset="0"
+         id="stop4427" />
+      <stop
+         style="stop-color:#444444;stop-opacity:1"
+         offset="1"
+         id="stop4429" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4425"
+       id="linearGradient4431"
+       x1="10.741395"
+       y1="1047.0458"
+       x2="296.81735"
+       y2="858.87219"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4437"
+       id="radialGradient4443"
+       cx="0.99998474"
+       cy="952.36224"
+       fx="0.99998474"
+       fy="952.36224"
+       r="0.99999934"
+       gradientTransform="matrix(1,0,0,100.00006,0,-94283.922)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4437"
+       id="radialGradient4447"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,100.00006,298,-94283.922)"
+       cx="0.99998474"
+       cy="952.36224"
+       fx="0.99998474"
+       fy="952.36224"
+       r="0.99999934" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4451"
+       id="radialGradient4457"
+       cx="149.99999"
+       cy="853.36224"
+       fx="149.99999"
+       fy="853.36224"
+       r="150"
+       gradientTransform="matrix(1,0,0,0.00666668,0,847.67315)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4451"
+       id="radialGradient4461"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00666668,0,1045.6732)"
+       cx="149.99999"
+       cy="853.36224"
+       fx="149.99999"
+       fy="853.36224"
+       r="150" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.5136364"
+     inkscape:cx="161.76342"
+     inkscape:cy="98.571429"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3620">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-852.36225)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient4431);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3623"
+       width="300"
+       height="199.99998"
+       x="-1.021635e-005"
+       y="852.36224" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4443);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4435"
+       width="1.9999887"
+       height="199.99998"
+       x="-9.5986316e-006"
+       y="852.36224" />
+    <rect
+       y="852.36224"
+       x="298"
+       height="199.99998"
+       width="1.9999887"
+       id="rect4445"
+       style="opacity:1;fill:url(#radialGradient4447);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4457);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4449"
+       width="300"
+       height="1.999995"
+       x="-1.2490499e-005"
+       y="852.36224" />
+    <rect
+       y="1050.3623"
+       x="-1.2490499e-005"
+       height="1.999995"
+       width="300"
+       id="rect4459"
+       style="opacity:1;fill:url(#radialGradient4461);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymendetailback.svg b/skins/blackhole/themes/default/skinparts/displaymendetailback.svg
new file mode 100644
index 0000000..1f2f89a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymendetailback.svg
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1000"
+   height="800"
+   id="svg4671"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1000 800.00002"
+   sodipodi:docname="displaymendetailback.svg">
+  <defs
+     id="defs4673">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5269">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop5271" />
+      <stop
+         style="stop-color:#333333;stop-opacity:1"
+         offset="1"
+         id="stop5273" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5257">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5259" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5261" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5223">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5225" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5227" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5223"
+       id="radialGradient5229"
+       cx="0.99998975"
+       cy="862.36218"
+       fx="0.99998975"
+       fy="862.36218"
+       r="1"
+       gradientTransform="matrix(1.5,0,0,400.00001,5.1315787e-6,-344292.51)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5223"
+       id="radialGradient5229-7"
+       cx="0.99998975"
+       cy="862.36218"
+       fx="0.99998975"
+       fy="862.36218"
+       r="1"
+       gradientTransform="matrix(1.5,0,0,400.00001,998.00004,-344292.51)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5257"
+       id="radialGradient5263"
+       cx="390"
+       cy="673.86218"
+       fx="390"
+       fy="673.86218"
+       r="390"
+       gradientTransform="matrix(1.2820513,0,0,0.00384615,2.8947368e-6,251.2704)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5257"
+       id="radialGradient5267"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2820513,0,0,0.00384615,2.8947368e-6,1048.2704)"
+       cx="390"
+       cy="673.86218"
+       fx="390"
+       fy="673.86218"
+       r="390" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5269"
+       id="linearGradient5275"
+       x1="6.5118446"
+       y1="1046.8645"
+       x2="777.75482"
+       y2="676.42383"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2820513,0,0,2.1052632,2.8947368e-6,-1163.1372)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.97728979"
+     inkscape:cx="413.30878"
+     inkscape:cy="369.35647"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-252.36218)"
+     style="display:inline">
+    <rect
+       style="fill:url(#linearGradient5275);fill-opacity:1"
+       id="rect5219"
+       width="1000"
+       height="800"
+       x="-1.0263157e-005"
+       y="252.36217"
+       ry="0.84846574" />
+    <rect
+       style="fill:url(#radialGradient5229);fill-opacity:1"
+       id="rect5221"
+       width="3"
+       height="800"
+       x="-1.0263157e-005"
+       y="252.36217"
+       ry="0.86613488" />
+    <rect
+       style="fill:url(#radialGradient5229-7);fill-opacity:1"
+       id="rect5221-0"
+       width="3"
+       height="800"
+       x="998"
+       y="252.36217"
+       ry="0.86613488" />
+    <rect
+       style="fill:url(#radialGradient5263);fill-opacity:1"
+       id="rect5255"
+       width="1000"
+       height="3"
+       x="-1.0263157e-005"
+       y="252.36218"
+       ry="0.17231601" />
+    <rect
+       ry="0.17231601"
+       y="1049.3622"
+       x="-1.0263157e-005"
+       height="3"
+       width="1000"
+       id="rect5265"
+       style="fill:url(#radialGradient5267);fill-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymenuback.svg b/skins/blackhole/themes/default/skinparts/displaymenuback.svg
new file mode 100644
index 0000000..5f3f51a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymenuback.svg
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1920"
+   height="1080"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1920 1080"
+   sodipodi:docname="displaymenuback.svg"
+   enable-background="new">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5387"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5389"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Tail"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <g
+         id="g4825"
+         transform="scale(-1.2)"
+         style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
+        <path
+           id="path4827"
+           d="M -3.8048674,-3.9585227 L 0.54352094,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4829"
+           d="M -1.2866832,-3.9585227 L 3.0617053,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4831"
+           d="M 1.3053582,-3.9585227 L 5.6537466,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4833"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4835"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4837"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Sstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4819"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.3) translate(-2.3,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4810"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5075"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5077"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4807"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4789"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4450">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4452" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4454" />
+    </linearGradient>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1LendR3T"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendR3T">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path6619" />
+    </marker>
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-8" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-0" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4450"
+       id="linearGradient4318"
+       x1="1118"
+       y1="1056.3619"
+       x2="1810"
+       y2="-437.638"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.5"
+     inkscape:cx="779.50211"
+     inkscape:cy="739.63369"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Background"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,27.638004)"
+     style="display:inline">
+    <rect
+       style="fill:url(#linearGradient4318);fill-opacity:1"
+       id="rect4310"
+       width="1920"
+       height="1080"
+       x="0"
+       y="-27.638004"
+       ry="0.24633798" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymenubacktv.svg b/skins/blackhole/themes/default/skinparts/displaymenubacktv.svg
new file mode 100644
index 0000000..d205062
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymenubacktv.svg
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1920"
+   height="1080"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1920 1080"
+   sodipodi:docname="displaymenubacktv.svg"
+   enable-background="new">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5387"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5389"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Tail"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <g
+         id="g4825"
+         transform="scale(-1.2)"
+         style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
+        <path
+           id="path4827"
+           d="M -3.8048674,-3.9585227 L 0.54352094,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4829"
+           d="M -1.2866832,-3.9585227 L 3.0617053,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4831"
+           d="M 1.3053582,-3.9585227 L 5.6537466,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4833"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4835"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4837"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Sstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4819"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.3) translate(-2.3,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4810"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5075"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5077"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4807"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4789"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4540">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4542" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4544" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4466">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4468" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4470" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4450">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4452" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4454" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4450"
+       id="linearGradient4460"
+       x1="1176.0457"
+       y1="1054.5479"
+       x2="1823.0875"
+       y2="-448.90463"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,27.638004)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4466"
+       id="radialGradient4472"
+       cx="1103.0937"
+       cy="371.64835"
+       fx="1103.0937"
+       fy="371.64835"
+       r="3.5686478"
+       gradientTransform="matrix(0.86165038,0,0,58.870242,102.51887,-21588.737)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4466"
+       id="radialGradient4472-1"
+       cx="1103.0938"
+       cy="371.64835"
+       fx="1103.0938"
+       fy="371.64835"
+       r="3.5686479"
+       gradientTransform="matrix(1,0,0,58.870242,724.38795,-21585.884)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4540"
+       id="radialGradient4546"
+       cx="1466.9981"
+       cy="141.71147"
+       fx="1466.9981"
+       fy="141.71147"
+       r="355.26972"
+       gradientTransform="matrix(1.0808689,0,0,0.01088437,-145.63269,74.952665)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4540"
+       id="radialGradient4546-4"
+       cx="1466.998"
+       cy="141.71147"
+       fx="1466.998"
+       fy="141.71147"
+       r="355.26971"
+       gradientTransform="matrix(1.0808689,0,0,0.01088437,-145.63275,512.95268)"
+       gradientUnits="userSpaceOnUse" />
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1LendR3T"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendR3T">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path6619" />
+    </marker>
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-8" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-0" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.5"
+     inkscape:cx="779.50211"
+     inkscape:cy="739.63369"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Background"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,27.638004)"
+     style="display:inline">
+    <path
+       style="opacity:1;fill:url(#linearGradient4460);fill-opacity:1;stroke:#000000;stroke-width:2.00882554;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 1.265625 1.0039062 C 1.1210041 1.0039062 1.0039062 1.1210041 1.0039062 1.265625 L 1.0039062 1078.7344 C 1.0039062 1078.879 1.1210041 1078.9961 1.265625 1078.9961 L 1918.7344 1078.9961 C 1918.879 1078.9961 1918.9961 1078.879 1918.9961 1078.7344 L 1918.9961 1.265625 C 1918.9961 1.1210041 1918.879 1.0039062 1918.7344 1.0039062 L 1.265625 1.0039062 z M 1056.2441 108 L 1823.7559 108 C 1823.8908 108 1824 108.1092 1824 108.24414 L 1824 539.75586 C 1824 539.8908 1823.8908 540 1823.75 [...]
+       id="rect4137"
+       transform="translate(0,-27.638004)" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4546-4);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4498-7"
+       width="768"
+       height="7.7337637"
+       x="1056"
+       y="510.62823"
+       ry="0.13052402" />
+    <rect
+       style="display:inline;opacity:1;fill:url(#radialGradient4546);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4498"
+       width="768"
+       height="7.7337637"
+       x="1056"
+       y="72.628227"
+       ry="0.13052402" />
+    <rect
+       style="display:inline;opacity:1;fill:url(#radialGradient4472-1);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4462-2"
+       width="6.9633703"
+       height="420"
+       x="1824"
+       y="83.144279"
+       ry="0.2262664" />
+    <rect
+       style="display:inline;opacity:1;fill:url(#radialGradient4472);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4462"
+       width="5.9999909"
+       height="420"
+       x="1050"
+       y="80.291176"
+       ry="0.2262664" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymenucorner.svg b/skins/blackhole/themes/default/skinparts/displaymenucorner.svg
new file mode 100644
index 0000000..68f9285
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymenucorner.svg
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="500"
+   height="500"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 500 500"
+   sodipodi:docname="displaymenucorner.svg"
+   style="enable-background:new">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5387"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5389"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Tail"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <g
+         id="g4825"
+         transform="scale(-1.2,-1.2)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
+        <path
+           id="path4827"
+           d="M -3.8048674,-3.9585227 0.54352094,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4829"
+           d="M -1.2866832,-3.9585227 3.0617053,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4831"
+           d="M 1.3053582,-3.9585227 5.6537466,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4833"
+           d="M -3.8048674,4.1775838 0.54352094,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4835"
+           d="M -1.2866832,4.1775838 3.0617053,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4837"
+           d="M 1.3053582,4.1775838 5.6537466,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Sstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Sstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4819"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(0.3,0,0,0.3,-0.69,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4810"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5075"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5077"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4807"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4789"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4429">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1"
+         offset="0"
+         id="stop4431" />
+      <stop
+         style="stop-color:#0000ff;stop-opacity:0;"
+         offset="1"
+         id="stop4433" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4429"
+       id="linearGradient4435"
+       x1="1558.0786"
+       y1="1.9836823"
+       x2="2120.9976"
+       y2="490.82275"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1433.282,587.62747)" />
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1LendR3T"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendR3T">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path6619" />
+    </marker>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter5290"
+       x="-0.012"
+       width="1.024"
+       y="-0.012"
+       height="1.024">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.431137"
+         id="feGaussianBlur5292" />
+    </filter>
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-8" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-0" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.0180958"
+     inkscape:cx="269.48002"
+     inkscape:cy="152.49644"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Uhr"
+     style="display:inline"
+     transform="translate(0,-580)">
+    <path
+       style="fill:url(#linearGradient4435);fill-opacity:1;fill-rule:evenodd;stroke:#ececec;stroke-width:1.62075794px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5290)"
+       d="m 5.8347289,587.93785 486.2274011,0 0,486.22735 C 359.62163,808.36538 189.20953,675.46709 5.8347289,587.93785 Z"
+       id="path4142"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc"
+       transform="matrix(1.0042232,0,0,1.0042755,8.804664,-12.51067)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymenucurrentback.svg b/skins/blackhole/themes/default/skinparts/displaymenucurrentback.svg
new file mode 100644
index 0000000..a22368b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymenucurrentback.svg
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="780"
+   height="380"
+   id="svg4671"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 780 380.00001"
+   sodipodi:docname="displaymenucurrentback.svg">
+  <defs
+     id="defs4673">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5269">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop5271" />
+      <stop
+         style="stop-color:#555555;stop-opacity:1"
+         offset="1"
+         id="stop5273" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5257">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5259" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5261" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5223">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5225" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5227" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5223"
+       id="radialGradient5229"
+       cx="0.99998974"
+       cy="862.36218"
+       fx="0.99998974"
+       fy="862.36218"
+       r="1"
+       gradientTransform="matrix(1.5,0,0,190,5.1315787e-6,-162986.45)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5223"
+       id="radialGradient5229-7"
+       cx="0.99998975"
+       cy="862.36218"
+       fx="0.99998975"
+       fy="862.36218"
+       r="1"
+       gradientTransform="matrix(1.5,0,0,190,777.00003,-162986.45)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5257"
+       id="radialGradient5263"
+       cx="389.99999"
+       cy="673.86218"
+       fx="389.99999"
+       fy="673.86218"
+       r="390"
+       gradientTransform="matrix(1,0,0,0.00384615,0,671.2704)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5257"
+       id="radialGradient5267"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00384615,0,1048.2704)"
+       cx="389.99999"
+       cy="673.86218"
+       fx="389.99999"
+       fy="673.86218"
+       r="390" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5269"
+       id="linearGradient5275"
+       x1="6.5118446"
+       y1="1046.8645"
+       x2="778.55292"
+       y2="674.9657"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.3820965"
+     inkscape:cx="410.76441"
+     inkscape:cy="163.98606"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-672.36219)">
+    <rect
+       style="fill:url(#linearGradient5275);fill-opacity:1"
+       id="rect5219"
+       width="780"
+       height="380"
+       x="-1.0263157e-005"
+       y="672.36218"
+       ry="0.40302122" />
+    <rect
+       style="fill:url(#radialGradient5229);fill-opacity:1"
+       id="rect5221"
+       width="3"
+       height="380"
+       x="-1.0263157e-005"
+       y="672.36218"
+       ry="0.41141406" />
+    <rect
+       style="fill:url(#radialGradient5229-7);fill-opacity:1"
+       id="rect5221-0"
+       width="3"
+       height="380"
+       x="777"
+       y="672.36218"
+       ry="0.41141406" />
+    <rect
+       style="fill:url(#radialGradient5263);fill-opacity:1"
+       id="rect5255"
+       width="780"
+       height="3"
+       x="-1.0263157e-005"
+       y="672.36218"
+       ry="0.17231601" />
+    <rect
+       ry="0.17231601"
+       y="1049.3622"
+       x="-1.0263157e-005"
+       height="3"
+       width="780"
+       id="rect5265"
+       style="fill:url(#radialGradient5267);fill-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displaymenuheader.svg b/skins/blackhole/themes/default/skinparts/displaymenuheader.svg
new file mode 100644
index 0000000..4945e5d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displaymenuheader.svg
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1600"
+   height="90"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1600 90"
+   sodipodi:docname="displaymenuheader.svg"
+   style="enable-background:new">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5254">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop5256" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop5258" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5387"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5389"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Tail"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <g
+         id="g4825"
+         transform="scale(-1.2,-1.2)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
+        <path
+           id="path4827"
+           d="M -3.8048674,-3.9585227 0.54352094,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4829"
+           d="M -1.2866832,-3.9585227 3.0617053,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4831"
+           d="M 1.3053582,-3.9585227 5.6537466,0"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4833"
+           d="M -3.8048674,4.1775838 0.54352094,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4835"
+           d="M -1.2866832,4.1775838 3.0617053,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4837"
+           d="M 1.3053582,4.1775838 5.6537466,0.21974226"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Sstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Sstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4819"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(0.3,0,0,0.3,-0.69,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4810"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5075"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5077"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4807"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4789"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4616">
+      <stop
+         style="stop-color:#999999;stop-opacity:1;"
+         offset="0"
+         id="stop4618" />
+      <stop
+         style="stop-color:#999999;stop-opacity:0;"
+         offset="1"
+         id="stop4620" />
+    </linearGradient>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1LendR3T"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendR3T">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path6619" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5264"
+       x1="-66.774536"
+       y1="240.60486"
+       x2="1889.1105"
+       y2="-344.51166"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0016968,0,0,0.97461117,-0.10886219,989.79215)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4616"
+       id="radialGradient4630-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.5585614,0,0,0.00848631,-42.555463,1075.9798)"
+       cx="498.65219"
+       cy="238.05763"
+       fx="498.65219"
+       fy="238.05763"
+       r="471.34784" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-8" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-0" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.663227"
+     inkscape:cx="672.90397"
+     inkscape:cy="-15.696543"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="false" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Header"
+     style="display:inline"
+     transform="translate(0,-990)">
+    <path
+       style="fill:url(#linearGradient5264);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 5.0458157e-6,990.29951 1441.623,990 c 64.8515,31.398 111.8494,58.9377 158.377,90 L 0.81838346,1080 Z"
+       id="path5230"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <rect
+       style="display:inline;opacity:1;fill:url(#radialGradient4630-2);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4626-2"
+       width="1469.249"
+       height="7.99999"
+       x="4.964153e-006"
+       y="1074"
+       ry="0.069612704" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/displayvolumeback.svg b/skins/blackhole/themes/default/skinparts/displayvolumeback.svg
new file mode 100644
index 0000000..f3be2cc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/displayvolumeback.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="340"
+   height="425"
+   viewBox="0 0 340 425"
+   id="svg4261"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   sodipodi:docname="displayvolume.svg">
+  <defs
+     id="defs4263" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.3236702"
+     inkscape:cx="167.14286"
+     inkscape:cy="224.50472"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4266">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-627.36222)">
+    <path
+       id="rect4811"
+       style="opacity:0.8;fill:#000000;fill-opacity:0.72549021;stroke:#ff0000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 26.633281,927.85907 286.733419,0 c 14.47956,0 26.13639,11.65683 26.13639,26.13639 l 0,71.73344 c 0,14.4796 -11.65683,26.1364 -26.13639,26.1364 l -286.733419,0 c -14.479558,0 -26.13638655,-11.6568 -26.13638655,-26.1364 l 0,-71.73344 c 0,-14.47956 11.65682855,-26.13639 26.13638655,-26.13639 z M 61.249034,666.96976 A 169.79109,169.79092 0 0 1 300.26253,688.45566 169.79109,169.79092 0 0 1 279.06238,927.49444 169.79109,169.79092 0 0 1 39.998187,906.5801 169.79109,169.79092 0 0 1 6 [...]
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/line_horizontal.svg b/skins/blackhole/themes/default/skinparts/line_horizontal.svg
new file mode 100644
index 0000000..ba9a692
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/line_horizontal.svg
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1000"
+   height="2"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1000 2"
+   sodipodi:docname="line_horizontal.svg">
+  <defs
+     id="defs4151">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4699">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4701" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4703" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4699"
+       id="radialGradient4705"
+       cx="500.00001"
+       cy="1051.3621"
+       fx="500.00001"
+       fy="1051.3621"
+       r="500"
+       gradientTransform="matrix(1,0,0,0.00200001,0,1049.2593)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.9895833"
+     inkscape:cx="480"
+     inkscape:cy="-2.8421709e-014"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4154">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1050.3622)">
+    <rect
+       style="fill:url(#radialGradient4705);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4697"
+       width="1000"
+       height="1.9999974"
+       x="9.7061184e-006"
+       y="1050.3621"
+       ry="0" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/line_vertical.svg b/skins/blackhole/themes/default/skinparts/line_vertical.svg
new file mode 100644
index 0000000..1d049e3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/line_vertical.svg
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="2"
+   height="600"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 2 600.00001"
+   sodipodi:docname="line_vertical.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4139">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4141" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4143" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4139"
+       id="radialGradient4145"
+       cx="1"
+       cy="752.36218"
+       fx="1"
+       fy="752.36218"
+       r="0.99999159"
+       gradientTransform="matrix(1,0,0,300.00253,0,-224958.19)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32.464618"
+     inkscape:cx="4.2628169"
+     inkscape:cy="426.0172"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-452.36219)">
+    <rect
+       style="fill:url(#radialGradient4145);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:5.69999981;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4137"
+       width="1.9999732"
+       height="600"
+       x="1.3416932e-005"
+       y="452.36218"
+       ry="0" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/menubutton.svg b/skins/blackhole/themes/default/skinparts/menubutton.svg
new file mode 100644
index 0000000..e05dab3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/menubutton.svg
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="960"
+   height="80"
+   id="svg4671"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 960 80.000001"
+   sodipodi:docname="menubutton.svg">
+  <defs
+     id="defs4673">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5117"
+       id="linearGradient5123"
+       x1="563.71271"
+       y1="307.54962"
+       x2="565.81268"
+       y2="243.68301"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5117">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop5119" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop5121" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5151"
+       id="radialGradient5157"
+       cx="530.15411"
+       cy="238.10101"
+       fx="530.15411"
+       fy="238.10101"
+       r="504.75729"
+       gradientTransform="matrix(1,0,0,0.0039919,0,237.15054)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5151">
+      <stop
+         style="stop-color:#808080;stop-opacity:1;"
+         offset="0"
+         id="stop5153" />
+      <stop
+         style="stop-color:#808080;stop-opacity:0;"
+         offset="1"
+         id="stop5155" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5151"
+       id="radialGradient5165"
+       cx="530.15411"
+       cy="310.10101"
+       fx="530.15411"
+       fy="310.10101"
+       r="504.75729"
+       gradientTransform="matrix(1,0,0,0.0039919,0,308.8631)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.1419098"
+     inkscape:cx="467.14286"
+     inkscape:cy="20"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4676">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-972.3622)">
+    <g
+       transform="matrix(0.95095209,0,0,1.0522181,-24.15114,723.94816)"
+       style="display:inline"
+       id="g5189">
+      <rect
+         style="opacity:1;fill:url(#linearGradient5123);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4598"
+         width="1008.7696"
+         height="70"
+         x="26"
+         y="239.99966"
+         ry="0.104419" />
+      <rect
+         style="opacity:1;fill:url(#radialGradient5157);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect5085"
+         width="1009.5146"
+         height="4.0298715"
+         x="25.396799"
+         y="236.08607"
+         ry="0.035066329" />
+      <rect
+         ry="0.035066329"
+         y="308.08606"
+         x="25.396799"
+         height="4.0298715"
+         width="1009.5146"
+         id="rect5113"
+         style="opacity:1;fill:url(#radialGradient5165);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/menubuttonactive.svg b/skins/blackhole/themes/default/skinparts/menubuttonactive.svg
new file mode 100644
index 0000000..1edd668
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/menubuttonactive.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="960"
+   height="80"
+   id="svg5278"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 960 80.000001"
+   sodipodi:docname="menubuttonactive.svg">
+  <defs
+     id="defs5280">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4146">
+      <stop
+         style="stop-color:#5f8dd3;stop-opacity:1;"
+         offset="0"
+         id="stop4148" />
+      <stop
+         style="stop-color:#5f8dd3;stop-opacity:0;"
+         offset="1"
+         id="stop4150" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4146"
+       id="radialGradient5083"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0464083,0,0,0.0039623,-76.850467,1049.7359)"
+       cx="532.15411"
+       cy="158.05797"
+       fx="532.15411"
+       fy="158.05797"
+       r="504.75729" />
+    <linearGradient
+       gradientTransform="matrix(0.95165438,0,0,1.142857,-24.74301,789.50506)"
+       inkscape:collect="always"
+       xlink:href="#linearGradient5073"
+       id="linearGradient5079"
+       x1="571.08295"
+       y1="223.60255"
+       x2="573.04272"
+       y2="164.76302"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5073">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1;"
+         offset="0"
+         id="stop5075" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5077" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4146"
+       id="radialGradient4152"
+       cx="480"
+       cy="974.36218"
+       fx="480"
+       fy="974.36218"
+       r="480"
+       gradientTransform="matrix(1,0,0,0.00416667,0,970.30234)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.6493863"
+     inkscape:cx="438.84901"
+     inkscape:cy="32.058072"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5283">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-972.3622)">
+    <rect
+       style="display:inline;opacity:1;fill:url(#linearGradient5079);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4576"
+       width="960"
+       height="79.999992"
+       x="-1.0000001e-006"
+       y="972.36218"
+       ry="0.11933599" />
+    <rect
+       style="display:inline;opacity:1;fill:url(#radialGradient4152);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4572"
+       width="960"
+       height="3.99999"
+       x="-1.0000001e-006"
+       y="972.36218"
+       ry="0.034806311" />
+    <rect
+       ry="0.034806311"
+       y="1048.3622"
+       x="-1.0000001e-006"
+       height="3.99999"
+       width="960"
+       id="rect5081"
+       style="display:inline;opacity:1;fill:url(#radialGradient5083);fill-opacity:1.0;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/messageblue.svg b/skins/blackhole/themes/default/skinparts/messageblue.svg
new file mode 100644
index 0000000..1bdd0eb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/messageblue.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1728"
+   height="162"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1728 162"
+   sodipodi:docname="messageblue.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4180">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop4182" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop4184" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4189"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200"
+       gradientTransform="matrix(4.3178877,0,0,0.00750001,0.75138186,884.48694)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178877,0,0,0.01125004,0.75138278,1039.0494)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4162"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178876,0,0,0.00750002,1.7324077e-5,1043.487)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4180"
+       id="linearGradient4222"
+       gradientUnits="userSpaceOnUse"
+       x1="210.71375"
+       y1="901.98651"
+       x2="199.81989"
+       y2="1036.3486" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.85962546"
+     inkscape:cx="449.03608"
+     inkscape:cy="116.50387"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4206"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-890.3622)"
+     id="g4206"
+     inkscape:groupmode="layer"
+     inkscape:label="Blau"
+     style="display:inline">
+    <rect
+       ry="0.9900887"
+       y="890.36218"
+       x="5.0709259e-006"
+       height="161.99998"
+       width="1727.155"
+       id="rect4208"
+       style="opacity:1;fill:#0044aa;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       transform="matrix(4.2074416,0,0,2.2560334,5.5259383,-1321.8079)"
+       inkscape:connector-curvature="0"
+       id="path4210"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       style="opacity:1;fill:#002255;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <path
+       transform="matrix(4.2074271,0,0,2.1001906,28.170151,-1165.7311)"
+       inkscape:connector-curvature="0"
+       id="path4212"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       style="opacity:1;fill:url(#linearGradient4222);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <rect
+       ry="0.64172226"
+       y="890.36218"
+       x="0.75136954"
+       height="2.9999919"
+       width="1727.155"
+       id="rect4214"
+       style="opacity:1;fill:url(#radialGradient4189);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4193);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4216"
+       width="1727.155"
+       height="4.4999995"
+       x="0.75137043"
+       y="1047.8622"
+       ry="0.96258593" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4162);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4220"
+       width="1727.155"
+       height="2.9999919"
+       x="4.9999999e-006"
+       y="1049.3622"
+       ry="0.034893151" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/messagegreen.svg b/skins/blackhole/themes/default/skinparts/messagegreen.svg
new file mode 100644
index 0000000..483ad23
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/messagegreen.svg
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1728"
+   height="162"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1728 162"
+   sodipodi:docname="messagegreen.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4173">
+      <stop
+         style="stop-color:#ced659;stop-opacity:1;"
+         offset="0"
+         id="stop4175" />
+      <stop
+         style="stop-color:#ced659;stop-opacity:0;"
+         offset="1"
+         id="stop4177" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4173"
+       id="linearGradient4179"
+       x1="186.87177"
+       y1="-76.304359"
+       x2="168.72545"
+       y2="50.159344"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1.3456955,985.50214)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4387"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0.17733523,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4391"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3199999,0,0,0.0075,2.3864843e-5,1043.487)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4217"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3199999,0,0,0.0075,1.7348835e-5,884.48702)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.85962546"
+     inkscape:cx="717.17611"
+     inkscape:cy="116.50387"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Grün"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-890.3622)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#008000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4137"
+       width="1728"
+       height="161.99998"
+       x="1.3048174e-005"
+       y="890.36218"
+       ry="0.99008864" />
+    <path
+       style="opacity:1;fill:#036403;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       id="path4139"
+       inkscape:connector-curvature="0"
+       transform="matrix(4.2085896,0,0,1.881705,4.590517,-930.16199)" />
+    <path
+       style="opacity:1;fill:url(#linearGradient4179);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       id="path4154"
+       inkscape:connector-curvature="0"
+       transform="matrix(4.2125314,0,0,1.9743876,27.162466,-1045.6397)" />
+    <rect
+       ry="0.427816"
+       y="1052.3622"
+       x="0.17733237"
+       height="2"
+       width="400"
+       id="rect4191"
+       style="opacity:1;fill:url(#radialGradient4387);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       ry="0.034893107"
+       y="1049.3622"
+       x="1.1516008e-005"
+       height="2.9999878"
+       width="1728"
+       id="rect4160"
+       style="opacity:1;fill:url(#radialGradient4391);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4217);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4215"
+       width="1728"
+       height="2.9999878"
+       x="4.9999999e-006"
+       y="890.36218"
+       ry="0.034893107" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/messagered.svg b/skins/blackhole/themes/default/skinparts/messagered.svg
new file mode 100644
index 0000000..4c01d9b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/messagered.svg
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1728"
+   height="162"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1728 162"
+   sodipodi:docname="messagered.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4180">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop4182" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop4184" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4180"
+       id="linearGradient4186"
+       x1="210.71375"
+       y1="901.98651"
+       x2="199.81989"
+       y2="1036.3486"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4201"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00500002,0,1048.4454)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4203"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3199999,0,0,0.0075,1.6001723e-5,884.48697)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4228"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3199999,0,0,0.0075,1.6001723e-5,1043.487)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.85962546"
+     inkscape:cx="449.03608"
+     inkscape:cy="116.50387"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4164"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-890.3622)"
+     id="g4164"
+     inkscape:groupmode="layer"
+     inkscape:label="Rot"
+     style="display:inline">
+    <rect
+       ry="0.99008864"
+       y="890.36218"
+       x="5.1415495e-006"
+       height="161.99998"
+       width="1728"
+       id="rect4166"
+       style="opacity:1;fill:#aa0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       transform="matrix(4.2115011,0,0,1.7477339,4.6976628,-787.25101)"
+       inkscape:connector-curvature="0"
+       id="path4168"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       style="opacity:1;fill:#550000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <path
+       transform="matrix(4.2125314,0,0,1.9743876,27.162466,-1045.6397)"
+       inkscape:connector-curvature="0"
+       id="path4170"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       style="opacity:1;fill:url(#linearGradient4186);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4201);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4174"
+       width="400"
+       height="2"
+       x="-2.857143e-006"
+       y="1052.3622"
+       ry="0.427816" />
+    <rect
+       ry="0.034893107"
+       y="890.36218"
+       x="3.6588654e-006"
+       height="2.9999878"
+       width="1728"
+       id="rect4176"
+       style="opacity:1;fill:url(#radialGradient4203);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4228);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4226"
+       width="1728"
+       height="2.9999878"
+       x="3.6588654e-006"
+       y="1049.3622"
+       ry="0.034893107" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/messageyellow.svg b/skins/blackhole/themes/default/skinparts/messageyellow.svg
new file mode 100644
index 0000000..51a1f43
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/messageyellow.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1728"
+   height="162"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 1728 162"
+   sodipodi:docname="messageyellow.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4152">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4154" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4156" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4148"
+       x="-0.013382644"
+       width="1.0267653"
+       y="-0.11614827"
+       height="1.2322965">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2304407"
+         id="feGaussianBlur4150" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="linearGradient4204"
+       gradientUnits="userSpaceOnUse"
+       x1="210.71375"
+       y1="901.98651"
+       x2="199.81989"
+       y2="1036.3486" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178877,0,0,0.01125004,0.57403969,883.54934)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="radialGradient4567"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178877,0,0,0.01125004,0.57403969,1041.0494)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4569"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178877,0,0,0.00750002,0.57403877,884.48695)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4152"
+       id="radialGradient4571"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(4.3178876,0,0,0.00750002,0.57403877,1043.487)"
+       cx="200"
+       cy="983.36218"
+       fx="200"
+       fy="983.36218"
+       r="200" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.85962546"
+     inkscape:cx="449.03608"
+     inkscape:cy="116.50387"
+     inkscape:document-units="px"
+     inkscape:current-layer="g4188"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     style="display:inline"
+     inkscape:label="Gelb"
+     inkscape:groupmode="layer"
+     id="g4188"
+     transform="translate(0,-890.3622)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4190"
+       width="1728"
+       height="161.99998"
+       x="5.0721487e-006"
+       y="890.36224"
+       ry="0.9900887" />
+    <path
+       style="opacity:1;fill:#aa8800;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m 55.347603,1000.9212 a 496.85897,57.329265 0 0 0 -51.3105474,0.2891 l 0,45.3711 c 0,0.237 0.1907242,0.4277 0.4277343,0.4277 l 399.1445401,0 c 0.23701,0 0.42773,-0.1907 0.42773,-0.4277 l 0,-28.8321 A 496.85897,57.329265 0 0 0 55.347603,1000.9212 Z"
+       id="path4192"
+       inkscape:connector-curvature="0"
+       transform="matrix(4.2074416,0,0,2.2560334,5.5259383,-1321.8079)" />
+    <path
+       style="opacity:1;fill:url(#linearGradient4204);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4148)"
+       d="m -0.9179615,985.50214 c -0.23701,0 -0.427734,0.19072 -0.427734,0.42773 l 0,23.77343 a 496.85896,57.329264 0 0 1 51.3105475,-0.289 496.85896,57.329264 0 0 1 348.689448,16.8281 l 0,-40.31253 c 0,-0.23701 -0.19072,-0.42773 -0.42773,-0.42773 l -399.1445315,0 z"
+       id="path4194"
+       inkscape:connector-curvature="0"
+       transform="matrix(4.2074271,0,0,2.1001906,27.992808,-1163.7311)" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4565);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4196"
+       width="1727.155"
+       height="4.4999995"
+       x="0.57402736"
+       y="892.36224"
+       ry="0.96258593" />
+    <rect
+       ry="0.96258593"
+       y="1049.8622"
+       x="0.57402736"
+       height="4.4999995"
+       width="1727.155"
+       id="rect4198"
+       style="opacity:1;fill:url(#radialGradient4567);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4569);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4200"
+       width="1727.155"
+       height="2.9999919"
+       x="0.57402647"
+       y="890.36218"
+       ry="0.034893151" />
+    <rect
+       ry="0.034893151"
+       y="1049.3622"
+       x="0.57402647"
+       height="2.9999919"
+       width="1727.155"
+       id="rect4202"
+       style="opacity:1;fill:url(#radialGradient4571);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/progressbar.svg b/skins/blackhole/themes/default/skinparts/progressbar.svg
new file mode 100644
index 0000000..77e5327
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/progressbar.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="50"
+   height="30"
+   id="svg5635"
+   version="1.1"
+   inkscape:version="0.91pre3 r13670"
+   viewBox="0 0 49.999999 30"
+   sodipodi:docname="progressbar.svg">
+  <defs
+     id="defs5637">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6185"
+       id="linearGradient6191"
+       x1="42.000378"
+       y1="1025.342"
+       x2="42.000378"
+       y2="1049.3121"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.62499992,0,0,0.64999977,1.7955524e-6,366.32701)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6185">
+      <stop
+         style="stop-color:#00284a;stop-opacity:1"
+         offset="0"
+         id="stop6187" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop6189" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.542884"
+     inkscape:cx="26.283646"
+     inkscape:cy="14.817159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5640">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1022.3622)">
+    <rect
+       style="opacity:0.95;fill:url(#linearGradient6191);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6183"
+       width="49.999992"
+       height="25.999985"
+       x="4.9999999e-006"
+       y="1024.3622"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/progressbarback.svg b/skins/blackhole/themes/default/skinparts/progressbarback.svg
new file mode 100644
index 0000000..8aa4552
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/progressbarback.svg
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="600"
+   height="30"
+   id="svg5061"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   viewBox="0 0 599.99999 30"
+   sodipodi:docname="progressbarback.svg">
+  <defs
+     id="defs5063">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#00284a;stop-opacity:1"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5627">
+      <stop
+         style="stop-color:#323232;stop-opacity:1;"
+         offset="0"
+         id="stop5629" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5631" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5619">
+      <stop
+         style="stop-color:#323232;stop-opacity:1;"
+         offset="0"
+         id="stop5621" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5623" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5619"
+       id="linearGradient5625"
+       x1="292"
+       y1="1049.1788"
+       x2="292"
+       y2="1018.4011"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0003642,0,0,1.5755257,-0.1092438,-604.90605)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5627"
+       id="linearGradient5633"
+       x1="269"
+       y1="1054.1072"
+       x2="269"
+       y2="1030.1171"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0003642,0,0,1.5755257,-0.1092438,-604.90605)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4169"
+       id="linearGradient4179"
+       gradientUnits="userSpaceOnUse"
+       x1="589.40759"
+       y1="1047.4875"
+       x2="589.39136"
+       y2="1033.7078"
+       gradientTransform="translate(-600.00029,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5627"
+       id="linearGradient4181"
+       gradientUnits="userSpaceOnUse"
+       x1="592.67389"
+       y1="1053.8467"
+       x2="592.67389"
+       y2="1018.0886"
+       gradientTransform="translate(-600.00029,0)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2678445"
+     inkscape:cx="277.67286"
+     inkscape:cy="-23.838292"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1600"
+     inkscape:window-height="1153"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5066">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1022.3622)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient5625);fill-opacity:1;stroke:url(#linearGradient5633);stroke-width:2.02869797;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5609"
+       width="597.97125"
+       height="27.971302"
+       x="1.014344"
+       y="1023.3765"
+       rx="14.067764"
+       ry="13.985651" />
+    <path
+       sodipodi:open="true"
+       d="m -13.968908,1023.3526 c 7.1595473,-0.01 12.96902034,6.259 12.97582106,13.9963 0.006801,7.7372 -5.79164626,14.0155 -12.95119406,14.0228 -0.02051,10e-5 -0.04101,0 -0.06152,-10e-5"
+       sodipodi:end="1.5745921"
+       sodipodi:start="4.7114391"
+       sodipodi:ry="14.009566"
+       sodipodi:rx="12.963513"
+       sodipodi:cy="1037.3622"
+       sodipodi:cx="-13.956594"
+       sodipodi:type="arc"
+       id="path4177"
+       style="opacity:1;fill:url(#linearGradient4179);fill-opacity:1;stroke:url(#linearGradient4181);stroke-width:1.98086679;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       transform="scale(-1,1)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/progressbarback_replay.svg b/skins/blackhole/themes/default/skinparts/progressbarback_replay.svg
new file mode 100644
index 0000000..4cfdbd3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/progressbarback_replay.svg
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1250"
+   height="90"
+   id="svg5061"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   viewBox="0 0 1250 90"
+   sodipodi:docname="progressbarback_replay.svg">
+  <defs
+     id="defs5063">
+    <linearGradient
+       id="linearGradient5627">
+      <stop
+         style="stop-color:#323232;stop-opacity:1;"
+         offset="0"
+         id="stop5629" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5631" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5619">
+      <stop
+         style="stop-color:#323232;stop-opacity:1;"
+         offset="0"
+         id="stop5621" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5623" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5619"
+       id="linearGradient5625"
+       x1="292"
+       y1="1049.1788"
+       x2="292"
+       y2="1018.4011"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0826315,0,0,4.7821383,0.21066728,-3977.3574)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5627"
+       id="linearGradient5633"
+       x1="269"
+       y1="1054.1072"
+       x2="269"
+       y2="1030.1171"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0826315,0,0,4.7821383,0.21066728,-3977.3574)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.87774205"
+     inkscape:cx="570.58359"
+     inkscape:cy="78.787158"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1600"
+     inkscape:window-height="1153"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5066">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-962.3622)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient5625);fill-opacity:1;stroke:url(#linearGradient5633);stroke-width:5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5609"
+       width="1244.9003"
+       height="84.900314"
+       x="2.5498345"
+       y="964.91199"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/progressbarback_replay_left.svg b/skins/blackhole/themes/default/skinparts/progressbarback_replay_left.svg
new file mode 100644
index 0000000..17c639c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/progressbarback_replay_left.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="45"
+   height="90"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 45 90.000001"
+   sodipodi:docname="progressbarback_replay_left.svg">
+  <defs
+     id="defs4151">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4169"
+       id="linearGradient4179"
+       gradientUnits="userSpaceOnUse"
+       x1="589.40759"
+       y1="1047.4875"
+       x2="589.39136"
+       y2="1033.7078"
+       gradientTransform="matrix(3.0433093,0,0,2.8551909,-1827.9644,-1954.5046)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#00284a;stop-opacity:1"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5627"
+       id="linearGradient4181"
+       gradientUnits="userSpaceOnUse"
+       x1="592.67389"
+       y1="1053.8467"
+       x2="592.67389"
+       y2="1018.0886"
+       gradientTransform="matrix(3.0433093,0,0,2.8551909,-1827.9644,-1954.5046)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5627">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop5629" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5631" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.7945122"
+     inkscape:cx="75.714286"
+     inkscape:cy="25.714286"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4154">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-962.3622)">
+    <path
+       d="m -44.997844,967.36603 a 39.451977,39.999985 0 0 1 34.686991,19.95181 39.451977,39.999985 0 0 1 -0.199294,40.43366 39.451977,39.999985 0 0 1 -34.881936,19.5993"
+       sodipodi:end="1.5946277"
+       sodipodi:start="4.6985523"
+       sodipodi:ry="39.999985"
+       sodipodi:rx="39.451977"
+       sodipodi:cy="1007.3622"
+       sodipodi:cx="-44.451977"
+       sodipodi:type="arc"
+       id="path4177"
+       style="opacity:1;fill:url(#linearGradient4179);fill-opacity:1;stroke:url(#linearGradient4181);stroke-width:0;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       transform="scale(-1,1)"
+       sodipodi:open="true" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/progressbarend.svg b/skins/blackhole/themes/default/skinparts/progressbarend.svg
new file mode 100644
index 0000000..e0d86bf
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/progressbarend.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15"
+   height="30"
+   id="svg4191"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   viewBox="0 0 15 30"
+   sodipodi:docname="progressbarend.svg">
+  <defs
+     id="defs4193">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4169"
+       id="linearGradient4223"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-585.00008,-3.4468423e-5)"
+       x1="589.40759"
+       y1="1047.4875"
+       x2="589.39136"
+       y2="1033.7078" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#00284a;stop-opacity:1"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5627"
+       id="linearGradient4225"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-585.00008,-3.4468423e-5)"
+       x1="592.52893"
+       y1="1055.7797"
+       x2="592.62555"
+       y2="1017.992" />
+    <linearGradient
+       id="linearGradient5627">
+      <stop
+         style="stop-color:#323232;stop-opacity:1;"
+         offset="0"
+         id="stop5629" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5631" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="20.693842"
+     inkscape:cx="-0.27737725"
+     inkscape:cy="14.527028"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1600"
+     inkscape:window-height="1153"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4196">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1022.3622)">
+    <path
+       style="opacity:1;fill:url(#linearGradient4223);fill-opacity:1;stroke:url(#linearGradient4225);stroke-width:1.98086679000000010;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4221"
+       sodipodi:type="arc"
+       sodipodi:cx="1.0436943"
+       sodipodi:cy="1037.3622"
+       sodipodi:rx="12.963513"
+       sodipodi:ry="14.009566"
+       sodipodi:start="4.7114391"
+       sodipodi:end="1.5745921"
+       d="m 1.0313805,1023.3526 c 7.1595475,-0.01 12.9690205,6.259 12.9758215,13.9963 0.0068,7.7372 -5.7916464,14.0155 -12.951194,14.0228 -0.020507,10e-5 -0.041014,0 -0.0615202,-10e-5"
+       sodipodi:open="true" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/scrollbar.svg b/skins/blackhole/themes/default/skinparts/scrollbar.svg
new file mode 100644
index 0000000..0c6de52
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/scrollbar.svg
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="20"
+   height="300"
+   id="svg5360"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 20 300"
+   sodipodi:docname="scrollbar.svg">
+  <defs
+     id="defs5362">
+    <linearGradient
+       id="linearGradient5933"
+       inkscape:collect="always">
+      <stop
+         id="stop5935"
+         offset="0"
+         style="stop-color:#cccccc;stop-opacity:1" />
+      <stop
+         id="stop5937"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5236"
+       id="linearGradient5242"
+       x1="-1072.1458"
+       y1="554.61908"
+       x2="-1059.5234"
+       y2="554.61908"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2327116,0,0,0.37971031,1306.489,691.76762)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5236">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1"
+         offset="0"
+         id="stop5238" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1"
+         id="stop5240" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5933"
+       id="linearGradient5246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2327116,0,0,0.37971031,1326.4889,691.76762)"
+       x1="-1069.5354"
+       y1="554.61908"
+       x2="-1058.8707"
+       y2="554.61908" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4860596"
+     inkscape:cx="-66.453039"
+     inkscape:cy="136.37059"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5365">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-752.3622)">
+    <rect
+       transform="scale(-1,1)"
+       style="opacity:1;fill:url(#linearGradient5242);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5232"
+       width="10.138358"
+       height="300"
+       x="-10.138315"
+       y="752.36218"
+       ry="0.19488853" />
+    <rect
+       ry="0.19488853"
+       y="752.36218"
+       x="9.8615866"
+       height="300"
+       width="10.138358"
+       id="rect5244"
+       style="opacity:1;fill:url(#linearGradient5246);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/scrollbarback.svg b/skins/blackhole/themes/default/skinparts/scrollbarback.svg
new file mode 100644
index 0000000..a0be373
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/scrollbarback.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="30"
+   height="800"
+   id="svg4741"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 30 800.00001"
+   sodipodi:docname="scrollbarback.svg">
+  <defs
+     id="defs4743">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4616"
+       id="linearGradient4891"
+       x1="1034.0717"
+       y1="213.93652"
+       x2="1060.0741"
+       y2="213.93652"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99999887,0,0,7.2676787,22.001189,-1000.2029)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4616">
+      <stop
+         style="stop-color:#999999;stop-opacity:1;"
+         offset="0"
+         id="stop4618" />
+      <stop
+         style="stop-color:#999999;stop-opacity:0;"
+         offset="1"
+         id="stop4620" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4616"
+       id="linearGradient4911"
+       x1="-1083.0437"
+       y1="554.61908"
+       x2="-1052.5197"
+       y2="554.61908"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.0511824"
+     inkscape:cx="20"
+     inkscape:cy="402.85714"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4746">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-252.36219)">
+    <g
+       transform="matrix(1.0344843,0,0,1.0125609,-1089.3886,90.776624)"
+       style="display:inline"
+       id="g4671">
+      <rect
+         ry="0.51325583"
+         y="159.58109"
+         x="1067.0741"
+         height="790.07593"
+         width="14.999974"
+         id="rect4883"
+         style="opacity:1;fill:url(#linearGradient4891);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         transform="scale(-1,1)"
+         style="opacity:1;fill:url(#linearGradient4911);fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4893"
+         width="14.999974"
+         height="790.07593"
+         x="-1068.0741"
+         y="159.58109"
+         ry="0.51325583" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tabback.svg b/skins/blackhole/themes/default/skinparts/tabback.svg
new file mode 100644
index 0000000..15e2a15
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tabback.svg
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="800"
+   height="200"
+   id="svg4153"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 800 200"
+   sodipodi:docname="tabback.svg">
+  <defs
+     id="defs4155">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4160">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4162" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4164" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4146">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4148" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4150" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4703">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4705" />
+      <stop
+         style="stop-color:#333333;stop-opacity:1"
+         offset="1"
+         id="stop4707" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4709"
+       x1="13.839722"
+       y1="1040.7826"
+       x2="801.53772"
+       y2="853.17749"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4799"
+       x="-0.096"
+       width="1.192"
+       y="-0.0576"
+       height="1.1152">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.2"
+         id="feGaussianBlur4801" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4146"
+       id="radialGradient4152"
+       cx="400.00001"
+       cy="971.36218"
+       fx="400.00001"
+       fy="971.36218"
+       r="380"
+       gradientTransform="matrix(1,0,0,0.00263157,0,968.80596)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4146"
+       id="radialGradient4156"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.00263157,-3.417212e-6,1030.806)"
+       cx="400.00001"
+       cy="971.36218"
+       fx="400.00001"
+       fy="971.36218"
+       r="380" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4160"
+       id="radialGradient4166"
+       cx="19.000002"
+       cy="1002.3622"
+       fx="19.000002"
+       fy="1002.3622"
+       r="1.0000009"
+       gradientTransform="matrix(1,0,0,29.999973,0,-29068.476)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4160"
+       id="radialGradient4170"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,29.999973,382,-29068.476)"
+       cx="19.000002"
+       cy="1002.3622"
+       fx="19.000002"
+       fy="1002.3622"
+       r="1.0000009" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4160"
+       id="radialGradient4174"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,29.999973,762,-29068.476)"
+       cx="19.000002"
+       cy="1002.3622"
+       fx="19.000002"
+       fy="1002.3622"
+       r="1.0000009" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.3725434"
+     inkscape:cx="744.58182"
+     inkscape:cy="69.621951"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4158">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-852.3622)">
+    <rect
+       style="fill:url(#linearGradient4709);fill-opacity:1"
+       id="rect4701"
+       width="800"
+       height="200"
+       x="0"
+       y="852.36218"
+       ry="1.0185972" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke:#ececec;stroke-opacity:1"
+       id="rect4711"
+       width="760"
+       height="60"
+       x="20"
+       y="972.36218"
+       ry="0.95768344" />
+    <path
+       style="fill:#1957d1;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4799)"
+       d="m 380,977.3622 -30,25 30,25 z"
+       id="path4713"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc"
+       transform="matrix(1.1299389,0,0,0.99316334,-42.224391,6.8524135)" />
+    <path
+       transform="matrix(-1.1299389,0,0,0.99316334,842.63101,6.8524135)"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0"
+       id="path4803"
+       d="m 380,977.3622 -30,25 30,25 z"
+       style="fill:#1957d1;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4799)" />
+    <rect
+       style="fill:url(#radialGradient4152);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4144"
+       width="760"
+       height="1.9999858"
+       x="20.000008"
+       y="970.36218"
+       ry="0.99999291" />
+    <rect
+       ry="0.99999291"
+       y="1032.3622"
+       x="20.000006"
+       height="1.9999858"
+       width="760"
+       id="rect4154"
+       style="fill:url(#radialGradient4156);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:url(#radialGradient4166);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4158"
+       width="1.9999918"
+       height="59.999989"
+       x="18.000006"
+       y="972.36218"
+       ry="0.95897168" />
+    <rect
+       ry="0.95897168"
+       y="972.36218"
+       x="400"
+       height="59.999989"
+       width="1.9999918"
+       id="rect4168"
+       style="fill:url(#radialGradient4170);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:url(#radialGradient4174);fill-opacity:1;stroke:#ececec;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4172"
+       width="1.9999918"
+       height="59.999989"
+       x="780"
+       y="972.36218"
+       ry="0.95897168" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tacho_load_back.svg b/skins/blackhole/themes/default/skinparts/tacho_load_back.svg
new file mode 100644
index 0000000..91107ec
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tacho_load_back.svg
@@ -0,0 +1,767 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="tacho_load_back.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4633">
+      <stop
+         style="stop-color:#e6e6e6;stop-opacity:1;"
+         offset="0"
+         id="stop4635" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4637" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4620">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop4622" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:0;"
+         offset="1"
+         id="stop4624" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4620"
+       id="radialGradient4626"
+       cx="110.27615"
+       cy="12.330762"
+       fx="110.27615"
+       fy="12.330762"
+       r="74.998166"
+       gradientTransform="matrix(-1.8628953,0.67964205,-0.52439662,-1.4373683,322.17528,-44.829535)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4633"
+       id="linearGradient4643"
+       x1="80.356987"
+       y1="68.492752"
+       x2="68.958046"
+       y2="80.47979"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.94150667,0,0,0.94152267,4.3869559,4.3857232)" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4263"
+       x="-0.05507957"
+       width="1.1101591"
+       y="-0.026737965"
+       height="1.0534759">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.39862517"
+         id="feGaussianBlur4265" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="71.263485"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Back"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-902.3622)"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Uhr"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Ziffernblatt" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Ziffern">
+    <g
+       id="g4404">
+      <path
+         sodipodi:open="true"
+         d="M 28.394987,19.250286 A 72.763588,72.685867 0 0 1 130.82373,28.448256 72.763588,72.685867 0 0 1 121.73828,130.77851 72.763588,72.685867 0 0 1 19.28783,121.82499 72.763588,72.685867 0 0 1 28.128539,19.473353"
+         sodipodi:end="4.012464"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="72.685867"
+         sodipodi:rx="72.763588"
+         sodipodi:cy="75.070084"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4618"
+         style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;stroke:url(#radialGradient4626);stroke-width:4.494;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 70.175796,69.215654 A 7.5318813,7.5319991 0 0 1 80.778362,70.168778 7.5318813,7.5319991 0 0 1 79.837929,80.772642 7.5318813,7.5319991 0 0 1 69.233115,79.844873 7.5318813,7.5319991 0 0 1 70.14819,69.23879"
+         sodipodi:open="true"
+         sodipodi:end="4.0124596"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="7.5319991"
+         sodipodi:rx="7.5318813"
+         sodipodi:cy="74.999924"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4631"
+         style="display:inline;opacity:0.75;fill:url(#linearGradient4643);fill-opacity:1;stroke:#999999;stroke-width:0.94151461;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4245"
+         d="m 128.27004,104.31786 c 4.05369,-9.895602 6.31749,-18.412239 6.97609,-29.704639 l 10.35162,0 c -0.28964,12.8754 -3.86039,23.940773 -9.22644,35.780599 z"
+         style="display:inline;fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4263)" />
+      <rect
+         inkscape:transform-center-y="63.763147"
+         inkscape:transform-center-x="-1.380587e-005"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4651"
+         width="1.999997"
+         height="14.240295"
+         x="74.000023"
+         y="131.489" />
+      <rect
+         inkscape:transform-center-y="55.220514"
+         inkscape:transform-center-x="31.881558"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4656"
+         width="1.999997"
+         height="14.240295"
+         x="101.37493"
+         y="83.961533"
+         transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)" />
+      <rect
+         transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
+         y="29.114088"
+         x="101.31856"
+         height="14.240295"
+         width="1.999997"
+         id="rect4658"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220498"
+         inkscape:transform-center-y="31.881587" />
+      <rect
+         inkscape:transform-center-y="1.4955199e-005"
+         inkscape:transform-center-x="63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4660"
+         width="1.999997"
+         height="14.240295"
+         x="73.846016"
+         y="-18.357008"
+         transform="matrix(0,1,-1,0,0,0)" />
+      <rect
+         transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
+         y="-45.731911"
+         x="26.31855"
+         height="14.240295"
+         width="1.999997"
+         id="rect4662"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220514"
+         inkscape:transform-center-y="-31.881561" />
+      <rect
+         inkscape:transform-center-y="-55.220498"
+         inkscape:transform-center-x="31.881587"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4664"
+         width="1.999997"
+         height="14.240295"
+         x="-28.528894"
+         y="-45.675541"
+         transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,0,0)" />
+      <rect
+         transform="scale(-1,-1)"
+         y="-18.203001"
+         x="-75.999992"
+         height="14.240295"
+         width="1.999997"
+         id="rect4666"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="1.2844736e-005"
+         inkscape:transform-center-y="-63.763147" />
+      <rect
+         inkscape:transform-center-y="-55.220513"
+         inkscape:transform-center-x="-31.881559"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4668"
+         width="1.999997"
+         height="14.240295"
+         x="-103.37489"
+         y="29.324465"
+         transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
+      <rect
+         transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
+         y="84.171913"
+         x="-103.31852"
+         height="14.240295"
+         width="1.999997"
+         id="rect4670"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220498"
+         inkscape:transform-center-y="-31.881592" />
+      <rect
+         inkscape:transform-center-y="-2.044845e-005"
+         inkscape:transform-center-x="-63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4672"
+         width="1.999997"
+         height="14.240295"
+         x="-75.845978"
+         y="131.64301"
+         transform="matrix(0,-1,1,0,0,0)" />
+      <rect
+         transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
+         y="159.01791"
+         x="-28.318512"
+         height="14.240295"
+         width="1.999997"
+         id="rect4674"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220518"
+         inkscape:transform-center-y="31.881558" />
+      <rect
+         transform="matrix(0.9945219,0.10452846,-0.10452846,0.9945219,0,0)"
+         y="126.76038"
+         x="81.426651"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4676"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="6.8351622"
+         inkscape:transform-center-y="65.032436" />
+      <rect
+         transform="matrix(0.9781476,0.20791169,-0.20791169,0.9781476,0,0)"
+         inkscape:transform-center-y="63.961713"
+         inkscape:transform-center-x="13.595462"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4688"
+         width="1.9999983"
+         height="10.718534"
+         x="87.950188"
+         y="117.77891" />
+      <rect
+         y="108.16473"
+         x="93.499168"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4690"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="20.206801"
+         inkscape:transform-center-y="62.190201"
+         transform="matrix(0.95105652,0.30901699,-0.30901699,0.95105652,0,0)" />
+      <rect
+         transform="matrix(0.91354546,0.40673664,-0.40673664,0.91354546,0,0)"
+         inkscape:transform-center-y="59.737327"
+         inkscape:transform-center-x="26.596754"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4692"
+         width="1.9999983"
+         height="10.718534"
+         x="98.012794"
+         y="98.023193" />
+      <rect
+         y="76.607063"
+         x="103.74807"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4694"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="38.435639"
+         inkscape:transform-center-y="52.902143"
+         transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+      <rect
+         transform="matrix(0.74314483,0.6691306,-0.6691306,0.74314483,0,0)"
+         inkscape:transform-center-y="48.594723"
+         inkscape:transform-center-x="43.754863"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4696"
+         width="1.9999983"
+         height="10.718534"
+         x="104.90688"
+         y="65.567108" />
+      <rect
+         y="54.466499"
+         x="104.90536"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4698"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="48.5947"
+         inkscape:transform-center-y="43.754887"
+         transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,0,0)" />
+      <rect
+         transform="matrix(0.58778526,0.80901699,-0.80901699,0.58778526,0,0)"
+         inkscape:transform-center-y="38.435662"
+         inkscape:transform-center-x="52.902125"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4700"
+         width="1.9999983"
+         height="10.718534"
+         x="103.74351"
+         y="43.426861" />
+      <rect
+         y="22.012312"
+         x="98.002342"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4702"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="59.737308"
+         inkscape:transform-center-y="26.596781"
+         transform="matrix(0.40673665,0.91354545,-0.91354545,0.40673665,0,0)" />
+      <rect
+         transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)"
+         inkscape:transform-center-y="20.206832"
+         inkscape:transform-center-x="62.190182"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4704"
+         width="1.9999983"
+         height="10.718534"
+         x="93.485924"
+         y="11.872024" />
+      <rect
+         y="2.2593789"
+         x="87.934296"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4706"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="63.961687"
+         inkscape:transform-center-y="13.595491"
+         transform="matrix(0.2079117,0.9781476,-0.9781476,0.2079117,0,0)" />
+      <rect
+         transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,0,0)"
+         inkscape:transform-center-y="6.8351958"
+         inkscape:transform-center-x="65.032414"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4708"
+         width="1.9999983"
+         height="10.718534"
+         x="81.408287"
+         y="-6.720304" />
+      <rect
+         y="-22.395264"
+         x="65.729012"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4710"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="65.032416"
+         inkscape:transform-center-y="-6.8351727"
+         transform="matrix(-0.10452846,0.9945219,-0.9945219,-0.10452846,0,0)" />
+      <rect
+         transform="matrix(-0.20791169,0.9781476,-0.9781476,-0.20791169,0,0)"
+         inkscape:transform-center-y="-13.595466"
+         inkscape:transform-center-x="63.961692"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4712"
+         width="1.9999983"
+         height="10.718534"
+         x="56.747536"
+         y="-28.918802" />
+      <rect
+         y="-34.467785"
+         x="47.133366"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4714"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="62.190189"
+         inkscape:transform-center-y="-20.206804"
+         transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+      <rect
+         transform="matrix(-0.40673664,0.91354546,-0.91354546,-0.40673664,0,0)"
+         inkscape:transform-center-y="-26.596753"
+         inkscape:transform-center-x="59.737318"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4716"
+         width="1.9999983"
+         height="10.718534"
+         x="36.991837"
+         y="-38.981415" />
+      <rect
+         y="-44.716694"
+         x="15.575709"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4718"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="52.902137"
+         inkscape:transform-center-y="-38.435636"
+         transform="matrix(-0.58778525,0.809017,-0.809017,-0.58778525,0,0)" />
+      <rect
+         transform="matrix(-0.6691306,0.74314483,-0.74314483,-0.6691306,0,0)"
+         inkscape:transform-center-y="-43.754862"
+         inkscape:transform-center-x="48.594717"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4720"
+         width="1.9999983"
+         height="10.718534"
+         x="4.5357528"
+         y="-45.875504" />
+      <rect
+         y="-45.873978"
+         x="-6.5648546"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4722"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="43.754881"
+         inkscape:transform-center-y="-48.594699"
+         transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,0,0)" />
+      <rect
+         transform="matrix(-0.80901699,0.58778526,-0.58778526,-0.80901699,0,0)"
+         inkscape:transform-center-y="-52.902122"
+         inkscape:transform-center-x="38.435657"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4724"
+         width="1.9999983"
+         height="10.718534"
+         x="-17.604492"
+         y="-44.712132" />
+      <rect
+         y="-38.970963"
+         x="-39.019043"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4726"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="26.596775"
+         inkscape:transform-center-y="-59.737308"
+         transform="matrix(-0.91354545,0.40673665,-0.40673665,-0.91354545,0,0)" />
+      <rect
+         transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,0,0)"
+         inkscape:transform-center-y="-62.190181"
+         inkscape:transform-center-x="20.206825"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4728"
+         width="1.9999983"
+         height="10.718534"
+         x="-49.159332"
+         y="-34.454544" />
+      <rect
+         y="-28.902918"
+         x="-58.771976"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4730"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="13.595486"
+         inkscape:transform-center-y="-63.961685"
+         transform="matrix(-0.9781476,0.2079117,-0.2079117,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,0,0)"
+         inkscape:transform-center-y="-65.032411"
+         inkscape:transform-center-x="6.8351958"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4732"
+         width="1.9999983"
+         height="10.718534"
+         x="-67.751656"
+         y="-22.376909" />
+      <rect
+         y="2.2838387"
+         x="-89.95015"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4734"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-13.59546"
+         inkscape:transform-center-y="-63.961689"
+         transform="matrix(-0.9781476,-0.20791169,0.20791169,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.9945219,-0.10452846,0.10452846,-0.9945219,0,0)"
+         inkscape:transform-center-y="-65.032413"
+         inkscape:transform-center-x="-6.8351672"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4736"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.426613"
+         y="-6.6976385" />
+      <rect
+         transform="matrix(-0.95105652,-0.30901699,0.30901699,-0.95105652,0,0)"
+         inkscape:transform-center-y="-62.190189"
+         inkscape:transform-center-x="-20.2068"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4738"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.49913"
+         y="11.89801" />
+      <rect
+         y="22.039541"
+         x="-100.01276"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4740"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-26.596747"
+         inkscape:transform-center-y="-59.737321"
+         transform="matrix(-0.91354546,-0.40673664,0.40673664,-0.91354546,0,0)" />
+      <rect
+         transform="matrix(-0.74314483,-0.6691306,0.6691306,-0.74314483,0,0)"
+         inkscape:transform-center-y="-48.594714"
+         inkscape:transform-center-x="-43.75486"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4742"
+         width="1.9999983"
+         height="10.718534"
+         x="-106.90685"
+         y="54.495621" />
+      <rect
+         y="43.455666"
+         x="-105.74803"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4744"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-38.435629"
+         inkscape:transform-center-y="-52.902142"
+         transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)" />
+      <rect
+         y="65.59623"
+         x="-106.90533"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4746"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-48.594699"
+         inkscape:transform-center-y="-43.754879"
+         transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,0,0)" />
+      <rect
+         transform="matrix(-0.58778526,-0.80901699,0.80901699,-0.58778526,0,0)"
+         inkscape:transform-center-y="-38.435656"
+         inkscape:transform-center-x="-52.902119"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4748"
+         width="1.9999983"
+         height="10.718534"
+         x="-105.74348"
+         y="76.635864" />
+      <rect
+         y="98.050407"
+         x="-100.00231"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4750"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-59.737299"
+         inkscape:transform-center-y="-26.596772"
+         transform="matrix(-0.40673665,-0.91354545,0.91354545,-0.40673665,0,0)" />
+      <rect
+         transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)"
+         inkscape:transform-center-y="-20.206824"
+         inkscape:transform-center-x="-62.190172"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4752"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.485893"
+         y="108.1907" />
+      <rect
+         y="117.80334"
+         x="-89.934265"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4754"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-63.961672"
+         inkscape:transform-center-y="-13.595487"
+         transform="matrix(-0.2079117,-0.9781476,0.9781476,-0.2079117,0,0)" />
+      <rect
+         transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,0,0)"
+         inkscape:transform-center-y="-6.8351946"
+         inkscape:transform-center-x="-65.032398"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4756"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.408257"
+         y="126.78302" />
+      <rect
+         y="142.45798"
+         x="-67.728981"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4758"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-65.032401"
+         inkscape:transform-center-y="6.8351634"
+         transform="matrix(0.10452846,-0.9945219,0.9945219,0.10452846,0,0)" />
+      <rect
+         transform="matrix(0.20791169,-0.9781476,0.9781476,0.20791169,0,0)"
+         inkscape:transform-center-y="13.595459"
+         inkscape:transform-center-x="-63.961682"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4760"
+         width="1.9999983"
+         height="10.718534"
+         x="-58.747505"
+         y="148.98152" />
+      <rect
+         y="154.5305"
+         x="-49.133335"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4762"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-62.190181"
+         inkscape:transform-center-y="20.206799"
+         transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" />
+      <rect
+         transform="matrix(0.40673664,-0.91354546,0.91354546,0.40673664,0,0)"
+         inkscape:transform-center-y="26.596748"
+         inkscape:transform-center-x="-59.737308"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4764"
+         width="1.9999983"
+         height="10.718534"
+         x="-38.991806"
+         y="159.04413" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text4769"
+         y="129.64612"
+         x="69.422562"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           y="129.64612"
+           x="69.422562"
+           id="tspan4771"
+           sodipodi:role="line">0</tspan></text>
+      <g
+         id="text4769-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4316"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 38.200996,101.65682 -0.552273,0.57273 -0.961363,-0.96137 0,-4.090904 1.513636,-1.534091 0,6.013635 z m -0.286364,-6.299999 -1.513636,1.534091 -4.970454,0 -1.513637,-1.534091 7.997727,0 z m -6.75,5.911359 -0.961363,0.96137 -0.572727,-0.57273 0,-6.013635 1.53409,1.534091 0,4.090904 z m 7.036364,8.12046 -1.513636,-1.53409 0,-4.09091 0.961363,-0.96136 0.552273,0.59318 0,5.99318 z m -0.286364,0.28636 -7.997727,0 1.513637,-1.53409 4.970454,0 1.513636,1.53409 z m -6.75,-1.82045  [...]
+        <path
+           id="path4318"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 40.660815,109.675 0,-1.53409 1.534091,0 0,1.53409 -1.534091,0 z" />
+        <path
+           id="path4320"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 52.899984,95.356821 -1.513636,1.534091 -4.970455,0 -1.513636,-1.534091 7.997727,0 z m 0,14.318179 -7.997727,0 1.513636,-1.53409 4.970455,0 1.513636,1.53409 z m -8.284091,-8.01818 0,-6.013635 1.534091,1.534091 0,4.090904 -0.961364,0.96137 -0.572727,-0.57273 z m 8.570455,1.73864 0,5.99318 -1.513637,-1.53409 0,-4.09091 0.961364,-0.96136 0.552273,0.59318 z m -1.615909,-1.63637 0.777272,0.75682 -0.777272,0.75682 -5.338637,0 -0.756818,-0.75682 0.756818,-0.75682 5.338637,0 z" />
+      </g>
+      <g
+         id="text4769-3-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4323"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 29.331,54.935455 0,5.993182 -1.534091,-1.534091 0,-4.090909 0.961363,-0.961364 0.572728,0.593182 z m -1.534091,-2.127273 0,-4.090909 1.534091,-1.534091 0,6.013636 -0.572728,0.572728 -0.961363,-0.961364 z" />
+        <path
+           id="path4325"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 32.744672,61.215 0,-1.534091 1.53409,0 0,1.534091 -1.53409,0 z" />
+        <path
+           id="path4327"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 45.270204,53.196818 -0.552272,0.572728 -0.961364,-0.961364 0,-4.090909 1.513636,-1.534091 0,6.013636 z m -0.286363,-6.3 -1.513637,1.534091 -4.970454,0 -1.513637,-1.534091 7.997728,0 z m -6.75,5.911364 -0.961364,0.961364 -0.572727,-0.572728 0,-6.013636 1.534091,1.534091 0,4.090909 z m 7.036363,8.120455 -1.513636,-1.534091 0,-4.090909 0.961364,-0.961364 0.552272,0.593182 0,5.993182 z m -0.286363,0.286363 -7.997728,0 1.513637,-1.534091 4.970454,0 1.513637,1.534091 z m -6.75, [...]
+      </g>
+      <g
+         id="text4769-3-3-0"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4330"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 67.563719,28.791591 0,5.993182 -1.534091,-1.534091 0,-4.090909 0.961364,-0.961364 0.572727,0.593182 z m -1.534091,-2.127273 0,-4.090909 1.534091,-1.534091 0,6.013637 -0.572727,0.572727 -0.961364,-0.961364 z" />
+        <path
+           id="path4332"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 70.977391,35.071136 0,-1.53409 1.534091,0 0,1.53409 -1.534091,0 z" />
+        <path
+           id="path4334"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 83.21656,20.752955 -1.513636,1.534091 -4.970455,0 -1.513636,-1.534091 7.997727,0 z m 0,14.318181 -7.997727,0 1.513636,-1.53409 4.970455,0 1.513636,1.53409 z m -8.284091,-8.018181 0,-6.013637 1.534091,1.534091 0,4.090909 -0.961364,0.961364 -0.572727,-0.572727 z m 8.570455,1.738636 0,5.993182 -1.513637,-1.534091 0,-4.090909 0.961364,-0.961364 0.552273,0.593182 z m -1.615909,-1.636364 0.777272,0.756819 -0.777272,0.756818 -5.338637,0 -0.756818,-0.756818 0.756818,-0.756819 5.3 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4337"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 107.67709,46.948088 -1.51364,1.534091 -4.97045,0 -1.513638,-1.534091 7.997728,0 z m 0,14.318182 -7.997728,0 1.513638,-1.534091 4.97045,0 1.51364,1.534091 z m -6.75,-5.911364 0,4.090909 -1.534092,1.534091 0,-5.993182 0.572728,-0.593182 0.961364,0.961364 z m 5.52273,-2.495454 0,-4.09091 1.51363,-1.53409 0,6.013636 -0.55227,0.572727 -0.96136,-0.961363 z m -0.10228,0.490909 0.77728,0.756818 -0.77728,0.756818 -5.33863,0 -0.75682,-0.756818 0.75682,-0.756818 5.33863,0 z" />
+        <path
+           id="path4339"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 110.42327,61.26627 0,-1.534091 1.53409,0 0,1.534091 -1.53409,0 z" />
+        <path
+           id="path4341"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 122.9488,53.248088 -0.55227,0.572727 -0.96136,-0.961363 0,-4.09091 1.51363,-1.53409 0,6.013636 z m -0.28636,-6.3 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m -6.75,5.911364 -0.96136,0.961363 -0.57273,-0.572727 0,-6.013636 1.53409,1.53409 0,4.09091 z m 7.03636,8.120454 -1.51363,-1.534091 0,-4.090909 0.96136,-0.961364 0.55227,0.593182 0,5.993182 z m -0.28636,0.286364 -7.99773,0 1.51364,-1.534091 4.97045,0 1.51364,1.534091 z m -6.75,-1.820455 -1.53409,1.5340 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4344"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 107.00009,95.273119 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m 0,14.318181 -7.99773,0 1.51364,-1.53409 4.97045,0 1.51364,1.53409 z m -6.75,-5.91136 0,4.09091 -1.534094,1.53409 0,-5.99318 0.572728,-0.59319 0.961366,0.96137 z m 5.52272,-2.49546 0,-4.090906 1.51364,-1.534091 0,6.013637 -0.55227,0.57273 -0.96137,-0.96137 z m -0.10227,0.49091 0.77727,0.75682 -0.77727,0.75682 -5.33863,0 -0.756823,-0.75682 0.756823,-0.75682 5.33863,0 z" />
+        <path
+           id="path4346"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 109.74627,109.5913 0,-1.53409 1.53409,0 0,1.53409 -1.53409,0 z" />
+        <path
+           id="path4348"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 121.98544,95.273119 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m 0,14.318181 -7.99773,0 1.51364,-1.53409 4.97045,0 1.51364,1.53409 z m -8.28409,-8.01818 0,-6.013637 1.53409,1.534091 0,4.090906 -0.96136,0.96137 -0.57273,-0.57273 z m 8.57045,1.73864 0,5.99318 -1.51363,-1.53409 0,-4.09091 0.96136,-0.96137 0.55227,0.59319 z m -1.61591,-1.63637 0.77728,0.75682 -0.77728,0.75682 -5.33863,0 -0.75682,-0.75682 0.75682,-0.75682 5.33863,0 z" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tacho_percent_back.svg b/skins/blackhole/themes/default/skinparts/tacho_percent_back.svg
new file mode 100644
index 0000000..7541297
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tacho_percent_back.svg
@@ -0,0 +1,749 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="tacho_percent_back.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4633">
+      <stop
+         style="stop-color:#e6e6e6;stop-opacity:1;"
+         offset="0"
+         id="stop4635" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4637" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4620">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop4622" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:0;"
+         offset="1"
+         id="stop4624" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4620"
+       id="radialGradient4626"
+       cx="110.27615"
+       cy="12.330762"
+       fx="110.27615"
+       fy="12.330762"
+       r="74.998166"
+       gradientTransform="matrix(-1.8628953,0.67964205,-0.52439662,-1.4373683,322.17528,-44.829535)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4633"
+       id="linearGradient4643"
+       x1="80.356987"
+       y1="68.492752"
+       x2="68.958046"
+       y2="80.47979"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.94150667,0,0,0.94152267,4.3869559,4.3857232)" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4263"
+       x="-0.05507957"
+       width="1.1101591"
+       y="-0.026737965"
+       height="1.0534759">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.39862517"
+         id="feGaussianBlur4265" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="65.064049"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Uhr"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Ziffernblatt" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Ziffern">
+    <g
+       id="g4406">
+      <path
+         sodipodi:open="true"
+         d="M 28.394987,19.250286 A 72.763588,72.685867 0 0 1 130.82373,28.448256 72.763588,72.685867 0 0 1 121.73828,130.77851 72.763588,72.685867 0 0 1 19.28783,121.82499 72.763588,72.685867 0 0 1 28.128539,19.473353"
+         sodipodi:end="4.012464"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="72.685867"
+         sodipodi:rx="72.763588"
+         sodipodi:cy="75.070084"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4618"
+         style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;stroke:url(#radialGradient4626);stroke-width:4.494;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 70.175796,69.215654 A 7.5318813,7.5319991 0 0 1 80.778362,70.168778 7.5318813,7.5319991 0 0 1 79.837929,80.772642 7.5318813,7.5319991 0 0 1 69.233115,79.844873 7.5318813,7.5319991 0 0 1 70.14819,69.23879"
+         sodipodi:open="true"
+         sodipodi:end="4.0124596"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="7.5319991"
+         sodipodi:rx="7.5318813"
+         sodipodi:cy="74.999924"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4631"
+         style="display:inline;opacity:0.75;fill:url(#linearGradient4643);fill-opacity:1;stroke:#999999;stroke-width:0.94151461;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4245"
+         d="m 128.27004,104.31786 c 4.05369,-9.895602 6.31749,-18.412239 6.97609,-29.704639 l 10.35162,0 c -0.28964,12.8754 -3.86039,23.940773 -9.22644,35.780599 z"
+         style="display:inline;fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4263)" />
+      <rect
+         inkscape:transform-center-y="63.763147"
+         inkscape:transform-center-x="-1.380587e-005"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4651"
+         width="1.999997"
+         height="14.240295"
+         x="74.000023"
+         y="131.489" />
+      <rect
+         inkscape:transform-center-y="55.220514"
+         inkscape:transform-center-x="31.881558"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4656"
+         width="1.999997"
+         height="14.240295"
+         x="101.37493"
+         y="83.961533"
+         transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)" />
+      <rect
+         transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
+         y="29.114088"
+         x="101.31856"
+         height="14.240295"
+         width="1.999997"
+         id="rect4658"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220498"
+         inkscape:transform-center-y="31.881587" />
+      <rect
+         inkscape:transform-center-y="1.4955199e-005"
+         inkscape:transform-center-x="63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4660"
+         width="1.999997"
+         height="14.240295"
+         x="73.846016"
+         y="-18.357008"
+         transform="matrix(0,1,-1,0,0,0)" />
+      <rect
+         transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
+         y="-45.731911"
+         x="26.31855"
+         height="14.240295"
+         width="1.999997"
+         id="rect4662"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220514"
+         inkscape:transform-center-y="-31.881561" />
+      <rect
+         inkscape:transform-center-y="-55.220498"
+         inkscape:transform-center-x="31.881587"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4664"
+         width="1.999997"
+         height="14.240295"
+         x="-28.528894"
+         y="-45.675541"
+         transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,0,0)" />
+      <rect
+         transform="scale(-1,-1)"
+         y="-18.203001"
+         x="-75.999992"
+         height="14.240295"
+         width="1.999997"
+         id="rect4666"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="1.2844736e-005"
+         inkscape:transform-center-y="-63.763147" />
+      <rect
+         inkscape:transform-center-y="-55.220513"
+         inkscape:transform-center-x="-31.881559"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4668"
+         width="1.999997"
+         height="14.240295"
+         x="-103.37489"
+         y="29.324465"
+         transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
+      <rect
+         transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
+         y="84.171913"
+         x="-103.31852"
+         height="14.240295"
+         width="1.999997"
+         id="rect4670"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220498"
+         inkscape:transform-center-y="-31.881592" />
+      <rect
+         inkscape:transform-center-y="-2.044845e-005"
+         inkscape:transform-center-x="-63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4672"
+         width="1.999997"
+         height="14.240295"
+         x="-75.845978"
+         y="131.64301"
+         transform="matrix(0,-1,1,0,0,0)" />
+      <rect
+         transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
+         y="159.01791"
+         x="-28.318512"
+         height="14.240295"
+         width="1.999997"
+         id="rect4674"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220518"
+         inkscape:transform-center-y="31.881558" />
+      <rect
+         transform="matrix(0.9945219,0.10452846,-0.10452846,0.9945219,0,0)"
+         y="126.76038"
+         x="81.426651"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4676"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="6.8351622"
+         inkscape:transform-center-y="65.032436" />
+      <rect
+         transform="matrix(0.9781476,0.20791169,-0.20791169,0.9781476,0,0)"
+         inkscape:transform-center-y="63.961713"
+         inkscape:transform-center-x="13.595462"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4688"
+         width="1.9999983"
+         height="10.718534"
+         x="87.950188"
+         y="117.77891" />
+      <rect
+         y="108.16473"
+         x="93.499168"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4690"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="20.206801"
+         inkscape:transform-center-y="62.190201"
+         transform="matrix(0.95105652,0.30901699,-0.30901699,0.95105652,0,0)" />
+      <rect
+         transform="matrix(0.91354546,0.40673664,-0.40673664,0.91354546,0,0)"
+         inkscape:transform-center-y="59.737327"
+         inkscape:transform-center-x="26.596754"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4692"
+         width="1.9999983"
+         height="10.718534"
+         x="98.012794"
+         y="98.023193" />
+      <rect
+         y="76.607063"
+         x="103.74807"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4694"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="38.435639"
+         inkscape:transform-center-y="52.902143"
+         transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+      <rect
+         transform="matrix(0.74314483,0.6691306,-0.6691306,0.74314483,0,0)"
+         inkscape:transform-center-y="48.594723"
+         inkscape:transform-center-x="43.754863"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4696"
+         width="1.9999983"
+         height="10.718534"
+         x="104.90688"
+         y="65.567108" />
+      <rect
+         y="54.466499"
+         x="104.90536"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4698"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="48.5947"
+         inkscape:transform-center-y="43.754887"
+         transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,0,0)" />
+      <rect
+         transform="matrix(0.58778526,0.80901699,-0.80901699,0.58778526,0,0)"
+         inkscape:transform-center-y="38.435662"
+         inkscape:transform-center-x="52.902125"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4700"
+         width="1.9999983"
+         height="10.718534"
+         x="103.74351"
+         y="43.426861" />
+      <rect
+         y="22.012312"
+         x="98.002342"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4702"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="59.737308"
+         inkscape:transform-center-y="26.596781"
+         transform="matrix(0.40673665,0.91354545,-0.91354545,0.40673665,0,0)" />
+      <rect
+         transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)"
+         inkscape:transform-center-y="20.206832"
+         inkscape:transform-center-x="62.190182"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4704"
+         width="1.9999983"
+         height="10.718534"
+         x="93.485924"
+         y="11.872024" />
+      <rect
+         y="2.2593789"
+         x="87.934296"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4706"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="63.961687"
+         inkscape:transform-center-y="13.595491"
+         transform="matrix(0.2079117,0.9781476,-0.9781476,0.2079117,0,0)" />
+      <rect
+         transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,0,0)"
+         inkscape:transform-center-y="6.8351958"
+         inkscape:transform-center-x="65.032414"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4708"
+         width="1.9999983"
+         height="10.718534"
+         x="81.408287"
+         y="-6.720304" />
+      <rect
+         y="-22.395264"
+         x="65.729012"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4710"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="65.032416"
+         inkscape:transform-center-y="-6.8351727"
+         transform="matrix(-0.10452846,0.9945219,-0.9945219,-0.10452846,0,0)" />
+      <rect
+         transform="matrix(-0.20791169,0.9781476,-0.9781476,-0.20791169,0,0)"
+         inkscape:transform-center-y="-13.595466"
+         inkscape:transform-center-x="63.961692"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4712"
+         width="1.9999983"
+         height="10.718534"
+         x="56.747536"
+         y="-28.918802" />
+      <rect
+         y="-34.467785"
+         x="47.133366"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4714"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="62.190189"
+         inkscape:transform-center-y="-20.206804"
+         transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+      <rect
+         transform="matrix(-0.40673664,0.91354546,-0.91354546,-0.40673664,0,0)"
+         inkscape:transform-center-y="-26.596753"
+         inkscape:transform-center-x="59.737318"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4716"
+         width="1.9999983"
+         height="10.718534"
+         x="36.991837"
+         y="-38.981415" />
+      <rect
+         y="-44.716694"
+         x="15.575709"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4718"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="52.902137"
+         inkscape:transform-center-y="-38.435636"
+         transform="matrix(-0.58778525,0.809017,-0.809017,-0.58778525,0,0)" />
+      <rect
+         transform="matrix(-0.6691306,0.74314483,-0.74314483,-0.6691306,0,0)"
+         inkscape:transform-center-y="-43.754862"
+         inkscape:transform-center-x="48.594717"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4720"
+         width="1.9999983"
+         height="10.718534"
+         x="4.5357528"
+         y="-45.875504" />
+      <rect
+         y="-45.873978"
+         x="-6.5648546"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4722"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="43.754881"
+         inkscape:transform-center-y="-48.594699"
+         transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,0,0)" />
+      <rect
+         transform="matrix(-0.80901699,0.58778526,-0.58778526,-0.80901699,0,0)"
+         inkscape:transform-center-y="-52.902122"
+         inkscape:transform-center-x="38.435657"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4724"
+         width="1.9999983"
+         height="10.718534"
+         x="-17.604492"
+         y="-44.712132" />
+      <rect
+         y="-38.970963"
+         x="-39.019043"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4726"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="26.596775"
+         inkscape:transform-center-y="-59.737308"
+         transform="matrix(-0.91354545,0.40673665,-0.40673665,-0.91354545,0,0)" />
+      <rect
+         transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,0,0)"
+         inkscape:transform-center-y="-62.190181"
+         inkscape:transform-center-x="20.206825"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4728"
+         width="1.9999983"
+         height="10.718534"
+         x="-49.159332"
+         y="-34.454544" />
+      <rect
+         y="-28.902918"
+         x="-58.771976"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4730"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="13.595486"
+         inkscape:transform-center-y="-63.961685"
+         transform="matrix(-0.9781476,0.2079117,-0.2079117,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,0,0)"
+         inkscape:transform-center-y="-65.032411"
+         inkscape:transform-center-x="6.8351958"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4732"
+         width="1.9999983"
+         height="10.718534"
+         x="-67.751656"
+         y="-22.376909" />
+      <rect
+         y="2.2838387"
+         x="-89.95015"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4734"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-13.59546"
+         inkscape:transform-center-y="-63.961689"
+         transform="matrix(-0.9781476,-0.20791169,0.20791169,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.9945219,-0.10452846,0.10452846,-0.9945219,0,0)"
+         inkscape:transform-center-y="-65.032413"
+         inkscape:transform-center-x="-6.8351672"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4736"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.426613"
+         y="-6.6976385" />
+      <rect
+         transform="matrix(-0.95105652,-0.30901699,0.30901699,-0.95105652,0,0)"
+         inkscape:transform-center-y="-62.190189"
+         inkscape:transform-center-x="-20.2068"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4738"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.49913"
+         y="11.89801" />
+      <rect
+         y="22.039541"
+         x="-100.01276"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4740"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-26.596747"
+         inkscape:transform-center-y="-59.737321"
+         transform="matrix(-0.91354546,-0.40673664,0.40673664,-0.91354546,0,0)" />
+      <rect
+         transform="matrix(-0.74314483,-0.6691306,0.6691306,-0.74314483,0,0)"
+         inkscape:transform-center-y="-48.594714"
+         inkscape:transform-center-x="-43.75486"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4742"
+         width="1.9999983"
+         height="10.718534"
+         x="-106.90685"
+         y="54.495621" />
+      <rect
+         y="43.455666"
+         x="-105.74803"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4744"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-38.435629"
+         inkscape:transform-center-y="-52.902142"
+         transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)" />
+      <rect
+         y="65.59623"
+         x="-106.90533"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4746"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-48.594699"
+         inkscape:transform-center-y="-43.754879"
+         transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,0,0)" />
+      <rect
+         transform="matrix(-0.58778526,-0.80901699,0.80901699,-0.58778526,0,0)"
+         inkscape:transform-center-y="-38.435656"
+         inkscape:transform-center-x="-52.902119"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4748"
+         width="1.9999983"
+         height="10.718534"
+         x="-105.74348"
+         y="76.635864" />
+      <rect
+         y="98.050407"
+         x="-100.00231"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4750"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-59.737299"
+         inkscape:transform-center-y="-26.596772"
+         transform="matrix(-0.40673665,-0.91354545,0.91354545,-0.40673665,0,0)" />
+      <rect
+         transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)"
+         inkscape:transform-center-y="-20.206824"
+         inkscape:transform-center-x="-62.190172"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4752"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.485893"
+         y="108.1907" />
+      <rect
+         y="117.80334"
+         x="-89.934265"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4754"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-63.961672"
+         inkscape:transform-center-y="-13.595487"
+         transform="matrix(-0.2079117,-0.9781476,0.9781476,-0.2079117,0,0)" />
+      <rect
+         transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,0,0)"
+         inkscape:transform-center-y="-6.8351946"
+         inkscape:transform-center-x="-65.032398"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4756"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.408257"
+         y="126.78302" />
+      <rect
+         y="142.45798"
+         x="-67.728981"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4758"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-65.032401"
+         inkscape:transform-center-y="6.8351634"
+         transform="matrix(0.10452846,-0.9945219,0.9945219,0.10452846,0,0)" />
+      <rect
+         transform="matrix(0.20791169,-0.9781476,0.9781476,0.20791169,0,0)"
+         inkscape:transform-center-y="13.595459"
+         inkscape:transform-center-x="-63.961682"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4760"
+         width="1.9999983"
+         height="10.718534"
+         x="-58.747505"
+         y="148.98152" />
+      <rect
+         y="154.5305"
+         x="-49.133335"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4762"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-62.190181"
+         inkscape:transform-center-y="20.206799"
+         transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" />
+      <rect
+         transform="matrix(0.40673664,-0.91354546,0.91354546,0.40673664,0,0)"
+         inkscape:transform-center-y="26.596748"
+         inkscape:transform-center-x="-59.737308"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4764"
+         width="1.9999983"
+         height="10.718534"
+         x="-38.991806"
+         y="159.04413" />
+      <g
+         id="text4769"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4320"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 79.220289,121.62794 -0.552273,0.57272 -0.961363,-0.96136 0,-4.09091 1.513636,-1.53409 0,6.01364 z m -0.286364,-6.3 -1.513636,1.53409 -4.970455,0 -1.513636,-1.53409 7.997727,0 z m -6.75,5.91136 -0.961363,0.96136 -0.572728,-0.57272 0,-6.01364 1.534091,1.53409 0,4.09091 z m 7.036364,8.12045 -1.513636,-1.53409 0,-4.09091 0.961363,-0.96136 0.552273,0.59318 0,5.99318 z m -0.286364,0.28637 -7.997727,0 1.513636,-1.53409 4.970455,0 1.513636,1.53409 z m -6.75,-1.82046 -1.534091,1.5 [...]
+      </g>
+      <g
+         id="text4769-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4323"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 37.914632,95.356821 -1.513636,1.534091 -4.970454,0 -1.513637,-1.534091 7.997727,0 z m 0,14.318179 -7.997727,0 1.513637,-1.53409 4.970454,0 1.513636,1.53409 z m -6.75,-5.91136 0,4.09091 -1.53409,1.53409 0,-5.99318 0.572727,-0.59318 0.961363,0.96136 z m 5.522728,-2.49546 0,-4.090904 1.513636,-1.534091 0,6.013635 -0.552273,0.57273 -0.961363,-0.96137 z m -0.102273,0.49091 0.777273,0.75682 -0.777273,0.75682 -5.338636,0 -0.756819,-0.75682 0.756819,-0.75682 5.338636,0 z" />
+        <path
+           id="path4325"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 49.23127,101.65682 -0.552273,0.57273 -0.961364,-0.96137 0,-4.090904 1.513637,-1.534091 0,6.013635 z m -0.286364,-6.299999 -1.513636,1.534091 -4.970455,0 -1.513636,-1.534091 7.997727,0 z m -6.75,5.911359 -0.961364,0.96137 -0.572727,-0.57273 0,-6.013635 1.534091,1.534091 0,4.090904 z m 7.036364,8.12046 -1.513637,-1.53409 0,-4.09091 0.961364,-0.96136 0.552273,0.59318 0,5.99318 z m -0.286364,0.28636 -7.997727,0 1.513636,-1.53409 4.970455,0 1.513636,1.53409 z m -6.75,-1.82045  [...]
+      </g>
+      <g
+         id="text4769-3-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4328"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 26.856,53.196818 0,-6.013636 1.534091,1.534091 0,4.090909 -0.961364,0.961364 L 26.856,53.196818 Z m 8.570454,1.738637 0,5.993182 -1.513636,-1.534091 0,-4.090909 0.961364,-0.961364 0.552272,0.593182 z m -1.513636,-2.127273 0,-4.090909 1.513636,-1.534091 0,6.013636 -0.552272,0.572728 -0.961364,-0.961364 z m -0.102273,0.490909 0.777273,0.756818 -0.777273,0.756818 -5.338636,0 -0.756818,-0.756818 0.756818,-0.756818 5.338636,0 z" />
+        <path
+           id="path4330"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 46.456728,53.196818 -0.552273,0.572728 -0.961364,-0.961364 0,-4.090909 1.513637,-1.534091 0,6.013636 z m -0.286364,-6.3 -1.513636,1.534091 -4.970455,0 -1.513636,-1.534091 7.997727,0 z m -6.75,5.911364 -0.961364,0.961364 -0.572727,-0.572728 0,-6.013636 1.534091,1.534091 0,4.090909 z m 7.036364,8.120455 -1.513637,-1.534091 0,-4.090909 0.961364,-0.961364 0.552273,0.593182 0,5.993182 z m -0.286364,0.286363 -7.997727,0 1.513636,-1.534091 4.970455,0 1.513636,1.534091 z m -6.75, [...]
+      </g>
+      <g
+         id="text4769-3-3-0"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4333"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 73.37281,20.752955 -1.513636,1.534091 -4.970455,0 -1.513636,-1.534091 7.997727,0 z m 0,14.318181 -7.997727,0 1.513636,-1.53409 4.970455,0 1.513636,1.53409 z m -6.75,-5.911363 0,4.090909 -1.534091,1.534091 0,-5.993182 0.572727,-0.593182 0.961364,0.961364 z m -1.534091,-2.106818 0,-6.013637 1.534091,1.534091 0,4.090909 -0.961364,0.961364 -0.572727,-0.572727 z m 8.570455,1.738636 0,5.993182 -1.513637,-1.534091 0,-4.090909 0.961364,-0.961364 0.552273,0.593182 z m -1.615909,-1 [...]
+        <path
+           id="path4335"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 84.689447,27.052955 -0.552273,0.572727 -0.961363,-0.961364 0,-4.090909 1.513636,-1.534091 0,6.013637 z m -0.286364,-6.3 -1.513636,1.534091 -4.970454,0 -1.513637,-1.534091 7.997727,0 z m -6.75,5.911363 -0.961363,0.961364 -0.572727,-0.572727 0,-6.013637 1.53409,1.534091 0,4.090909 z m 7.036364,8.120455 -1.513636,-1.534091 0,-4.090909 0.961363,-0.961364 0.552273,0.593182 0,5.993182 z m -0.286364,0.286363 -7.997727,0 1.513637,-1.53409 4.970454,0 1.513636,1.53409 z m -6.75,-1. [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4338"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 110.77677,46.948088 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m 0,14.318182 -7.99773,0 1.51364,-1.534091 4.97045,0 1.51364,1.534091 z m -6.75,-5.911364 0,4.090909 -1.53409,1.534091 0,-5.993182 0.57272,-0.593182 0.96137,0.961364 z m -1.53409,-2.106818 0,-6.013636 1.53409,1.53409 0,4.09091 -0.96137,0.961363 -0.57272,-0.572727 z m 8.57045,1.738636 0,5.993182 -1.51364,-1.534091 0,-4.090909 0.96137,-0.961364 0.55227,0.593182 z m -1.51364,-2.127272 0,-4.09091  [...]
+        <path
+           id="path4340"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 122.0934,53.248088 -0.55227,0.572727 -0.96136,-0.961363 0,-4.09091 1.51363,-1.53409 0,6.013636 z m -0.28636,-6.3 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m -6.75,5.911364 -0.96136,0.961363 -0.57273,-0.572727 0,-6.013636 1.53409,1.53409 0,4.09091 z m 7.03636,8.120454 -1.51363,-1.534091 0,-4.090909 0.96136,-0.961364 0.55227,0.593182 0,5.993182 z m -0.28636,0.286364 -7.99773,0 1.51364,-1.534091 4.97045,0 1.51364,1.534091 z m -6.75,-1.820455 -1.53409,1.5340 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4343"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 98.490885,103.31176 0,5.99318 -1.534091,-1.53409 0,-4.09091 0.961364,-0.96137 0.572727,0.59319 z m -1.534091,-2.12728 0,-4.090906 1.534091,-1.534091 0,6.013637 -0.572727,0.57273 -0.961364,-0.96137 z" />
+        <path
+           id="path4345"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 110.47501,101.57312 -0.55227,0.57273 -0.96136,-0.96137 0,-4.090906 1.51363,-1.534091 0,6.013637 z m -0.28636,-6.300001 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m -6.75,5.911361 -0.96137,0.96137 -0.57272,-0.57273 0,-6.013637 1.53409,1.534091 0,4.090906 z m 7.03636,8.12046 -1.51363,-1.53409 0,-4.09091 0.96136,-0.96137 0.55227,0.59319 0,5.99318 z m -0.28636,0.28636 -7.99773,0 1.51364,-1.53409 4.97045,0 1.51364,1.53409 z m -6.75,-1.82045 -1.53409,1.53409 0, [...]
+        <path
+           id="path4347"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 121.50528,101.57312 -0.55227,0.57273 -0.96136,-0.96137 0,-4.090906 1.51363,-1.534091 0,6.013637 z m -0.28636,-6.300001 -1.51364,1.534091 -4.97045,0 -1.51364,-1.534091 7.99773,0 z m -6.75,5.911361 -0.96136,0.96137 -0.57273,-0.57273 0,-6.013637 1.53409,1.534091 0,4.090906 z m 7.03636,8.12046 -1.51363,-1.53409 0,-4.09091 0.96136,-0.96137 0.55227,0.59319 0,5.99318 z m -0.28636,0.28636 -7.99773,0 1.51364,-1.53409 4.97045,0 1.51364,1.53409 z m -6.75,-1.82045 -1.53409,1.53409 0, [...]
+      </g>
+      <g
+         id="text6300"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4350"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+           d="m 96.274659,116.5055 -1.009091,1.03637 -2.181818,0 -1.009091,-1.03637 1.009091,-1.00909 2.181818,0 1.009091,1.00909 z m 0,6.62727 -1.009091,1.0091 -2.181818,0 -1.009091,-1.0091 1.009091,-1.03636 2.181818,0 1.009091,1.03636 z m -5.590909,-1.41818 1.009091,0.98182 1.036363,-0.98182 0,-3.79091 -1.036363,-1.03636 -1.009091,1.03636 0,3.79091 z m 4.936363,0 0,-3.79091 1.036364,-1.03636 1.009091,1.03636 0,3.79091 -1.009091,0.98182 -1.036364,-0.98182 z m 8.536367,5.42728 -1.00909,1 [...]
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tacho_temp_back.svg b/skins/blackhole/themes/default/skinparts/tacho_temp_back.svg
new file mode 100644
index 0000000..a7c544f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tacho_temp_back.svg
@@ -0,0 +1,640 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="tacho_temp_back.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4633">
+      <stop
+         style="stop-color:#e6e6e6;stop-opacity:1;"
+         offset="0"
+         id="stop4635" />
+      <stop
+         style="stop-color:#999999;stop-opacity:1"
+         offset="1"
+         id="stop4637" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4620">
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:1;"
+         offset="0"
+         id="stop4622" />
+      <stop
+         style="stop-color:#b3b3b3;stop-opacity:0;"
+         offset="1"
+         id="stop4624" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4620"
+       id="radialGradient4626"
+       cx="110.27615"
+       cy="12.330762"
+       fx="110.27615"
+       fy="12.330762"
+       r="74.998166"
+       gradientTransform="matrix(-1.8628953,0.67964205,-0.52439662,-1.4373683,322.17528,-44.829535)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4633"
+       id="linearGradient4643"
+       x1="80.356987"
+       y1="68.492752"
+       x2="68.958046"
+       y2="80.47979"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.94150667,0,0,0.94152267,4.3869559,4.3857232)" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4263"
+       x="-0.05507957"
+       width="1.1101591"
+       y="-0.026737965"
+       height="1.0534759">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.39862517"
+         id="feGaussianBlur4265" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Uhr"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Ziffernblatt"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Ziffern"
+     style="display:inline">
+    <g
+       id="g4294">
+      <path
+         sodipodi:open="true"
+         d="M 28.394987,19.250286 A 72.763588,72.685867 0 0 1 130.82373,28.448256 72.763588,72.685867 0 0 1 121.73828,130.77851 72.763588,72.685867 0 0 1 19.28783,121.82499 72.763588,72.685867 0 0 1 28.128539,19.473353"
+         sodipodi:end="4.012464"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="72.685867"
+         sodipodi:rx="72.763588"
+         sodipodi:cy="75.070084"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4618"
+         style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;stroke:url(#radialGradient4626);stroke-width:4.49399996;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 70.175796,69.215654 A 7.5318813,7.5319991 0 0 1 80.778362,70.168778 7.5318813,7.5319991 0 0 1 79.837929,80.772642 7.5318813,7.5319991 0 0 1 69.233115,79.844873 7.5318813,7.5319991 0 0 1 70.14819,69.23879"
+         sodipodi:open="true"
+         sodipodi:end="4.0124596"
+         sodipodi:start="4.0172418"
+         sodipodi:ry="7.5319991"
+         sodipodi:rx="7.5318813"
+         sodipodi:cy="74.999924"
+         sodipodi:cx="74.999954"
+         sodipodi:type="arc"
+         id="path4631"
+         style="display:inline;opacity:0.75;fill:url(#linearGradient4643);fill-opacity:1;stroke:#999999;stroke-width:0.94151461;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4245"
+         d="m 128.27004,104.31786 c 4.05369,-9.895602 6.31749,-18.412239 6.97609,-29.704639 l 10.35162,0 c -0.28964,12.8754 -3.86039,23.940773 -9.22644,35.780599 z"
+         style="display:inline;fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4263)" />
+      <rect
+         transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
+         y="29.114088"
+         x="101.31856"
+         height="14.240295"
+         width="1.999997"
+         id="rect4658"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220498"
+         inkscape:transform-center-y="31.881587" />
+      <rect
+         inkscape:transform-center-y="1.4955199e-005"
+         inkscape:transform-center-x="63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4660"
+         width="1.999997"
+         height="14.240295"
+         x="73.846016"
+         y="-18.357008"
+         transform="matrix(0,1,-1,0,0,0)" />
+      <rect
+         transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
+         y="-45.731911"
+         x="26.31855"
+         height="14.240295"
+         width="1.999997"
+         id="rect4662"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="55.220514"
+         inkscape:transform-center-y="-31.881561" />
+      <rect
+         inkscape:transform-center-y="-55.220498"
+         inkscape:transform-center-x="31.881587"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4664"
+         width="1.999997"
+         height="14.240295"
+         x="-28.528894"
+         y="-45.675541"
+         transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,0,0)" />
+      <rect
+         transform="scale(-1,-1)"
+         y="-18.203001"
+         x="-75.999992"
+         height="14.240295"
+         width="1.999997"
+         id="rect4666"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="1.2844736e-005"
+         inkscape:transform-center-y="-63.763147" />
+      <rect
+         inkscape:transform-center-y="-55.220513"
+         inkscape:transform-center-x="-31.881559"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4668"
+         width="1.999997"
+         height="14.240295"
+         x="-103.37489"
+         y="29.324465"
+         transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
+      <rect
+         transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
+         y="84.171913"
+         x="-103.31852"
+         height="14.240295"
+         width="1.999997"
+         id="rect4670"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220498"
+         inkscape:transform-center-y="-31.881592" />
+      <rect
+         inkscape:transform-center-y="-2.044845e-005"
+         inkscape:transform-center-x="-63.763147"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4672"
+         width="1.999997"
+         height="14.240295"
+         x="-75.845978"
+         y="131.64301"
+         transform="matrix(0,-1,1,0,0,0)" />
+      <rect
+         transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
+         y="159.01791"
+         x="-28.318512"
+         height="14.240295"
+         width="1.999997"
+         id="rect4674"
+         style="display:inline;opacity:1;fill:#cccccc;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-55.220518"
+         inkscape:transform-center-y="31.881558" />
+      <rect
+         y="22.012312"
+         x="98.002342"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4702"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="59.737308"
+         inkscape:transform-center-y="26.596781"
+         transform="matrix(0.40673665,0.91354545,-0.91354545,0.40673665,0,0)" />
+      <rect
+         transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)"
+         inkscape:transform-center-y="20.206832"
+         inkscape:transform-center-x="62.190182"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4704"
+         width="1.9999983"
+         height="10.718534"
+         x="93.485924"
+         y="11.872024" />
+      <rect
+         y="2.2593789"
+         x="87.934296"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4706"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="63.961687"
+         inkscape:transform-center-y="13.595491"
+         transform="matrix(0.2079117,0.9781476,-0.9781476,0.2079117,0,0)" />
+      <rect
+         transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,0,0)"
+         inkscape:transform-center-y="6.8351958"
+         inkscape:transform-center-x="65.032414"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4708"
+         width="1.9999983"
+         height="10.718534"
+         x="81.408287"
+         y="-6.720304" />
+      <rect
+         y="-22.395264"
+         x="65.729012"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4710"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="65.032416"
+         inkscape:transform-center-y="-6.8351727"
+         transform="matrix(-0.10452846,0.9945219,-0.9945219,-0.10452846,0,0)" />
+      <rect
+         transform="matrix(-0.20791169,0.9781476,-0.9781476,-0.20791169,0,0)"
+         inkscape:transform-center-y="-13.595466"
+         inkscape:transform-center-x="63.961692"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4712"
+         width="1.9999983"
+         height="10.718534"
+         x="56.747536"
+         y="-28.918802" />
+      <rect
+         y="-34.467785"
+         x="47.133366"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4714"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="62.190189"
+         inkscape:transform-center-y="-20.206804"
+         transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+      <rect
+         transform="matrix(-0.40673664,0.91354546,-0.91354546,-0.40673664,0,0)"
+         inkscape:transform-center-y="-26.596753"
+         inkscape:transform-center-x="59.737318"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4716"
+         width="1.9999983"
+         height="10.718534"
+         x="36.991837"
+         y="-38.981415" />
+      <rect
+         y="-44.716694"
+         x="15.575709"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4718"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="52.902137"
+         inkscape:transform-center-y="-38.435636"
+         transform="matrix(-0.58778525,0.809017,-0.809017,-0.58778525,0,0)" />
+      <rect
+         transform="matrix(-0.6691306,0.74314483,-0.74314483,-0.6691306,0,0)"
+         inkscape:transform-center-y="-43.754862"
+         inkscape:transform-center-x="48.594717"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4720"
+         width="1.9999983"
+         height="10.718534"
+         x="4.5357528"
+         y="-45.875504" />
+      <rect
+         y="-45.873978"
+         x="-6.5648546"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4722"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="43.754881"
+         inkscape:transform-center-y="-48.594699"
+         transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,0,0)" />
+      <rect
+         transform="matrix(-0.80901699,0.58778526,-0.58778526,-0.80901699,0,0)"
+         inkscape:transform-center-y="-52.902122"
+         inkscape:transform-center-x="38.435657"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4724"
+         width="1.9999983"
+         height="10.718534"
+         x="-17.604492"
+         y="-44.712132" />
+      <rect
+         y="-38.970963"
+         x="-39.019043"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4726"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="26.596775"
+         inkscape:transform-center-y="-59.737308"
+         transform="matrix(-0.91354545,0.40673665,-0.40673665,-0.91354545,0,0)" />
+      <rect
+         transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,0,0)"
+         inkscape:transform-center-y="-62.190181"
+         inkscape:transform-center-x="20.206825"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4728"
+         width="1.9999983"
+         height="10.718534"
+         x="-49.159332"
+         y="-34.454544" />
+      <rect
+         y="-28.902918"
+         x="-58.771976"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4730"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="13.595486"
+         inkscape:transform-center-y="-63.961685"
+         transform="matrix(-0.9781476,0.2079117,-0.2079117,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,0,0)"
+         inkscape:transform-center-y="-65.032411"
+         inkscape:transform-center-x="6.8351958"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4732"
+         width="1.9999983"
+         height="10.718534"
+         x="-67.751656"
+         y="-22.376909" />
+      <rect
+         y="2.2838387"
+         x="-89.95015"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4734"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-13.59546"
+         inkscape:transform-center-y="-63.961689"
+         transform="matrix(-0.9781476,-0.20791169,0.20791169,-0.9781476,0,0)" />
+      <rect
+         transform="matrix(-0.9945219,-0.10452846,0.10452846,-0.9945219,0,0)"
+         inkscape:transform-center-y="-65.032413"
+         inkscape:transform-center-x="-6.8351672"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4736"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.426613"
+         y="-6.6976385" />
+      <rect
+         transform="matrix(-0.95105652,-0.30901699,0.30901699,-0.95105652,0,0)"
+         inkscape:transform-center-y="-62.190189"
+         inkscape:transform-center-x="-20.2068"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4738"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.49913"
+         y="11.89801" />
+      <rect
+         y="22.039541"
+         x="-100.01276"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4740"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-26.596747"
+         inkscape:transform-center-y="-59.737321"
+         transform="matrix(-0.91354546,-0.40673664,0.40673664,-0.91354546,0,0)" />
+      <rect
+         transform="matrix(-0.74314483,-0.6691306,0.6691306,-0.74314483,0,0)"
+         inkscape:transform-center-y="-48.594714"
+         inkscape:transform-center-x="-43.75486"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4742"
+         width="1.9999983"
+         height="10.718534"
+         x="-106.90685"
+         y="54.495621" />
+      <rect
+         y="43.455666"
+         x="-105.74803"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4744"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-38.435629"
+         inkscape:transform-center-y="-52.902142"
+         transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)" />
+      <rect
+         y="65.59623"
+         x="-106.90533"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4746"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-48.594699"
+         inkscape:transform-center-y="-43.754879"
+         transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,0,0)" />
+      <rect
+         transform="matrix(-0.58778526,-0.80901699,0.80901699,-0.58778526,0,0)"
+         inkscape:transform-center-y="-38.435656"
+         inkscape:transform-center-x="-52.902119"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4748"
+         width="1.9999983"
+         height="10.718534"
+         x="-105.74348"
+         y="76.635864" />
+      <rect
+         y="98.050407"
+         x="-100.00231"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4750"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-59.737299"
+         inkscape:transform-center-y="-26.596772"
+         transform="matrix(-0.40673665,-0.91354545,0.91354545,-0.40673665,0,0)" />
+      <rect
+         transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)"
+         inkscape:transform-center-y="-20.206824"
+         inkscape:transform-center-x="-62.190172"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4752"
+         width="1.9999983"
+         height="10.718534"
+         x="-95.485893"
+         y="108.1907" />
+      <rect
+         y="117.80334"
+         x="-89.934265"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4754"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-63.961672"
+         inkscape:transform-center-y="-13.595487"
+         transform="matrix(-0.2079117,-0.9781476,0.9781476,-0.2079117,0,0)" />
+      <rect
+         transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,0,0)"
+         inkscape:transform-center-y="-6.8351946"
+         inkscape:transform-center-x="-65.032398"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4756"
+         width="1.9999983"
+         height="10.718534"
+         x="-83.408257"
+         y="126.78302" />
+      <rect
+         y="142.45798"
+         x="-67.728981"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4758"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-65.032401"
+         inkscape:transform-center-y="6.8351634"
+         transform="matrix(0.10452846,-0.9945219,0.9945219,0.10452846,0,0)" />
+      <rect
+         transform="matrix(0.20791169,-0.9781476,0.9781476,0.20791169,0,0)"
+         inkscape:transform-center-y="13.595459"
+         inkscape:transform-center-x="-63.961682"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4760"
+         width="1.9999983"
+         height="10.718534"
+         x="-58.747505"
+         y="148.98152" />
+      <rect
+         y="154.5305"
+         x="-49.133335"
+         height="10.718534"
+         width="1.9999983"
+         id="rect4762"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:transform-center-x="-62.190181"
+         inkscape:transform-center-y="20.206799"
+         transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" />
+      <rect
+         transform="matrix(0.40673664,-0.91354546,0.91354546,0.40673664,0,0)"
+         inkscape:transform-center-y="26.596748"
+         inkscape:transform-center-x="-59.737308"
+         style="display:inline;opacity:1;fill:#808080;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect4764"
+         width="1.9999983"
+         height="10.718534"
+         x="-38.991806"
+         y="159.04413" />
+      <g
+         id="text4769"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4222"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+           d="m 73.930286,127.34366 q 0,1.8457 -1.274414,3.12012 -1.274414,1.27441 -3.131103,1.27441 -1.85669,0 -3.131104,-1.26343 -1.274414,-1.27441 -1.274414,-3.1311 0,-1.8457 1.274414,-3.12012 1.274414,-1.27441 3.131104,-1.27441 1.867676,0 3.131103,1.27441 1.274414,1.27442 1.274414,3.12012 z m -1.812744,0 q 0,-1.12061 -0.736084,-1.87866 -0.736084,-0.76905 -1.856689,-0.76905 -1.120606,0 -1.85669,0.76905 -0.736084,0.75805 -0.736084,1.87866 0,1.14258 0.747071,1.90063 0.758056,0.74707 1.8 [...]
+        <path
+           id="path4224"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+           d="m 85.441881,125.28622 -1.513636,1.53409 -5.256819,0 -0.756818,-0.77727 0.756818,-0.75682 6.770455,0 z m -7.036364,5.91136 -0.961363,0.96137 -0.572728,-0.57273 0,-4.47955 0.756819,-0.77727 0.777272,0.77727 0,4.09091 z m 7.036364,8.40682 -6.770455,0 -0.756818,-0.75682 0.756818,-0.77727 5.256819,0 1.513636,1.53409 z m -7.036364,-1.82045 -0.777272,0.77727 -0.756819,-0.77727 0,-4.45909 0.572728,-0.59319 0.961363,0.96137 0,4.09091 z" />
+      </g>
+      <g
+         id="text4769-3-3-0-9-9"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4246"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 111.31015,100.62009 -1.26716,1.28429 -4.1611,0 -1.26717,-1.28429 6.69543,0 z m 0,11.98671 -6.69543,0 1.26717,-1.28429 4.1611,0 1.26716,1.28429 z m -5.65087,-4.9488 0,3.42477 -1.28429,1.28429 0,-5.01729 0.47947,-0.49659 0.80482,0.80482 z m -1.28429,-1.76376 0,-5.03441 1.28429,1.28429 0,3.42477 -0.80482,0.80482 -0.47947,-0.47947 z m 7.1749,1.45553 0,5.01729 -1.26717,-1.28429 0,-3.42477 0.80482,-0.80482 0.46235,0.49659 z m -1.26717,-1.78088 0,-3.42477 1.26717,-1.28429 0,5.03 [...]
+        <path
+           id="path4248"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000"
+           d="m 120.78407,105.89424 -0.46235,0.47947 -0.80482,-0.80482 0,-3.42477 1.26717,-1.28429 0,5.03441 z m -0.23974,-5.27415 -1.26716,1.28429 -4.1611,0 -1.26717,-1.28429 6.69543,0 z m -5.65087,4.9488 -0.80483,0.80482 -0.47946,-0.47947 0,-5.03441 1.28429,1.28429 0,3.42477 z m 5.89061,6.79817 -1.26717,-1.28429 0,-3.42477 0.80482,-0.80482 0.46235,0.49659 0,5.01729 z m -0.23974,0.23974 -6.69543,0 1.26717,-1.28429 4.1611,0 1.26716,1.28429 z m -5.65087,-1.52403 -1.28429,1.28429 0,-5.0172 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9-1-9-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4240"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 112.20966,45.414296 -1.26717,1.28429 -4.1611,0 -1.26716,-1.28429 6.69543,0 z m 0,11.986705 -6.69543,0 1.26716,-1.28429 4.1611,0 1.26717,1.28429 z m -5.65088,-4.948797 0,3.424773 -1.28429,1.28429 0,-5.017292 0.47947,-0.496592 0.80482,0.804821 z m -1.28429,-1.763758 0,-5.034416 1.28429,1.28429 0,3.424773 -0.80482,0.804822 -0.47947,-0.479469 z m 7.1749,1.455529 0,5.017292 -1.26716,-1.28429 0,-3.424773 0.80482,-0.804821 0.46234,0.496592 z m -1.35278,-1.369909 0.65071,0.633583 [...]
+        <path
+           id="path4242"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 121.68357,50.688446 -0.46234,0.479469 -0.80482,-0.804822 0,-3.424773 1.26716,-1.28429 0,5.034416 z m -0.23973,-5.27415 -1.26717,1.28429 -4.1611,0 -1.26716,-1.28429 6.69543,0 z m -5.65088,4.948797 -0.80482,0.804822 -0.47947,-0.479469 0,-5.034416 1.28429,1.28429 0,3.424773 z m 5.89061,6.798174 -1.26716,-1.28429 0,-3.424773 0.80482,-0.804821 0.46234,0.496592 0,5.017292 z m -0.23973,0.239734 -6.69543,0 1.26716,-1.28429 4.1611,0 1.26717,1.28429 z m -5.65088,-1.524024 -1.28429, [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9-1-9-4"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4235"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 66.393345,26.050339 0,-5.034416 1.28429,1.28429 0,3.424773 -0.804822,0.804821 -0.479468,-0.479468 z m 7.174899,1.455528 0,5.017293 -1.267166,-1.28429 0,-3.424773 0.804822,-0.804822 0.462344,0.496592 z m -1.267166,-1.780881 0,-3.424773 1.267166,-1.28429 0,5.034416 -0.462344,0.479468 -0.804822,-0.804821 z m -0.08562,0.410972 0.650707,0.633583 -0.650707,0.633583 -4.469329,0 -0.633582,-0.633583 0.633582,-0.633583 4.469329,0 z" />
+        <path
+           id="path4237"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffff00"
+           d="m 82.802422,26.050339 -0.462345,0.479468 -0.804821,-0.804821 0,-3.424773 1.267166,-1.28429 0,5.034416 z m -0.239734,-5.27415 -1.267166,1.28429 -4.161099,0 -1.267166,-1.28429 6.695431,0 z m -5.650875,4.948797 -0.804822,0.804821 -0.479468,-0.479468 0,-5.034416 1.28429,1.28429 0,3.424773 z m 5.890609,6.798174 -1.267166,-1.28429 0,-3.424773 0.804821,-0.804822 0.462345,0.496592 0,5.017293 z m -0.239734,0.239734 -6.695431,0 1.267166,-1.28429 4.161099,0 1.267166,1.28429 z m -5.650 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9-1-9-4-6-0"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4230"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 35.30512,45.660405 -1.267166,1.28429 -4.161099,0 -1.267165,-1.28429 6.69543,0 z m 0,11.986705 -6.69543,0 1.267165,-1.28429 4.161099,0 1.267166,1.28429 z m -5.650875,-4.948797 0,3.424773 -1.28429,1.28429 0,-5.017292 0.479469,-0.496592 0.804821,0.804821 z m 4.623443,-2.089111 0,-3.424773 1.267166,-1.28429 0,5.034416 -0.462344,0.479469 -0.804822,-0.804822 z m -0.08562,0.410973 0.650707,0.633583 -0.650707,0.633583 -4.469328,0 -0.633583,-0.633583 0.633583,-0.633583 4.469328,0 z" />
+        <path
+           id="path4232"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 44.779032,50.934555 -0.462344,0.479469 -0.804822,-0.804822 0,-3.424773 1.267166,-1.28429 0,5.034416 z m -0.239734,-5.27415 -1.267166,1.28429 -4.161099,0 -1.267166,-1.28429 6.695431,0 z m -5.650875,4.948797 -0.804822,0.804822 -0.479468,-0.479469 0,-5.034416 1.28429,1.28429 0,3.424773 z m 5.890609,6.798174 -1.267166,-1.28429 0,-3.424773 0.804822,-0.804821 0.462344,0.496592 0,5.017292 z m -0.239734,0.239734 -6.695431,0 1.267166,-1.28429 4.161099,0 1.267166,1.28429 z m -5.650 [...]
+      </g>
+      <g
+         id="text4769-3-3-0-9-9-1-9-4-6-0-3-0"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+        <path
+           id="path4227"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.83625031px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
+           d="m 36.033065,103.95548 -0.462344,0.47947 -0.804822,-0.80482 0,-3.42477 1.267166,-1.284293 0,5.034413 z m -0.239734,-5.274147 -1.267166,1.284289 -4.161099,0 -1.267166,-1.284289 6.695431,0 z m -5.650875,4.948797 -0.804822,0.80482 -0.479468,-0.47947 0,-5.034413 1.28429,1.284293 0,3.42477 z m 5.890609,6.79817 -1.267166,-1.28429 0,-3.42477 0.804822,-0.80482 0.462344,0.49659 0,5.01729 z m -0.239734,0.23974 -6.695431,0 1.267166,-1.28429 4.161099,0 1.267166,1.28429 z m -5.650875,-1. [...]
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_0.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_0.svg
new file mode 100644
index 0000000..4d168fe
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_0.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_0.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="translate(-3.3580325e-5,2.3383546e-6)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="3.3694135e-005"
+       inkscape:transform-center-y="35.455306">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_100.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_100.svg
new file mode 100644
index 0000000..598d8ac
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_100.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_100.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.97814759,0.2079117,-0.2079117,0.97814759,17.241565,-13.95348)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="8.7643616"
+       inkscape:transform-center-y="34.655627">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1000.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1000.svg
new file mode 100644
index 0000000..990fa9b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1000.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1000.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,177.49066,47.615077)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="30.56512"
+       inkscape:transform-center-y="-17.227666">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1025.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1025.svg
new file mode 100644
index 0000000..b40b6a8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1025.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1025.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.54463903,0.83867056,-0.83867056,-0.54463903,178.78576,53.016614)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="29.567617"
+       inkscape:transform-center-y="-18.848648">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1050.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1050.svg
new file mode 100644
index 0000000..47997af
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1050.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1050.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.58778525,0.80901699,-0.80901699,-0.58778525,179.79639,58.478528)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="28.486379"
+       inkscape:transform-center-y="-20.421353">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1075.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1075.svg
new file mode 100644
index 0000000..d0ed44d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1075.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1075.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.62932039,0.77714596,-0.77714596,-0.62932039,180.51978,63.985849)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="27.324364"
+       inkscape:transform-center-y="-21.935385">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1100.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1100.svg
new file mode 100644
index 0000000..d58d742
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1100.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1100.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.66913061,0.74314482,-0.74314482,-0.66913061,180.95394,69.523482)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="26.084761"
+       inkscape:transform-center-y="-23.386593">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1125.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1125.svg
new file mode 100644
index 0000000..81c65a3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1125.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1125.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,181.09769,75.076248)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="24.770956"
+       inkscape:transform-center-y="-24.770996">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1150.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1150.svg
new file mode 100644
index 0000000..e1ae54a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1150.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1150.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,180.95064,80.628927)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="23.386546"
+       inkscape:transform-center-y="-26.0848">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1175.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1175.svg
new file mode 100644
index 0000000..8be719c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1175.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1175.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.77714596,0.62932039,-0.62932039,-0.77714596,180.51318,86.166301)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="21.935338"
+       inkscape:transform-center-y="-27.324405">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1200.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1200.svg
new file mode 100644
index 0000000..bd6ff13
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1200.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1200.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,179.78652,91.673191)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="20.421301"
+       inkscape:transform-center-y="-28.486414">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1225.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1225.svg
new file mode 100644
index 0000000..5d78139
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1225.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1225.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83867056,0.54463903,-0.54463903,-0.83867056,178.77265,97.134503)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="18.84859"
+       inkscape:transform-center-y="-29.567646">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_125.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_125.svg
new file mode 100644
index 0000000..4a1b44d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_125.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_125.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.96592582,0.25881905,-0.25881905,0.96592582,21.978525,-16.854355)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="9.8966225"
+       inkscape:transform-center-y="34.209401">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1250.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1250.svg
new file mode 100644
index 0000000..43afd57
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1250.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1250.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,177.47434,102.53527)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="17.227623"
+       inkscape:transform-center-y="-30.565139">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1275.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1275.svg
new file mode 100644
index 0000000..af80da7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1275.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1275.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.89100652,0.4539905,-0.4539905,-0.89100652,175.89516,107.86069)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="15.642348"
+       inkscape:transform-center-y="-31.476162">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1300.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1300.svg
new file mode 100644
index 0000000..499bde9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1300.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1300.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91354545,0.40673664,-0.40673664,-0.91354545,174.03943,113.09616)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="14.014202"
+       inkscape:transform-center-y="-32.298228">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1325.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1325.svg
new file mode 100644
index 0000000..01302c1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1325.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1325.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93358042,0.35836795,-0.35836795,-0.93358042,171.91224,118.22733)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="12.347645"
+       inkscape:transform-center-y="-33.029086">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1350.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1350.svg
new file mode 100644
index 0000000..41b9568
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1350.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1350.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,169.51942,123.24014)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="10.999005"
+       inkscape:transform-center-y="-33.666729">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1375.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1375.svg
new file mode 100644
index 0000000..2b4c520
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1375.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1375.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.96592582,0.25881905,-0.25881905,-0.96592582,166.86753,128.12085)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="9.8965576"
+       inkscape:transform-center-y="-34.20941">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1400.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1400.svg
new file mode 100644
index 0000000..773836c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1400.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1400.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97814759,0.2079117,-0.2079117,-0.97814759,163.96384,132.85608)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="8.764293"
+       inkscape:transform-center-y="-34.655637">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1425.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1425.svg
new file mode 100644
index 0000000..9a77b0a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1425.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1425.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.98768833,0.15643447,-0.15643447,-0.98768833,160.8163,137.43286)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="7.0325119"
+       inkscape:transform-center-y="-35.004172">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1450.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1450.svg
new file mode 100644
index 0000000..f829c2f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1450.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1450.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,157.43355,141.83864)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="4.6990596"
+       inkscape:transform-center-y="-35.25405">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1475.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1475.svg
new file mode 100644
index 0000000..45204bd
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1475.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1475.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99862953,0.05233596,-0.05233596,-0.99862953,153.82485,146.06134)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="2.352732"
+       inkscape:transform-center-y="-35.404571">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_150.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_150.svg
new file mode 100644
index 0000000..8b05ccb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_150.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_150.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.95105651,0.309017,-0.309017,0.95105651,26.860813,-19.503341)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="10.999069"
+       inkscape:transform-center-y="33.66672">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1500.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1500.svg
new file mode 100644
index 0000000..23ed0f3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1500.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1500.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1,0,0,-1,150.0001,150.08939)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-4.7393749e-005"
+       inkscape:transform-center-y="-35.455293">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1525.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1525.svg
new file mode 100644
index 0000000..8063be0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1525.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1525.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99862953,-0.05233596,0.05233596,-0.99862953,145.96978,153.91174)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-2.3528274"
+       inkscape:transform-center-y="-35.404569">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1550.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1550.svg
new file mode 100644
index 0000000..bac31b1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1550.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1550.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99452189,-0.10452847,0.10452847,-0.99452189,141.74494,157.51793)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-4.6991612"
+       inkscape:transform-center-y="-35.254038">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1575.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1575.svg
new file mode 100644
index 0000000..6964b58
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1575.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1575.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.98768833,-0.15643447,0.15643447,-0.98768833,137.33715,160.89806)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-7.0326078"
+       inkscape:transform-center-y="-35.004154">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1600.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1600.svg
new file mode 100644
index 0000000..11c871a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1600.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1600.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97814759,-0.2079117,0.2079117,-0.97814759,132.7585,164.04287)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-8.7643739"
+       inkscape:transform-center-y="-34.655617">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1625.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1625.svg
new file mode 100644
index 0000000..2cb0192
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1625.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1625.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.96592582,-0.25881905,0.25881905,-0.96592582,128.02154,166.94375)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-9.8966348"
+       inkscape:transform-center-y="-34.209386">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1650.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1650.svg
new file mode 100644
index 0000000..297c578
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1650.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1650.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95105651,-0.309017,0.309017,-0.95105651,123.13925,169.59274)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-10.99908"
+       inkscape:transform-center-y="-33.666701">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1675.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1675.svg
new file mode 100644
index 0000000..353f3cc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1675.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1675.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93358042,-0.35836795,0.35836795,-0.93358042,118.12501,171.98258)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-12.347699"
+       inkscape:transform-center-y="-33.029053">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1700.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1700.svg
new file mode 100644
index 0000000..a4a5986
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1700.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1700.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91354545,-0.40673664,0.40673664,-0.91354545,112.99257,174.10672)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-14.014254"
+       inkscape:transform-center-y="-32.298192">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1725.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1725.svg
new file mode 100644
index 0000000..4f64a5a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1725.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1725.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.89100652,-0.4539905,0.4539905,-0.89100652,107.756,175.95933)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-15.642402"
+       inkscape:transform-center-y="-31.476129">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_175.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_175.svg
new file mode 100644
index 0000000..d97b9bc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_175.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_175.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.93358042,0.35836795,-0.35836795,0.93358042,31.875048,-21.893178)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="12.347693"
+       inkscape:transform-center-y="33.029075">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1750.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1750.svg
new file mode 100644
index 0000000..5512322
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1750.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1750.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,102.42965,177.53535)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-17.227677"
+       inkscape:transform-center-y="-30.565094">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1775.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1775.svg
new file mode 100644
index 0000000..ba4ef39
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1775.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1775.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83867056,-0.54463903,0.54463903,-0.83867056,97.028112,178.83045)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-18.848658"
+       inkscape:transform-center-y="-29.567591">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1800.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1800.svg
new file mode 100644
index 0000000..57492d5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1800.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1800.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.80901699,-0.58778525,0.58778525,-0.80901699,91.566196,179.84108)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-20.421361"
+       inkscape:transform-center-y="-28.486353">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1825.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1825.svg
new file mode 100644
index 0000000..7a9719b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1825.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1825.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.77714596,-0.62932039,0.62932039,-0.77714596,86.058873,180.56447)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-21.935391"
+       inkscape:transform-center-y="-27.324338">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1850.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1850.svg
new file mode 100644
index 0000000..b3bb135
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1850.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1850.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.74314482,-0.66913061,0.66913061,-0.74314482,80.521239,180.99863)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-23.386598"
+       inkscape:transform-center-y="-26.084735">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1875.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1875.svg
new file mode 100644
index 0000000..5eaa54f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1875.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1875.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,74.968472,181.14238)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-24.771"
+       inkscape:transform-center-y="-24.77093">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1900.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1900.svg
new file mode 100644
index 0000000..cf92c73
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1900.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1900.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,69.415791,180.99533)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-26.084802"
+       inkscape:transform-center-y="-23.38652">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1925.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1925.svg
new file mode 100644
index 0000000..36d59ca
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1925.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1925.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.62932039,-0.77714596,0.77714596,-0.62932039,63.878416,180.55787)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-27.324406"
+       inkscape:transform-center-y="-21.935312">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1950.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1950.svg
new file mode 100644
index 0000000..b7fd1e0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1950.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1950.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.58778525,-0.80901699,0.80901699,-0.58778525,58.371525,179.83121)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-28.486414"
+       inkscape:transform-center-y="-20.421275">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_1975.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_1975.svg
new file mode 100644
index 0000000..6b22a08
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_1975.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_1975.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.54463903,-0.83867056,0.83867056,-0.54463903,52.910211,178.81734)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-29.567644"
+       inkscape:transform-center-y="-18.848564">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_200.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_200.svg
new file mode 100644
index 0000000..70d1b6e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_200.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_200.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.91354545,0.40673664,-0.40673664,0.91354545,37.007485,-24.017315)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="14.014251"
+       inkscape:transform-center-y="32.298217">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2000.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2000.svg
new file mode 100644
index 0000000..ef13633
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2000.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2000.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,47.509444,177.51903)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-30.565137"
+       inkscape:transform-center-y="-17.227597">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2025.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2025.svg
new file mode 100644
index 0000000..8b4a838
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2025.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2025.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.4539905,-0.89100652,0.89100652,-0.4539905,42.184026,175.93985)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-31.476162"
+       inkscape:transform-center-y="-15.642322">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2050.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2050.svg
new file mode 100644
index 0000000..51f3d30
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2050.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2050.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.40673664,-0.91354545,0.91354545,-0.40673664,36.948555,174.08412)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-32.298227"
+       inkscape:transform-center-y="-14.014176">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2075.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2075.svg
new file mode 100644
index 0000000..0e6f35e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2075.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2075.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.35836795,-0.93358042,0.93358042,-0.35836795,31.81738,171.95693)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.02908"
+       inkscape:transform-center-y="-12.347619">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2100.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2100.svg
new file mode 100644
index 0000000..947578d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2100.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2100.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,26.804566,169.56411)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.666719"
+       inkscape:transform-center-y="-10.998979">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2125.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2125.svg
new file mode 100644
index 0000000..d929459
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2125.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2125.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.25881905,-0.96592582,0.96592582,-0.25881905,21.923852,166.91222)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.209396"
+       inkscape:transform-center-y="-9.8965316">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2150.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2150.svg
new file mode 100644
index 0000000..a34eb85
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2150.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2150.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.2079117,-0.97814759,0.97814759,-0.2079117,17.188616,164.00853)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.655617"
+       inkscape:transform-center-y="-8.764267">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2175.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2175.svg
new file mode 100644
index 0000000..f441cf8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2175.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2175.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.15643447,-0.98768833,0.98768833,-0.15643447,12.611837,160.86099)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.004153"
+       inkscape:transform-center-y="-7.0324859">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2200.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2200.svg
new file mode 100644
index 0000000..c5b1607
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2200.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2200.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,8.2060599,157.47824)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.254034"
+       inkscape:transform-center-y="-4.6990336">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2225.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2225.svg
new file mode 100644
index 0000000..c321a2d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2225.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2225.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05233596,-0.99862953,0.99862953,-0.05233596,3.9833602,153.86954)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.404555"
+       inkscape:transform-center-y="-2.352706">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_225.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_225.svg
new file mode 100644
index 0000000..868a25d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_225.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_225.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.89100652,0.4539905,-0.4539905,0.89100652,42.244057,-25.86993)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="15.642397"
+       inkscape:transform-center-y="31.476149">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2250.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2250.svg
new file mode 100644
index 0000000..3235836
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2250.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2250.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0,-1,1,0,-0.04468769,150.04479)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.455279"
+       inkscape:transform-center-y="7.3393749e-005">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2275.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2275.svg
new file mode 100644
index 0000000..d8687b5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2275.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2275.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05233596,-0.99862953,0.99862953,0.05233596,-3.8670433,146.01447)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.404549"
+       inkscape:transform-center-y="2.3528534">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2300.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2300.svg
new file mode 100644
index 0000000..7ca20b7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2300.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2300.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10452847,-0.99452189,0.99452189,0.10452847,-7.4732299,141.78962)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.254022"
+       inkscape:transform-center-y="4.6991772">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2325.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2325.svg
new file mode 100644
index 0000000..b2b6dc5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2325.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2325.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.15643447,-0.98768833,0.98768833,0.15643447,-10.853363,137.38183)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.004135"
+       inkscape:transform-center-y="7.0326238">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2350.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2350.svg
new file mode 100644
index 0000000..d35b6bc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2350.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2350.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.2079117,-0.97814759,0.97814759,0.2079117,-13.998178,132.80318)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.655593"
+       inkscape:transform-center-y="8.7643899">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2375.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2375.svg
new file mode 100644
index 0000000..1be5d45
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2375.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2375.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.25881905,-0.96592582,0.96592582,0.25881905,-16.899055,128.06622)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.209365"
+       inkscape:transform-center-y="9.8966508">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2400.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2400.svg
new file mode 100644
index 0000000..073630d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2400.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2400.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.309017,-0.95105651,0.95105651,0.309017,-19.548043,123.18393)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.666682"
+       inkscape:transform-center-y="10.999096">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2425.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2425.svg
new file mode 100644
index 0000000..153d12d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2425.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2425.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.35836795,-0.93358042,0.93358042,0.35836795,-21.937881,118.16969)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.029036"
+       inkscape:transform-center-y="12.347715">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2450.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2450.svg
new file mode 100644
index 0000000..749a08d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2450.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2450.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.40673664,-0.91354545,0.91354545,0.40673664,-24.062019,113.03725)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-32.298177"
+       inkscape:transform-center-y="14.01427">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2475.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2475.svg
new file mode 100644
index 0000000..bb3fb91
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2475.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2475.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.4539905,-0.89100652,0.89100652,0.4539905,-25.914635,107.80068)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-31.476108"
+       inkscape:transform-center-y="15.642418">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_25.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_25.svg
new file mode 100644
index 0000000..4a28938
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_25.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_25.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.99862953,0.05233596,-0.05233596,0.99862953,4.0302867,-3.8223513)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="2.3528134"
+       inkscape:transform-center-y="35.404578">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_250.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_250.svg
new file mode 100644
index 0000000..cdcf41c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_250.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_250.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.8660254,0.5,-0.5,0.8660254,47.570411,-27.445945)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="17.227668"
+       inkscape:transform-center-y="30.565119">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2500.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2500.svg
new file mode 100644
index 0000000..877113c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2500.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2500.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.5,-0.8660254,0.8660254,0.5,-27.490651,102.47432)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-30.565077"
+       inkscape:transform-center-y="17.227683">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_2525.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_2525.svg
new file mode 100644
index 0000000..dd8fe5d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_2525.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_2525.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.54463903,-0.83867056,0.83867056,0.54463903,-28.785747,97.072781)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-29.567578"
+       inkscape:transform-center-y="18.848663">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_275.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_275.svg
new file mode 100644
index 0000000..eae0c73
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_275.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_275.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.83867056,0.54463903,-0.54463903,0.83867056,52.971948,-28.74104)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="18.84865"
+       inkscape:transform-center-y="29.567621">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_300.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_300.svg
new file mode 100644
index 0000000..904da77
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_300.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_300.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.80901699,0.58778525,-0.58778525,0.80901699,58.433862,-29.751666)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="20.421355"
+       inkscape:transform-center-y="28.486387">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_325.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_325.svg
new file mode 100644
index 0000000..1ebffbd
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_325.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_325.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.77714596,0.62932039,-0.62932039,0.77714596,63.941183,-30.475052)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="21.935387"
+       inkscape:transform-center-y="27.324376">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_350.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_350.svg
new file mode 100644
index 0000000..d821f9b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_350.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_350.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.74314482,0.66913061,-0.66913061,0.74314482,69.478815,-30.909216)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="23.386596"
+       inkscape:transform-center-y="26.084769">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_375.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_375.svg
new file mode 100644
index 0000000..8702d8f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_375.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_375.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,75.031581,-31.052968)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="24.770999"
+       inkscape:transform-center-y="24.770962">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_400.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_400.svg
new file mode 100644
index 0000000..af530ee
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_400.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_400.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,80.58426,-30.905913)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="26.084803"
+       inkscape:transform-center-y="23.386557">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_425.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_425.svg
new file mode 100644
index 0000000..1a1a90a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_425.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_425.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.62932039,0.77714596,-0.77714596,0.62932039,86.121633,-30.468455)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="27.324409"
+       inkscape:transform-center-y="21.935347">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_450.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_450.svg
new file mode 100644
index 0000000..6a0eb9f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_450.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_450.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.58778525,0.80901699,-0.80901699,0.58778525,91.628522,-29.741793)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="28.486419"
+       inkscape:transform-center-y="20.421312">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_475.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_475.svg
new file mode 100644
index 0000000..389c10e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_475.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_475.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.54463903,0.83867056,-0.83867056,0.54463903,97.089834,-28.727918)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="29.567651"
+       inkscape:transform-center-y="18.848606">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_50.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_50.svg
new file mode 100644
index 0000000..c3fe331
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_50.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_50.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.99452189,0.10452847,-0.10452847,0.99452189,8.2551301,-7.4285358)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="4.6991438"
+       inkscape:transform-center-y="35.254053">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_500.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_500.svg
new file mode 100644
index 0000000..fd9e8f2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_500.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_500.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.5,0.8660254,-0.8660254,0.5,102.4906,-27.42961)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="30.565145"
+       inkscape:transform-center-y="17.227637">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_525.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_525.svg
new file mode 100644
index 0000000..1d8df0e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_525.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_525.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.4539905,0.89100652,-0.89100652,0.4539905,107.81602,-25.850427)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="31.476168"
+       inkscape:transform-center-y="15.642365">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_550.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_550.svg
new file mode 100644
index 0000000..78feb6c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_550.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_550.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.40673664,0.91354545,-0.91354545,0.40673664,113.05149,-23.994697)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="32.298234"
+       inkscape:transform-center-y="14.014219">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_575.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_575.svg
new file mode 100644
index 0000000..98a9008
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_575.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_575.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.35836795,0.93358042,-0.93358042,0.35836795,118.18266,-21.867507)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.029092"
+       inkscape:transform-center-y="12.347662">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_600.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_600.svg
new file mode 100644
index 0000000..e6d5a15
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_600.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_600.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,123.19547,-19.474688)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.666735"
+       inkscape:transform-center-y="10.999021">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_625.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_625.svg
new file mode 100644
index 0000000..878ee6d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_625.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_625.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.25881905,0.96592582,-0.96592582,0.25881905,128.07618,-16.822798)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.209416"
+       inkscape:transform-center-y="9.8965736">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_650.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_650.svg
new file mode 100644
index 0000000..7b6977f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_650.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_650.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.2079117,0.97814759,-0.97814759,0.2079117,132.81141,-13.919106)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.655643"
+       inkscape:transform-center-y="8.764311">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_675.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_675.svg
new file mode 100644
index 0000000..e082a48
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_675.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_675.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.15643447,0.98768833,-0.98768833,0.15643447,137.38819,-10.77157)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.004178"
+       inkscape:transform-center-y="7.0325259">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_700.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_700.svg
new file mode 100644
index 0000000..20bad7e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_700.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_700.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,141.79397,-7.3888176)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.254056"
+       inkscape:transform-center-y="4.699076">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_725.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_725.svg
new file mode 100644
index 0000000..ee2ff51
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_725.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_725.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05233596,0.99862953,-0.99862953,0.05233596,146.01667,-3.7801205)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.404577"
+       inkscape:transform-center-y="2.3527455">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_75.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_75.svg
new file mode 100644
index 0000000..17d65c6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_75.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_75.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.98768833,0.15643447,-0.15643447,0.98768833,12.662917,-10.808667)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="7.0325935"
+       inkscape:transform-center-y="35.004167">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_750.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_750.svg
new file mode 100644
index 0000000..99307c6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_750.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_750.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0,1,-1,0,150.04472,0.04463005)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.455299"
+       inkscape:transform-center-y="-3.3343749e-005">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_775.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_775.svg
new file mode 100644
index 0000000..345bf28
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_775.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_775.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05233596,0.99862953,-0.99862953,-0.05233596,153.86707,4.0749507)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.404575"
+       inkscape:transform-center-y="-2.3528127">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_800.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_800.svg
new file mode 100644
index 0000000..8beeb3d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_800.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_800.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10452847,0.99452189,-0.99452189,-0.10452847,157.47325,8.2997943)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.254054"
+       inkscape:transform-center-y="-4.6991429">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_825.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_825.svg
new file mode 100644
index 0000000..b62c246
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_825.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_825.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.15643447,0.98768833,-0.98768833,-0.15643447,160.85338,12.707581)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.00417"
+       inkscape:transform-center-y="-7.0325928">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_850.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_850.svg
new file mode 100644
index 0000000..b1e9d70
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_850.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_850.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.2079117,0.97814759,-0.97814759,-0.2079117,163.99819,17.286229)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.655633"
+       inkscape:transform-center-y="-8.7643609">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_875.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_875.svg
new file mode 100644
index 0000000..1b083ec
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_875.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_875.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.25881905,0.96592582,-0.96592582,-0.25881905,166.89907,22.023189)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.209402"
+       inkscape:transform-center-y="-9.8966218">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_900.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_900.svg
new file mode 100644
index 0000000..a3665da
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_900.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_900.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.309017,0.95105651,-0.95105651,-0.309017,169.54806,26.905477)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.666717"
+       inkscape:transform-center-y="-10.999069">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_925.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_925.svg
new file mode 100644
index 0000000..98e4e66
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_925.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_925.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.35836795,0.93358042,-0.93358042,-0.35836795,171.9379,31.919712)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.029069"
+       inkscape:transform-center-y="-12.347693">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_950.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_950.svg
new file mode 100644
index 0000000..6f7de06
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_950.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_950.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.40673664,0.91354545,-0.91354545,-0.40673664,174.06204,37.05215)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="32.298208"
+       inkscape:transform-center-y="-14.01425">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/load_975.svg b/skins/blackhole/themes/default/skinparts/tachohands/load_975.svg
new file mode 100644
index 0000000..76430e7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/load_975.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="load_975.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4885"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4887"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ff0000;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4587"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4589"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4236"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4297"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4506"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4239"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4257"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#aa0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="61.135797"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.4539905,0.89100652,-0.89100652,-0.4539905,175.91465,42.288723)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="31.476145"
+       inkscape:transform-center-y="-15.642395">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_0.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_0.svg
new file mode 100644
index 0000000..6041ba0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_0.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_0.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="translate(-3.3231822e-5,3.1722513e-6)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="3.307229e-005"
+       inkscape:transform-center-y="35.455306">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_1.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_1.svg
new file mode 100644
index 0000000..0e59a32
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_1.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_1.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.99862953,0.05233596,-0.05233596,0.99862953,4.0302871,-3.8223504)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="2.3528127"
+       inkscape:transform-center-y="35.404578">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_10.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_10.svg
new file mode 100644
index 0000000..682d505
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_10.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_10.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.8660254,0.5,-0.5,0.8660254,47.570411,-27.445944)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="17.227668"
+       inkscape:transform-center-y="30.56512">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_100.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_100.svg
new file mode 100644
index 0000000..e027920
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_100.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_100.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.5,-0.8660254,0.8660254,0.5,-27.490651,102.47432)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-30.565076"
+       inkscape:transform-center-y="17.227683">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_11.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_11.svg
new file mode 100644
index 0000000..b6406b6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_11.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_11.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.83867056,0.54463903,-0.54463903,0.83867056,52.971948,-28.741039)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="18.84865"
+       inkscape:transform-center-y="29.567622">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_12.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_12.svg
new file mode 100644
index 0000000..ef49e35
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_12.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_12.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.80901699,0.58778525,-0.58778525,0.80901699,58.433862,-29.751665)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="20.421355"
+       inkscape:transform-center-y="28.486388">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_13.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_13.svg
new file mode 100644
index 0000000..2ba26c2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_13.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_13.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.77714596,0.62932039,-0.62932039,0.77714596,63.941183,-30.475051)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="21.935387"
+       inkscape:transform-center-y="27.324377">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_14.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_14.svg
new file mode 100644
index 0000000..2b0a14e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_14.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_14.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.74314482,0.66913061,-0.66913061,0.74314482,69.478815,-30.909215)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="23.386596"
+       inkscape:transform-center-y="26.08477">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_15.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_15.svg
new file mode 100644
index 0000000..a94b2f7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_15.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,75.03158,-31.052967)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="24.771"
+       inkscape:transform-center-y="24.770963">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_16.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_16.svg
new file mode 100644
index 0000000..85b0dba
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_16.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_16.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,80.584259,-30.905912)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="26.084804"
+       inkscape:transform-center-y="23.386558">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_17.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_17.svg
new file mode 100644
index 0000000..1b817de
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_17.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_17.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.62932039,0.77714596,-0.77714596,0.62932039,86.121632,-30.468454)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="27.32441"
+       inkscape:transform-center-y="21.935348">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_18.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_18.svg
new file mode 100644
index 0000000..9c39b42
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_18.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_18.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.58778525,0.80901699,-0.80901699,0.58778525,91.628521,-29.741792)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="28.48642"
+       inkscape:transform-center-y="20.421313">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_19.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_19.svg
new file mode 100644
index 0000000..3937818
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_19.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_19.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.54463903,0.83867056,-0.83867056,0.54463903,97.089833,-28.727918)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="29.567652"
+       inkscape:transform-center-y="18.848606">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_2.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_2.svg
new file mode 100644
index 0000000..7257737
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_2.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.99452189,0.10452847,-0.10452847,0.99452189,8.2551305,-7.4285349)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="4.6991431"
+       inkscape:transform-center-y="35.254053">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_20.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_20.svg
new file mode 100644
index 0000000..6576b8f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_20.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_20.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.5,0.8660254,-0.8660254,0.5,102.4906,-27.42961)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="30.565145"
+       inkscape:transform-center-y="17.227637">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_21.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_21.svg
new file mode 100644
index 0000000..cb903b6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_21.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_21.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.4539905,0.89100652,-0.89100652,0.4539905,107.81602,-25.850427)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="31.476168"
+       inkscape:transform-center-y="15.642365">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_22.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_22.svg
new file mode 100644
index 0000000..eba9327
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_22.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_22.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.40673664,0.91354545,-0.91354545,0.40673664,113.05149,-23.994697)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="32.298234"
+       inkscape:transform-center-y="14.014219">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_23.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_23.svg
new file mode 100644
index 0000000..a6a2038
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_23.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_23.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.35836795,0.93358042,-0.93358042,0.35836795,118.18266,-21.867507)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.029092"
+       inkscape:transform-center-y="12.347662">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_24.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_24.svg
new file mode 100644
index 0000000..2b9fe5b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_24.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_24.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,123.19547,-19.474688)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.666735"
+       inkscape:transform-center-y="10.999021">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_25.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_25.svg
new file mode 100644
index 0000000..3741900
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_25.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_25.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.25881905,0.96592582,-0.96592582,0.25881905,128.07618,-16.822798)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.209416"
+       inkscape:transform-center-y="9.8965736">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_26.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_26.svg
new file mode 100644
index 0000000..c849311
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_26.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_26.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.2079117,0.97814759,-0.97814759,0.2079117,132.81141,-13.919106)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.655643"
+       inkscape:transform-center-y="8.764311">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_27.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_27.svg
new file mode 100644
index 0000000..9e0dea6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_27.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_27.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.15643447,0.98768833,-0.98768833,0.15643447,137.38819,-10.77157)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.004178"
+       inkscape:transform-center-y="7.0325259">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_28.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_28.svg
new file mode 100644
index 0000000..e558758
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_28.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_28.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,141.79397,-7.3888176)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.254056"
+       inkscape:transform-center-y="4.699076">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_29.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_29.svg
new file mode 100644
index 0000000..acf6df6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_29.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_29.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05233596,0.99862953,-0.99862953,0.05233596,146.01667,-3.7801205)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.404577"
+       inkscape:transform-center-y="2.3527455">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_3.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_3.svg
new file mode 100644
index 0000000..f50d732
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_3.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.98768833,0.15643447,-0.15643447,0.98768833,12.662917,-10.808666)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="7.0325932"
+       inkscape:transform-center-y="35.004168">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_30.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_30.svg
new file mode 100644
index 0000000..f8a67f6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_30.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_30.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0,1,-1,0,150.04472,0.04463005)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.455299"
+       inkscape:transform-center-y="-3.3343749e-005">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_31.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_31.svg
new file mode 100644
index 0000000..a549aac
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_31.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_31.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05233596,0.99862953,-0.99862953,-0.05233596,153.86707,4.0749507)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.404575"
+       inkscape:transform-center-y="-2.3528127">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_32.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_32.svg
new file mode 100644
index 0000000..57f681b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_32.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_32.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10452847,0.99452189,-0.99452189,-0.10452847,157.47325,8.2997943)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.254054"
+       inkscape:transform-center-y="-4.6991429">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_33.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_33.svg
new file mode 100644
index 0000000..ce84f07
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_33.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_33.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.15643447,0.98768833,-0.98768833,-0.15643447,160.85338,12.707581)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="35.00417"
+       inkscape:transform-center-y="-7.0325928">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_34.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_34.svg
new file mode 100644
index 0000000..e915bef
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_34.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_34.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.2079117,0.97814759,-0.97814759,-0.2079117,163.99819,17.286229)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.655633"
+       inkscape:transform-center-y="-8.7643609">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_35.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_35.svg
new file mode 100644
index 0000000..97722f3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_35.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.25881905,0.96592582,-0.96592582,-0.25881905,166.89907,22.023189)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="34.209402"
+       inkscape:transform-center-y="-9.8966218">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_36.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_36.svg
new file mode 100644
index 0000000..1e44e9d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_36.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_36.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.309017,0.95105651,-0.95105651,-0.309017,169.54806,26.905477)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.666717"
+       inkscape:transform-center-y="-10.999069">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_37.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_37.svg
new file mode 100644
index 0000000..72c295e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_37.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_37.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.35836795,0.93358042,-0.93358042,-0.35836795,171.9379,31.919712)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="33.029069"
+       inkscape:transform-center-y="-12.347693">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_38.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_38.svg
new file mode 100644
index 0000000..c2236ce
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_38.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_38.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.40673664,0.91354545,-0.91354545,-0.40673664,174.06204,37.05215)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="32.298208"
+       inkscape:transform-center-y="-14.01425">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_39.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_39.svg
new file mode 100644
index 0000000..2c9ceab
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_39.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_39.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.4539905,0.89100652,-0.89100652,-0.4539905,175.91465,42.288723)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="31.476145"
+       inkscape:transform-center-y="-15.642395">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_4.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_4.svg
new file mode 100644
index 0000000..6a5ff90
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_4.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_4.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.97814759,0.2079117,-0.2079117,0.97814759,17.241565,-13.953479)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="8.7643613"
+       inkscape:transform-center-y="34.655628">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_40.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_40.svg
new file mode 100644
index 0000000..6b8b94b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_40.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_40.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,177.49066,47.615077)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="30.56512"
+       inkscape:transform-center-y="-17.227666">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_41.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_41.svg
new file mode 100644
index 0000000..93d438c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_41.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_41.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.54463903,0.83867056,-0.83867056,-0.54463903,178.78576,53.016614)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="29.567617"
+       inkscape:transform-center-y="-18.848648">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_42.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_42.svg
new file mode 100644
index 0000000..821d228
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_42.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_42.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.58778525,0.80901699,-0.80901699,-0.58778525,179.79639,58.478528)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="28.486379"
+       inkscape:transform-center-y="-20.421353">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_43.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_43.svg
new file mode 100644
index 0000000..c343676
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_43.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_43.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.62932039,0.77714596,-0.77714596,-0.62932039,180.51978,63.985849)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="27.324364"
+       inkscape:transform-center-y="-21.935385">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_44.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_44.svg
new file mode 100644
index 0000000..2fe2106
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_44.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_44.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.66913061,0.74314482,-0.74314482,-0.66913061,180.95394,69.523482)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="26.084761"
+       inkscape:transform-center-y="-23.386593">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_45.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_45.svg
new file mode 100644
index 0000000..f0709b2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_45.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_45.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,181.09769,75.076248)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="24.770956"
+       inkscape:transform-center-y="-24.770996">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_46.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_46.svg
new file mode 100644
index 0000000..2ea8cb7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_46.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_46.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,180.95064,80.628927)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="23.386546"
+       inkscape:transform-center-y="-26.0848">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_47.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_47.svg
new file mode 100644
index 0000000..8c3dc2a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_47.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_47.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.77714596,0.62932039,-0.62932039,-0.77714596,180.51318,86.166301)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="21.935338"
+       inkscape:transform-center-y="-27.324405">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_48.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_48.svg
new file mode 100644
index 0000000..d664d55
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_48.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_48.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,179.78652,91.673191)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="20.421301"
+       inkscape:transform-center-y="-28.486414">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_49.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_49.svg
new file mode 100644
index 0000000..b5471b4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_49.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_49.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83867056,0.54463903,-0.54463903,-0.83867056,178.77265,97.134503)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="18.84859"
+       inkscape:transform-center-y="-29.567646">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_5.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_5.svg
new file mode 100644
index 0000000..66d774f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_5.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_5.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.96592582,0.25881905,-0.25881905,0.96592582,21.978525,-16.854354)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="9.8966222"
+       inkscape:transform-center-y="34.209402">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_50.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_50.svg
new file mode 100644
index 0000000..a6012e8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_50.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_50.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,177.47434,102.53527)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="17.227623"
+       inkscape:transform-center-y="-30.565139">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_51.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_51.svg
new file mode 100644
index 0000000..63a3074
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_51.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_51.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.89100652,0.4539905,-0.4539905,-0.89100652,175.89516,107.86069)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="15.642348"
+       inkscape:transform-center-y="-31.476162">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_52.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_52.svg
new file mode 100644
index 0000000..fe98f74
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_52.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_52.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91354545,0.40673664,-0.40673664,-0.91354545,174.03943,113.09616)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="14.014202"
+       inkscape:transform-center-y="-32.298228">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_53.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_53.svg
new file mode 100644
index 0000000..e3a0fc4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_53.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_53.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93358042,0.35836795,-0.35836795,-0.93358042,171.91224,118.22733)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="12.347645"
+       inkscape:transform-center-y="-33.029086">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_54.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_54.svg
new file mode 100644
index 0000000..8d9f119
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_54.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_54.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,169.51942,123.24014)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="10.999005"
+       inkscape:transform-center-y="-33.666729">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_55.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_55.svg
new file mode 100644
index 0000000..377a6b3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_55.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_55.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.96592582,0.25881905,-0.25881905,-0.96592582,166.86753,128.12085)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="9.8965576"
+       inkscape:transform-center-y="-34.20941">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_56.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_56.svg
new file mode 100644
index 0000000..51aa033
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_56.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_56.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97814759,0.2079117,-0.2079117,-0.97814759,163.96384,132.85608)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="8.764293"
+       inkscape:transform-center-y="-34.655637">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_57.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_57.svg
new file mode 100644
index 0000000..c1c706c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_57.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_57.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.98768833,0.15643447,-0.15643447,-0.98768833,160.8163,137.43286)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="7.0325119"
+       inkscape:transform-center-y="-35.004172">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_58.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_58.svg
new file mode 100644
index 0000000..4539158
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_58.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_58.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,157.43355,141.83864)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="4.6990596"
+       inkscape:transform-center-y="-35.25405">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_59.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_59.svg
new file mode 100644
index 0000000..c3533ac
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_59.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_59.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99862953,0.05233596,-0.05233596,-0.99862953,153.82485,146.06134)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="2.352732"
+       inkscape:transform-center-y="-35.404571">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_6.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_6.svg
new file mode 100644
index 0000000..358b3b2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_6.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_6.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.95105651,0.309017,-0.309017,0.95105651,26.860813,-19.50334)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="10.999069"
+       inkscape:transform-center-y="33.666721">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_60.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_60.svg
new file mode 100644
index 0000000..db3aaa1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_60.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_60.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1,0,0,-1,150.0001,150.08939)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-4.7393749e-005"
+       inkscape:transform-center-y="-35.455293">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_61.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_61.svg
new file mode 100644
index 0000000..4c09b06
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_61.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_61.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99862953,-0.05233596,0.05233596,-0.99862953,145.96978,153.91174)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-2.3528274"
+       inkscape:transform-center-y="-35.404569">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_62.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_62.svg
new file mode 100644
index 0000000..e7cec7b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_62.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_62.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99452189,-0.10452847,0.10452847,-0.99452189,141.74494,157.51793)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-4.6991612"
+       inkscape:transform-center-y="-35.254038">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_63.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_63.svg
new file mode 100644
index 0000000..fdb3829
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_63.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_63.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.98768833,-0.15643447,0.15643447,-0.98768833,137.33715,160.89806)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-7.0326078"
+       inkscape:transform-center-y="-35.004154">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_64.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_64.svg
new file mode 100644
index 0000000..521e82d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_64.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_64.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97814759,-0.2079117,0.2079117,-0.97814759,132.7585,164.04287)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-8.7643739"
+       inkscape:transform-center-y="-34.655617">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_65.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_65.svg
new file mode 100644
index 0000000..3b91b2d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_65.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_65.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.96592582,-0.25881905,0.25881905,-0.96592582,128.02154,166.94375)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-9.8966348"
+       inkscape:transform-center-y="-34.209386">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_66.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_66.svg
new file mode 100644
index 0000000..cb28310
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_66.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_66.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95105651,-0.309017,0.309017,-0.95105651,123.13925,169.59274)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-10.99908"
+       inkscape:transform-center-y="-33.666701">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_67.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_67.svg
new file mode 100644
index 0000000..aaaabdc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_67.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_67.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93358042,-0.35836795,0.35836795,-0.93358042,118.12501,171.98258)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-12.347699"
+       inkscape:transform-center-y="-33.029053">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_68.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_68.svg
new file mode 100644
index 0000000..ca1c93d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_68.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_68.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91354545,-0.40673664,0.40673664,-0.91354545,112.99257,174.10672)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-14.014254"
+       inkscape:transform-center-y="-32.298192">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_69.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_69.svg
new file mode 100644
index 0000000..74f4479
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_69.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_69.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.89100652,-0.4539905,0.4539905,-0.89100652,107.756,175.95933)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-15.642402"
+       inkscape:transform-center-y="-31.476129">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_7.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_7.svg
new file mode 100644
index 0000000..6a2733a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_7.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_7.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.93358042,0.35836795,-0.35836795,0.93358042,31.875048,-21.893177)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="12.347693"
+       inkscape:transform-center-y="33.029076">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_70.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_70.svg
new file mode 100644
index 0000000..c6aa3c9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_70.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_70.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,102.42965,177.53535)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-17.227677"
+       inkscape:transform-center-y="-30.565094">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_71.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_71.svg
new file mode 100644
index 0000000..0b49abe
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_71.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_71.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83867056,-0.54463903,0.54463903,-0.83867056,97.028112,178.83045)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-18.848658"
+       inkscape:transform-center-y="-29.567591">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_72.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_72.svg
new file mode 100644
index 0000000..a57dc7b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_72.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_72.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.80901699,-0.58778525,0.58778525,-0.80901699,91.566196,179.84108)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-20.421361"
+       inkscape:transform-center-y="-28.486353">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_73.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_73.svg
new file mode 100644
index 0000000..56dc382
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_73.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_73.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.77714596,-0.62932039,0.62932039,-0.77714596,86.058873,180.56447)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-21.935391"
+       inkscape:transform-center-y="-27.324338">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_74.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_74.svg
new file mode 100644
index 0000000..f562a38
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_74.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_74.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.74314482,-0.66913061,0.66913061,-0.74314482,80.521239,180.99863)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-23.386598"
+       inkscape:transform-center-y="-26.084735">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_75.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_75.svg
new file mode 100644
index 0000000..a7b1452
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_75.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_75.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,74.968472,181.14238)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-24.771"
+       inkscape:transform-center-y="-24.77093">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_76.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_76.svg
new file mode 100644
index 0000000..f31de9e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_76.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_76.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,69.415791,180.99533)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-26.084802"
+       inkscape:transform-center-y="-23.38652">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_77.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_77.svg
new file mode 100644
index 0000000..e2afdf2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_77.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_77.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.62932039,-0.77714596,0.77714596,-0.62932039,63.878416,180.55787)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-27.324406"
+       inkscape:transform-center-y="-21.935312">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_78.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_78.svg
new file mode 100644
index 0000000..631d4de
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_78.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_78.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.58778525,-0.80901699,0.80901699,-0.58778525,58.371525,179.83121)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-28.486414"
+       inkscape:transform-center-y="-20.421275">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_79.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_79.svg
new file mode 100644
index 0000000..49e4b90
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_79.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_79.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.54463903,-0.83867056,0.83867056,-0.54463903,52.910211,178.81734)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-29.567644"
+       inkscape:transform-center-y="-18.848564">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_8.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_8.svg
new file mode 100644
index 0000000..004fc51
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_8.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_8.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.91354545,0.40673664,-0.40673664,0.91354545,37.007485,-24.017314)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="14.014251"
+       inkscape:transform-center-y="32.298218">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_80.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_80.svg
new file mode 100644
index 0000000..6f23b2f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_80.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_80.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,47.509444,177.51903)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-30.565137"
+       inkscape:transform-center-y="-17.227597">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_81.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_81.svg
new file mode 100644
index 0000000..827bace
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_81.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_81.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.4539905,-0.89100652,0.89100652,-0.4539905,42.184026,175.93985)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-31.476162"
+       inkscape:transform-center-y="-15.642322">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_82.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_82.svg
new file mode 100644
index 0000000..71823e0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_82.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_82.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.40673664,-0.91354545,0.91354545,-0.40673664,36.948555,174.08412)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-32.298227"
+       inkscape:transform-center-y="-14.014176">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_83.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_83.svg
new file mode 100644
index 0000000..ff20447
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_83.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_83.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.35836795,-0.93358042,0.93358042,-0.35836795,31.81738,171.95693)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.02908"
+       inkscape:transform-center-y="-12.347619">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_84.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_84.svg
new file mode 100644
index 0000000..8dd67fa
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_84.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_84.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,26.804566,169.56411)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.666719"
+       inkscape:transform-center-y="-10.998979">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_85.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_85.svg
new file mode 100644
index 0000000..7a62631
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_85.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_85.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.25881905,-0.96592582,0.96592582,-0.25881905,21.923852,166.91222)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.209396"
+       inkscape:transform-center-y="-9.8965316">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_86.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_86.svg
new file mode 100644
index 0000000..6b73f31
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_86.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_86.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.2079117,-0.97814759,0.97814759,-0.2079117,17.188616,164.00853)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.655617"
+       inkscape:transform-center-y="-8.764267">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_87.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_87.svg
new file mode 100644
index 0000000..eeb0514
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_87.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_87.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.15643447,-0.98768833,0.98768833,-0.15643447,12.611837,160.86099)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.004153"
+       inkscape:transform-center-y="-7.0324859">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_88.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_88.svg
new file mode 100644
index 0000000..7fc1376
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_88.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_88.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,8.2060599,157.47824)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.254034"
+       inkscape:transform-center-y="-4.6990336">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_89.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_89.svg
new file mode 100644
index 0000000..5ad1e96
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_89.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_89.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05233596,-0.99862953,0.99862953,-0.05233596,3.9833602,153.86954)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.404555"
+       inkscape:transform-center-y="-2.352706">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_9.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_9.svg
new file mode 100644
index 0000000..d118420
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_9.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_9.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.89100652,0.4539905,-0.4539905,0.89100652,42.244057,-25.869929)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="15.642397"
+       inkscape:transform-center-y="31.47615">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_90.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_90.svg
new file mode 100644
index 0000000..80ec2c6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_90.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_90.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0,-1,1,0,-0.04468769,150.04479)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.455279"
+       inkscape:transform-center-y="7.3393749e-005">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_91.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_91.svg
new file mode 100644
index 0000000..dc3edf9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_91.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_91.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05233596,-0.99862953,0.99862953,0.05233596,-3.8670433,146.01447)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.404549"
+       inkscape:transform-center-y="2.3528534">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_92.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_92.svg
new file mode 100644
index 0000000..3dbe027
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_92.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_92.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10452847,-0.99452189,0.99452189,0.10452847,-7.4732298,141.78962)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.254022"
+       inkscape:transform-center-y="4.6991772">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_93.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_93.svg
new file mode 100644
index 0000000..76076ac
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_93.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_93.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.15643447,-0.98768833,0.98768833,0.15643447,-10.853363,137.38183)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-35.004134"
+       inkscape:transform-center-y="7.0326238">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_94.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_94.svg
new file mode 100644
index 0000000..be16f08
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_94.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_94.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.2079117,-0.97814759,0.97814759,0.2079117,-13.998178,132.80318)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.655592"
+       inkscape:transform-center-y="8.7643899">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_95.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_95.svg
new file mode 100644
index 0000000..e86fb22
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_95.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_95.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.25881905,-0.96592582,0.96592582,0.25881905,-16.899055,128.06622)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-34.209364"
+       inkscape:transform-center-y="9.8966508">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_96.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_96.svg
new file mode 100644
index 0000000..29ae525
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_96.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_96.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.309017,-0.95105651,0.95105651,0.309017,-19.548043,123.18393)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.666681"
+       inkscape:transform-center-y="10.999096">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_97.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_97.svg
new file mode 100644
index 0000000..f95f36e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_97.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_97.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.35836795,-0.93358042,0.93358042,0.35836795,-21.937881,118.16969)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-33.029035"
+       inkscape:transform-center-y="12.347715">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_98.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_98.svg
new file mode 100644
index 0000000..dfc8c02
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_98.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_98.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.40673664,-0.91354545,0.91354545,0.40673664,-24.062019,113.03725)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-32.298176"
+       inkscape:transform-center-y="14.01427">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/perc_99.svg b/skins/blackhole/themes/default/skinparts/tachohands/perc_99.svg
new file mode 100644
index 0000000..d1e3a3c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/perc_99.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="perc_99.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.2556286"
+     inkscape:cx="23.300481"
+     inkscape:cy="72.768692"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.4539905,-0.89100652,0.89100652,0.4539905,-25.914635,107.80068)"
+       style="opacity:0.8"
+       inkscape:transform-center-x="-31.476107"
+       inkscape:transform-center-y="15.642418">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="89.047386"
+       y="134.77823"
+       id="text6300"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6302"
+         x="89.047386"
+         y="134.77823"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:DS-Digital;-inkscape-font-specification:'DS-Digital, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff">%</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_0.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_0.svg
new file mode 100644
index 0000000..583b664
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_0.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_0.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.51322343,0.88892912,-0.8612809,0.49726076,101.15454,-28.938284)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="30.389496"
+       inkscape:transform-center-y="17.13327">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_1.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_1.svg
new file mode 100644
index 0000000..319af2f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_1.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_1.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.46599712,0.91457091,-0.88612516,0.45150332,106.56095,-27.427568)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="31.29694"
+       inkscape:transform-center-y="15.556682">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_10.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_10.svg
new file mode 100644
index 0000000..a0eea0a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_10.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_10.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-3.4154506e-8,1.026447,-0.99452152,-1.5373359e-8,149.64533,-1.9353541)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="35.261071"
+       inkscape:transform-center-y="-1.9831535e-005">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_11.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_11.svg
new file mode 100644
index 0000000..4f8d1ca
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_11.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_11.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05372012,1.0250403,-0.99315856,-0.05204925,153.57206,2.0761677)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="35.210504"
+       inkscape:transform-center-y="-2.3399082">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_12.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_12.svg
new file mode 100644
index 0000000..d97b402
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_12.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_12.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10729296,1.020824,-0.98907342,-0.10395582,157.28346,6.2877009)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="35.060511"
+       inkscape:transform-center-y="-4.6733855">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_13.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_13.svg
new file mode 100644
index 0000000..128a04b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_13.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_13.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.16057172,1.0138097,-0.9822773,-0.15557746,160.76936,10.687702)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.811531"
+       inkscape:transform-center-y="-6.9940534">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_14.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_14.svg
new file mode 100644
index 0000000..0118cbb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_14.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_14.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.21341036,1.0040166,-0.97278883,-0.20677267,164.0202,15.264111)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.464275"
+       inkscape:transform-center-y="-8.8419033">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_15.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_15.svg
new file mode 100644
index 0000000..f999097
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_15.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.26566406,0.99147157,-0.96063401,-0.25740113,167.02708,20.004384)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.019705"
+       inkscape:transform-center-y="-9.9667542">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_16.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_16.svg
new file mode 100644
index 0000000..29d77b1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_16.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_16.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.31718959,0.97620901,-0.94584616,-0.30732407,169.78175,24.895529)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="33.479062"
+       inkscape:transform-center-y="-11.061676">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_17.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_17.svg
new file mode 100644
index 0000000..4e9ba30
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_17.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_17.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.36784572,0.95827073,-0.92846581,-0.35640466,172.27666,29.924139)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="32.84384"
+       inkscape:transform-center-y="-12.280037">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_18.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_18.svg
new file mode 100644
index 0000000..e45c278
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_18.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_18.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.41749362,0.9377059,-0.9085406,-0.40450837,174.50497,35.07643)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="32.115793"
+       inkscape:transform-center-y="-13.937465">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_19.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_19.svg
new file mode 100644
index 0000000..5ed9014
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_19.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_19.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.46599719,0.91457088,-0.88612514,-0.45150335,176.46058,40.338281)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="31.296915"
+       inkscape:transform-center-y="-15.556691">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_2.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_2.svg
new file mode 100644
index 0000000..8951e17
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_2.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.41749354,0.93770593,-0.90854061,0.40450834,111.88088,-25.635972)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="32.115817"
+       inkscape:transform-center-y="13.937456">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_20.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_20.svg
new file mode 100644
index 0000000..89fce58
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_20.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_20.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5132235,0.88892908,-0.86128088,-0.49726079,178.13813,45.69527)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="30.38946"
+       inkscape:transform-center-y="-17.133277">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_21.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_21.svg
new file mode 100644
index 0000000..1fbed8a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_21.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_21.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.5590431,0.86085079,-0.83407591,-0.54165527,179.53301,51.132713)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="29.395935"
+       inkscape:transform-center-y="-18.722744">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_22.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_22.svg
new file mode 100644
index 0000000..3ca7200
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_22.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_22.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.6033304,0.83041297,-0.80458479,-0.58456511,180.64141,56.635707)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="28.319057"
+       inkscape:transform-center-y="-20.288373">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_23.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_23.svg
new file mode 100644
index 0000000..521f929
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_23.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_23.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.64596401,0.79769904,-0.77288836,-0.6258727,181.46028,62.189168)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="27.161799"
+       inkscape:transform-center-y="-21.795711">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_24.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_24.svg
new file mode 100644
index 0000000..d453f59
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_24.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_24.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.68682708,0.76279868,-0.7390735,-0.66546481,181.98739,67.777875)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="25.927331"
+       inkscape:transform-center-y="-23.240607">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_25.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_25.svg
new file mode 100644
index 0000000..a0c6803
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_25.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_25.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.72580761,0.72580754,-0.70323289,-0.70323293,182.22128,73.386509)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="24.619062"
+       inkscape:transform-center-y="-24.619088">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_26.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_26.svg
new file mode 100644
index 0000000..d03f1a0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_26.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_26.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.76279875,0.68682701,-0.66546477,-0.73907354,182.16132,78.999698)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="23.240581"
+       inkscape:transform-center-y="-25.92736">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_27.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_27.svg
new file mode 100644
index 0000000..ec8a536
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_27.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_27.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.79769911,0.64596394,-0.62587265,-0.7728884,181.80767,84.602056)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="21.795683"
+       inkscape:transform-center-y="-27.161824">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_28.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_28.svg
new file mode 100644
index 0000000..f7d67c1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_28.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_28.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83041303,0.60333032,-0.58456506,-0.80458483,181.1613,90.178228)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="20.288345"
+       inkscape:transform-center-y="-28.319085">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_29.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_29.svg
new file mode 100644
index 0000000..d0274b5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_29.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_29.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.86085085,0.55904302,-0.54165522,-0.83407595,180.22398,95.712929)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="18.722717"
+       inkscape:transform-center-y="-29.39596">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_3.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_3.svg
new file mode 100644
index 0000000..749b283
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_3.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.36784564,0.95827076,-0.92846582,0.35640463,117.09976,-23.568408)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="32.843863"
+       inkscape:transform-center-y="12.280027">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_30.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_30.svg
new file mode 100644
index 0000000..c20ca1d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_30.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_30.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.88892913,0.51322342,-0.49726074,-0.86128092,178.99828,101.19099)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="17.133267"
+       inkscape:transform-center-y="-30.389487">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_31.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_31.svg
new file mode 100644
index 0000000..a41fe18
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_31.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_31.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91457092,0.46599711,-0.4515033,-0.88612518,177.48756,106.59739)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="15.556683"
+       inkscape:transform-center-y="-31.296941">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_32.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_32.svg
new file mode 100644
index 0000000..01c0b8d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_32.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_32.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93770594,0.41749353,-0.40450832,-0.90854063,175.69596,111.91732)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="13.937461"
+       inkscape:transform-center-y="-32.115818">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_33.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_33.svg
new file mode 100644
index 0000000..2803210
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_33.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_33.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95827077,0.36784563,-0.35640461,-0.92846584,173.6284,117.1362)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="12.280028"
+       inkscape:transform-center-y="-32.843864">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_34.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_34.svg
new file mode 100644
index 0000000..ff26872
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_34.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_34.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97620905,0.31718949,-0.30732402,-0.94584619,171.29053,122.23971)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="11.061655"
+       inkscape:transform-center-y="-33.47909">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_35.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_35.svg
new file mode 100644
index 0000000..0edc1af
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_35.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.9914716,0.26566396,-0.25740108,-0.96063404,168.68877,127.21388)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="9.9667321"
+       inkscape:transform-center-y="-34.019726">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_36.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_36.svg
new file mode 100644
index 0000000..4a0c025
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_36.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_36.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0040166,0.21341026,-0.20677262,-0.97278886,165.83025,132.04506)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="8.8418811"
+       inkscape:transform-center-y="-34.464295">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_37.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_37.svg
new file mode 100644
index 0000000..a0a3b2f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_37.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_37.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0138097,0.16057162,-0.15557741,-0.98227733,162.7228,136.72002)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="6.9940198"
+       inkscape:transform-center-y="-34.81155">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_38.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_38.svg
new file mode 100644
index 0000000..24a3a14
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_38.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_38.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.020824,0.10729286,-0.10395577,-0.98907345,159.37494,141.22594)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="4.6733562"
+       inkscape:transform-center-y="-35.060528">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_39.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_39.svg
new file mode 100644
index 0000000..933217d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_39.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_39.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0250403,0.05372002,-0.0520492,-0.99315858,155.79585,145.55047)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="2.3398809"
+       inkscape:transform-center-y="-35.21052">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_4.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_4.svg
new file mode 100644
index 0000000..8327519
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_4.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_4.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.3171895,0.97620904,-0.94584617,0.30732404,122.20328,-21.230543)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="33.479079"
+       inkscape:transform-center-y="11.061649">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_40.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_40.svg
new file mode 100644
index 0000000..c6983a7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_40.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_40.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.026447,-6.5708448e-8,3.5604836e-8,-0.99452154,151.99534,149.68176)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-1.4318327e-005"
+       inkscape:transform-center-y="-35.261083">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_41.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_41.svg
new file mode 100644
index 0000000..4d6a38a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_41.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_41.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0250403,-0.05372014,0.05204927,-0.99315858,147.98382,153.60849)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-2.3399045"
+       inkscape:transform-center-y="-35.210515">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_42.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_42.svg
new file mode 100644
index 0000000..a3ccf58
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_42.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_42.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.020824,-0.10729298,0.10395584,-0.98907344,143.77229,157.31989)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-4.673385"
+       inkscape:transform-center-y="-35.060522">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_43.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_43.svg
new file mode 100644
index 0000000..66a5df9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_43.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_43.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0138097,-0.16057174,0.15557748,-0.98227732,139.37229,160.80579)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-6.994054"
+       inkscape:transform-center-y="-34.811542">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_44.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_44.svg
new file mode 100644
index 0000000..d21f36c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_44.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_44.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-1.0040166,-0.21341038,0.20677269,-0.97278885,134.79588,164.05663)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-8.8419025"
+       inkscape:transform-center-y="-34.464286">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_45.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_45.svg
new file mode 100644
index 0000000..70e2f55
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_45.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_45.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.99147159,-0.26566408,0.25740115,-0.96063403,130.05561,167.06351)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-9.966755"
+       inkscape:transform-center-y="-34.019716">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_46.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_46.svg
new file mode 100644
index 0000000..8e06c20
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_46.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_46.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.97620903,-0.31718961,0.30732409,-0.94584618,125.16447,169.81818)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-11.061682"
+       inkscape:transform-center-y="-33.479073">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_47.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_47.svg
new file mode 100644
index 0000000..9099236
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_47.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_47.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.95827075,-0.36784575,0.35640468,-0.92846583,120.13586,172.31309)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-12.280043"
+       inkscape:transform-center-y="-32.843852">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_48.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_48.svg
new file mode 100644
index 0000000..7513f95
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_48.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_48.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.93770591,-0.41749365,0.40450839,-0.90854062,114.98357,174.5414)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-13.937473"
+       inkscape:transform-center-y="-32.115805">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_49.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_49.svg
new file mode 100644
index 0000000..43e05bf
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_49.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_49.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.91457089,-0.46599722,0.45150337,-0.88612516,109.72172,176.49701)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-15.5567"
+       inkscape:transform-center-y="-31.296927">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_5.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_5.svg
new file mode 100644
index 0000000..3586d3a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_5.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_5.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.26566397,0.9914716,-0.96063402,0.2574011,127.17745,-18.628784)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.019715"
+       inkscape:transform-center-y="9.9667262">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_50.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_50.svg
new file mode 100644
index 0000000..2b0269f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_50.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_50.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.88892909,-0.51322353,0.49726081,-0.8612809,104.36473,178.17456)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-17.133285"
+       inkscape:transform-center-y="-30.389472">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_51.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_51.svg
new file mode 100644
index 0000000..d783688
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_51.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_51.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.8608508,-0.55904313,0.54165529,-0.83407592,98.927287,179.56944)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-18.722752"
+       inkscape:transform-center-y="-29.395946">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_52.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_52.svg
new file mode 100644
index 0000000..6ceb4dc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_52.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_52.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.83041298,-0.60333043,0.58456513,-0.8045848,93.424294,180.67784)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-20.288382"
+       inkscape:transform-center-y="-28.319068">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_53.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_53.svg
new file mode 100644
index 0000000..92ffafa
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_53.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_53.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.79769905,-0.64596404,0.62587272,-0.77288837,87.870833,181.49671)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-21.79572"
+       inkscape:transform-center-y="-27.16181">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_54.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_54.svg
new file mode 100644
index 0000000..47eb891
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_54.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_54.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.76279869,-0.68682711,0.66546484,-0.73907351,82.282126,182.02382)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-23.240617"
+       inkscape:transform-center-y="-25.927342">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_55.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_55.svg
new file mode 100644
index 0000000..2416e10
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_55.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_55.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.72580755,-0.72580764,0.70323296,-0.7032329,76.673492,182.25771)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-24.619098"
+       inkscape:transform-center-y="-24.619073">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_56.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_56.svg
new file mode 100644
index 0000000..ca081c8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_56.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_56.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.68682702,-0.76279878,0.73907357,-0.66546477,71.060303,182.19775)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-25.92737"
+       inkscape:transform-center-y="-23.240591">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_57.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_57.svg
new file mode 100644
index 0000000..a0a0c9e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_57.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_57.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.64596394,-0.79769914,0.77288843,-0.62587265,65.457945,181.8441)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-27.161834"
+       inkscape:transform-center-y="-21.795693">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_58.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_58.svg
new file mode 100644
index 0000000..91bb7e4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_58.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_58.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.60333032,-0.83041306,0.80458486,-0.58456506,59.881774,181.19773)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-28.319096"
+       inkscape:transform-center-y="-20.288355">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_59.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_59.svg
new file mode 100644
index 0000000..a8b674b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_59.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_59.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.55904302,-0.86085088,0.83407598,-0.54165522,54.347073,180.26041)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-29.395971"
+       inkscape:transform-center-y="-18.722727">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_6.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_6.svg
new file mode 100644
index 0000000..68bf620
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_6.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_6.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.21341027,1.0040166,-0.97278884,0.20677264,132.00863,-15.770263)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.464284"
+       inkscape:transform-center-y="8.8418762">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_60.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_60.svg
new file mode 100644
index 0000000..f4ce105
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_60.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_60.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.51322342,-0.88892916,0.86128095,-0.49726074,48.869013,179.03471)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-30.389499"
+       inkscape:transform-center-y="-17.133277">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_61.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_61.svg
new file mode 100644
index 0000000..03d604a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_61.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_61.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.46599711,-0.91457095,0.88612521,-0.4515033,43.462608,177.52399)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-31.296948"
+       inkscape:transform-center-y="-15.556693">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_62.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_62.svg
new file mode 100644
index 0000000..8e8983f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_62.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_62.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.41749353,-0.93770597,0.90854066,-0.40450832,38.142678,175.73239)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-32.115825"
+       inkscape:transform-center-y="-13.937471">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_63.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_63.svg
new file mode 100644
index 0000000..cdafad6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_63.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_63.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.36784563,-0.9582708,0.92846587,-0.35640461,32.923803,173.66483)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-32.843876"
+       inkscape:transform-center-y="-12.280038">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_64.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_64.svg
new file mode 100644
index 0000000..896e5ae
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_64.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_64.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.31718949,-0.97620908,0.94584622,-0.30732402,27.820288,171.32696)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-33.479097"
+       inkscape:transform-center-y="-11.061665">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_65.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_65.svg
new file mode 100644
index 0000000..3f99928
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_65.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_65.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.26566396,-0.99147163,0.96063407,-0.25740108,22.846122,168.7252)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.019737"
+       inkscape:transform-center-y="-9.9667424">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_66.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_66.svg
new file mode 100644
index 0000000..d6c0a9d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_66.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_66.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.21341026,-1.0040166,0.97278889,-0.20677262,18.014939,165.86668)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.464303"
+       inkscape:transform-center-y="-8.8418891">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_67.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_67.svg
new file mode 100644
index 0000000..e6983e1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_67.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_67.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.16057162,-1.0138097,0.98227736,-0.15557741,13.33998,162.75923)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.811559"
+       inkscape:transform-center-y="-6.9940278">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_68.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_68.svg
new file mode 100644
index 0000000..5246932
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_68.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_68.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.10729286,-1.020824,0.98907348,-0.10395577,8.8340594,159.41137)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-35.060536"
+       inkscape:transform-center-y="-4.6733642">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_69.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_69.svg
new file mode 100644
index 0000000..f7845d3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_69.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_69.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(-0.05372002,-1.0250403,0.99315861,-0.0520492,4.5095274,155.83228)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-35.210526"
+       inkscape:transform-center-y="-2.3398889">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_7.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_7.svg
new file mode 100644
index 0000000..b0daefe
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_7.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_7.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.16057163,1.0138097,-0.98227731,0.15557743,136.68359,-12.662815)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="34.811539"
+       inkscape:transform-center-y="6.9940133">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_70.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_70.svg
new file mode 100644
index 0000000..98d4b13
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_70.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_70.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(6.5708448e-8,-1.026447,0.99452157,3.7174915e-8,0.37823717,152.03177)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-35.261089">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_71.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_71.svg
new file mode 100644
index 0000000..83d4e32
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_71.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_71.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05372015,-1.0250403,0.99315861,0.05204927,-3.5484876,148.02025)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-35.210527"
+       inkscape:transform-center-y="2.33989">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_72.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_72.svg
new file mode 100644
index 0000000..42a7bb2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_72.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_72.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10729299,-1.020824,0.98907347,0.10395584,-7.2598842,143.80872)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-35.060537"
+       inkscape:transform-center-y="4.6733705">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_73.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_73.svg
new file mode 100644
index 0000000..4edc25e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_73.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_73.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.16057175,-1.0138097,0.98227735,0.15557748,-10.74578,139.40872)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.811561"
+       inkscape:transform-center-y="6.9940395">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_74.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_74.svg
new file mode 100644
index 0000000..57e0bf1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_74.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_74.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.21341039,-1.0040166,0.97278888,0.20677269,-13.99662,134.83231)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.464305"
+       inkscape:transform-center-y="8.841888">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_75.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_75.svg
new file mode 100644
index 0000000..8eabc82
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_75.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_75.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.26566409,-0.99147159,0.96063406,0.25740115,-17.003494,130.09204)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-34.019741"
+       inkscape:transform-center-y="9.9667405">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_76.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_76.svg
new file mode 100644
index 0000000..75ba075
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_76.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_76.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.31718962,-0.97620903,0.94584621,0.30732409,-19.758161,125.2009)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-33.479101"
+       inkscape:transform-center-y="11.061667">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_77.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_77.svg
new file mode 100644
index 0000000..17638b3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_77.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_77.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.36784576,-0.95827075,0.92846586,0.35640468,-22.25307,120.17229)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-32.843881"
+       inkscape:transform-center-y="12.280028">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_78.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_78.svg
new file mode 100644
index 0000000..f222c82
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_78.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_78.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.41749366,-0.93770591,0.90854065,0.40450839,-24.481383,115.02)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-32.115831"
+       inkscape:transform-center-y="13.937458">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_79.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_79.svg
new file mode 100644
index 0000000..471e948
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_79.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_79.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.46599723,-0.91457089,0.88612519,0.45150337,-26.436992,109.75815)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-31.296954"
+       inkscape:transform-center-y="15.556685">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_8.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_8.svg
new file mode 100644
index 0000000..483a0f8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_8.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_8.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.10729287,1.020824,-0.98907343,0.10395579,141.18951,-9.3149569)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="35.060517"
+       inkscape:transform-center-y="4.6733478">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_80.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_80.svg
new file mode 100644
index 0000000..3897a77
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_80.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_80.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.51322354,-0.88892909,0.86128093,0.49726081,-28.114537,104.40116)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-30.389504"
+       inkscape:transform-center-y="17.13327">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_81.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_81.svg
new file mode 100644
index 0000000..15c3157
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_81.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_81.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.55904314,-0.8608508,0.83407595,0.54165529,-29.50942,98.963719)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="-29.395975"
+       inkscape:transform-center-y="18.722739">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachohands/temp_9.svg b/skins/blackhole/themes/default/skinparts/tachohands/temp_9.svg
new file mode 100644
index 0000000..b1c8397
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachohands/temp_9.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150"
+   height="150"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 150 150"
+   sodipodi:docname="temp_9.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.1351511"
+     inkscape:cx="30.095283"
+     inkscape:cy="73.684984"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer6"
+     showgrid="false"
+     units="px"
+     showguides="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <g
+       id="g6296"
+       transform="matrix(0.05372003,1.0250403,-0.99315856,0.05204922,145.51404,-5.7358653)"
+       style="display:inline;opacity:0.8"
+       inkscape:transform-center-x="35.210509"
+       inkscape:transform-center-y="2.3398741">
+      <rect
+         ry="1.9714236"
+         inkscape:transform-center-y="34.553266"
+         inkscape:transform-center-x="-6.7619679e-005"
+         y="74.999992"
+         x="73.000046"
+         height="68.999992"
+         width="3.99999"
+         id="rect4647-0"
+         style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#999999;stroke-width:0;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path6288"
+         d="m 65.000024,119.99999 10,26 10,-26 z"
+         style="fill:#d40000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/tachos_back.svg b/skins/blackhole/themes/default/skinparts/tachos_back.svg
new file mode 100644
index 0000000..1425edf
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/tachos_back.svg
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="600"
+   height="150"
+   id="svg4482"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 600 150"
+   sodipodi:docname="tachos_back.svg">
+  <defs
+     id="defs4484">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5043">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5045" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5047" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5032">
+      <stop
+         style="stop-color:#555555;stop-opacity:1"
+         offset="0"
+         id="stop5034" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="1"
+         id="stop5036" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5032"
+       id="linearGradient5038"
+       x1="599.11041"
+       y1="750.20166"
+       x2="351.35126"
+       y2="1038.757"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043"
+       id="radialGradient5049"
+       cx="150"
+       cy="75"
+       fx="150"
+       fy="75"
+       r="1"
+       gradientTransform="matrix(1,0,0,75,0,-5550)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043"
+       id="radialGradient5053"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,75,150,-5550)"
+       cx="150"
+       cy="75"
+       fx="150"
+       fy="75"
+       r="1" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5043"
+       id="radialGradient5057"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,75,300,-5550)"
+       cx="150"
+       cy="75"
+       fx="150"
+       fy="75"
+       r="1" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.9545646"
+     inkscape:cx="304.59735"
+     inkscape:cy="74.034843"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4487">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-902.3622)">
+    <rect
+       style="fill:url(#linearGradient5038);fill-opacity:1"
+       id="rect5030"
+       width="600"
+       height="150"
+       x="0"
+       y="902.36224"
+       ry="0.99071312" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer 2">
+    <rect
+       style="fill:url(#radialGradient5049);fill-opacity:1"
+       id="rect5041"
+       width="2"
+       height="150"
+       x="149"
+       y="4.4408921e-016"
+       ry="1.0120623" />
+    <rect
+       ry="1.0120623"
+       y="4.4408921e-016"
+       x="299"
+       height="150"
+       width="2"
+       id="rect5051"
+       style="fill:url(#radialGradient5053);fill-opacity:1" />
+    <rect
+       style="fill:url(#radialGradient5057);fill-opacity:1"
+       id="rect5055"
+       width="2"
+       height="150"
+       x="449"
+       y="4.4408921e-016"
+       ry="1.0120623" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchback.svg b/skins/blackhole/themes/default/skinparts/watchback.svg
new file mode 100644
index 0000000..297be69
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchback.svg
@@ -0,0 +1,950 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="watchback.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4703">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1;"
+         offset="0"
+         id="stop4705" />
+      <stop
+         style="stop-color:#aaaaaa;stop-opacity:1"
+         offset="1"
+         id="stop4707" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4632">
+      <stop
+         style="stop-color:#111111;stop-opacity:1"
+         offset="0"
+         id="stop4634" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4636" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4593">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop4595" />
+      <stop
+         style="stop-color:#555555;stop-opacity:1"
+         offset="1"
+         id="stop4597" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4593"
+       id="linearGradient4626"
+       gradientUnits="userSpaceOnUse"
+       x1="89.300102"
+       y1="278.60709"
+       x2="217.84399"
+       y2="22.412598"
+       gradientTransform="matrix(0.96551722,0,0,0.96551714,5.1724164,5.172439)" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4628"
+       x="-0.011999981"
+       width="1.024"
+       y="-0.012000019"
+       height="1.024">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.3999911"
+         id="feGaussianBlur4630" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4632"
+       id="linearGradient4638"
+       x1="34.089806"
+       y1="271.97308"
+       x2="260.29636"
+       y2="24.454491"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:collect="always"
+       style="color-interpolation-filters:sRGB"
+       id="filter4644"
+       x="-0.011999981"
+       width="1.024"
+       y="-0.012000019"
+       height="1.024">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.4499908"
+         id="feGaussianBlur4646" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4709"
+       x1="-204.95076"
+       y1="47.005383"
+       x2="-205.42775"
+       y2="82.237648"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4717"
+       x1="-205.8251"
+       y1="-185.34164"
+       x2="-205.59959"
+       y2="-140.44257"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4727"
+       x1="-205.18201"
+       y1="155.57944"
+       x2="-205.15691"
+       y2="192.12451"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4735"
+       x1="-204.42682"
+       y1="-73.98455"
+       x2="-203.19908"
+       y2="-28.186365"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4745"
+       x1="-151.936"
+       y1="248.05977"
+       x2="-144.57596"
+       y2="316.51266"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4755"
+       x1="-54.153198"
+       y1="308.10574"
+       x2="-55.242977"
+       y2="373.39899"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4765"
+       x1="55.686234"
+       y1="305.61441"
+       x2="65.469177"
+       y2="397.63538"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4775"
+       x1="150.30801"
+       y1="279.82416"
+       x2="154.18004"
+       y2="200.03514"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4783"
+       x1="-151.5"
+       y1="21.983833"
+       x2="-147.19199"
+       y2="77.792557"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4791"
+       x1="-54.690376"
+       y1="78.919342"
+       x2="-50.80159"
+       y2="132.77943"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4799"
+       x1="55.284603"
+       y1="105.08643"
+       x2="50.025658"
+       y2="40.91032"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4703"
+       id="linearGradient4807"
+       x1="149.87201"
+       y1="52.004196"
+       x2="152"
+       y2="4.0435781"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Hintergrund"
+     style="display:inline">
+    <path
+       style="opacity:1;fill:url(#linearGradient4638);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4644)"
+       id="path4575"
+       sodipodi:type="arc"
+       sodipodi:cx="149.9996"
+       sodipodi:cy="149.9995"
+       sodipodi:rx="144.99931"
+       sodipodi:ry="144.99886"
+       sodipodi:start="3.1275602"
+       sodipodi:end="3.1002807"
+       sodipodi:open="true"
+       d="M 5.0145656,152.03412 A 144.99931,144.99886 0 0 1 146.97625,5.0321639 144.99931,144.99886 0 0 1 294.9434,145.98757 144.99931,144.99886 0 0 1 154.99994,294.91211 144.99931,144.99886 0 0 1 5.1240059,155.98798" />
+    <path
+       d="M 10.014058,151.96399 A 139.99933,139.99889 0 0 1 147.0805,10.031077 139.99933,139.99889 0 0 1 289.94533,146.12594 139.99933,139.99889 0 0 1 154.82751,289.91514 139.99933,139.99889 0 0 1 10.119725,155.78151"
+       sodipodi:open="true"
+       sodipodi:end="3.1002807"
+       sodipodi:start="3.1275602"
+       sodipodi:ry="139.99889"
+       sodipodi:rx="139.99933"
+       sodipodi:cy="149.99953"
+       sodipodi:cx="149.9996"
+       sodipodi:type="arc"
+       id="path4624"
+       style="opacity:1;fill:url(#linearGradient4626);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4628)" />
+  </g>
+  <g
+     inkscape:label="1 s Ticks"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-752.3622)"
+     style="display:inline">
+    <g
+       id="g4335"
+       transform="matrix(0.9945219,-0.10452846,0.10452846,0.9945219,-93.498077,20.674768)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4337"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4339"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(0.97814761,-0.20791169,0.20791169,0.97814761,-184.32286,51.009487)"
+       id="g4341"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4343"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4345"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4347"
+       transform="matrix(0.95105653,-0.30901699,0.30901699,0.95105653,-271.47926,90.671805)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4349"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4351"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(0.91354547,-0.40673664,0.40673664,0.91354547,-354.01236,139.22717)"
+       id="g4353"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4355"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4357"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       transform="matrix(0.80901701,-0.58778525,0.58778525,0.80901701,-501.65225,260.79751)"
+       id="g4365"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4367"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4369"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4371"
+       transform="matrix(0.74314484,-0.66913061,0.66913061,0.74314484,-565.14146,332.48054)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4373"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4375"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(0.66913062,-0.74314483,0.74314483,0.66913062,-620.78995,410.40731)"
+       id="g4377"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4379"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4381"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4383"
+       transform="matrix(0.58778527,-0.809017,0.809017,0.58778527,-667.98803,493.72404)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4385"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4387"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4395"
+       transform="matrix(0.40673666,-0.91354547,0.91354547,0.40673666,-735.06275,672.827)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4397"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4399"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(0.30901701,-0.95105653,0.95105653,0.30901701,-754.20451,766.65093)"
+       id="g4401"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4403"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4405"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4407"
+       transform="matrix(0.2079117,-0.97814762,0.97814762,0.2079117,-763.43413,861.96174)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4409"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4411"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(0.10452847,-0.99452192,0.99452192,0.10452847,-762.6505,957.71519)"
+       id="g4413"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4415"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4417"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       transform="matrix(-0.10452846,-0.9945219,0.9945219,-0.10452846,-731.18743,1146.3603)"
+       id="g4425"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4427"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4429"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4431"
+       transform="matrix(-0.20791169,-0.97814761,0.97814761,-0.20791169,-700.85271,1237.1851)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4433"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4435"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(-0.30901699,-0.95105653,0.95105653,-0.30901699,-661.19039,1324.3415)"
+       id="g4437"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4439"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4441"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4443"
+       transform="matrix(-0.40673664,-0.91354547,0.91354547,-0.40673664,-612.63502,1406.8746)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4445"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4447"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4455"
+       transform="matrix(-0.58778525,-0.80901701,0.80901701,-0.58778525,-491.06468,1554.5145)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4457"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4459"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(-0.66913061,-0.74314484,0.74314484,-0.66913061,-419.38165,1618.0037)"
+       id="g4461"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4463"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4465"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4467"
+       transform="matrix(-0.74314483,-0.66913062,0.66913062,-0.74314483,-341.45488,1673.6522)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4469"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4471"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(-0.809017,-0.58778527,0.58778527,-0.809017,-258.13815,1720.8503)"
+       id="g4473"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4475"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4477"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       transform="matrix(-0.91354547,-0.40673666,0.40673666,-0.91354547,-79.035195,1787.9251)"
+       id="g4485"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4487"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4489"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4491"
+       transform="matrix(-0.95105653,-0.30901701,0.30901701,-0.95105653,14.788736,1807.0669)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4493"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4495"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(-0.97814762,-0.2079117,0.2079117,-0.97814762,110.09955,1816.2965)"
+       id="g4497"
+       style="fill:#cccccc">
+      <rect
+         ry="0.31718317"
+         y="772.36218"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4499"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4501"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="1012.3622"
+         ry="0.31718317" />
+    </g>
+    <g
+       id="g4503"
+       transform="matrix(-0.99452192,-0.10452847,0.10452847,-0.99452192,205.853,1815.5129)"
+       style="fill:#cccccc">
+      <rect
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4505"
+         width="2.9999945"
+         height="19.999998"
+         x="149"
+         y="772.36218"
+         ry="0.31718317" />
+      <rect
+         ry="0.31718317"
+         y="1012.3622"
+         x="149"
+         height="19.999998"
+         width="2.9999945"
+         id="rect4507"
+         style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="5 s Ticks 1"
+     style="display:inline">
+    <rect
+       ry="0.47577462"
+       y="19.999983"
+       x="149"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4511"
+       style="opacity:1;fill:url(#linearGradient4807);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4775);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4513"
+       width="2.9999924"
+       height="29.999989"
+       x="149"
+       y="249.99998"
+       ry="0.47577462" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4799);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4523"
+       width="2.9999924"
+       height="29.999989"
+       x="53.836845"
+       y="75.153801"
+       ry="0.47577462"
+       transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" />
+    <rect
+       ry="0.47577462"
+       y="305.15381"
+       x="53.836845"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4525"
+       style="opacity:1;fill:url(#linearGradient4765);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" />
+    <rect
+       ry="0.47577462"
+       y="75.336823"
+       x="-56.153786"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4529"
+       style="opacity:1;fill:url(#linearGradient4791);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4755);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4531"
+       width="2.9999924"
+       height="29.999989"
+       x="-56.153786"
+       y="305.33682"
+       ry="0.47577462"
+       transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4783);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4535"
+       width="2.9999924"
+       height="29.999989"
+       x="-151.5"
+       y="20.500013"
+       ry="0.47577462"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <rect
+       ry="0.47577462"
+       y="250.50002"
+       x="-151.5"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4537"
+       style="opacity:1;fill:url(#linearGradient4745);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <rect
+       ry="0.47577462"
+       y="-74.663162"
+       x="-206.65381"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4541"
+       style="opacity:1;fill:url(#linearGradient4735);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4727);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4543"
+       width="2.9999924"
+       height="29.999989"
+       x="-206.65381"
+       y="155.33684"
+       ry="0.47577462"
+       transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)" />
+    <rect
+       style="opacity:1;fill:url(#linearGradient4717);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4547"
+       width="2.9999924"
+       height="29.999989"
+       x="-206.83685"
+       y="-184.65382"
+       ry="0.47577462"
+       transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
+    <rect
+       ry="0.47577462"
+       y="45.346169"
+       x="-206.83685"
+       height="29.999989"
+       width="2.9999924"
+       id="rect4549"
+       style="opacity:1;fill:url(#linearGradient4709);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Ziffern"
+     style="display:inline">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="136.77315"
+       y="69.322876"
+       id="text4602"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4604"
+         x="136.77315"
+         y="69.322876"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3">12</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text4606"
+       y="158.63371"
+       x="233.22884"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3"
+         y="158.63371"
+         x="233.22884"
+         id="tspan4608"
+         sodipodi:role="line">3</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="143.40765"
+       y="245.39281"
+       id="text4610"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4612"
+         x="143.40765"
+         y="245.39281"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3">6</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text4614"
+       y="158.63371"
+       x="53.07613"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b3b3b3"
+         y="158.63371"
+         x="53.07613"
+         id="tspan4616"
+         sodipodi:role="line">9</tspan></text>
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_0.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_0.svg
new file mode 100644
index 0000000..fc79b4c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_0.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_0.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-35.102415"
+       inkscape:transform-center-x="-0.1600401"
+       ry="0.26296809"
+       y="80.000008"
+       x="148"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_1.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_1.svg
new file mode 100644
index 0000000..3a9be10
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_1.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_1.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-34.893393"
+       inkscape:transform-center-x="-3.828363"
+       ry="0.26296809"
+       y="63.462925"
+       x="162.86639"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.9945219,0.10452846,-0.10452846,0.9945219,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_10.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_10.svg
new file mode 100644
index 0000000..2d36afd
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_10.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_10.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-17.412611"
+       inkscape:transform-center-x="-30.479598"
+       ry="0.26296809"
+       y="-125.24942"
+       x="202.82253"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.50000001,0.8660254,-0.8660254,0.50000001,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_11.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_11.svg
new file mode 100644
index 0000000..b3fd835
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_11.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_11.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-14.13124"
+       inkscape:transform-center-x="-32.13274"
+       ry="0.26296809"
+       y="-146.39264"
+       x="195.93419"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.40673665,0.91354545,-0.91354545,0.40673665,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_12.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_12.svg
new file mode 100644
index 0000000..8f6790e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_12.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_12.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-10.695045"
+       inkscape:transform-center-x="-33.433835"
+       ry="0.26296809"
+       y="-166.70001"
+       x="186.87352"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_13.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_13.svg
new file mode 100644
index 0000000..cfc7738
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_13.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_13.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-7.1416669"
+       inkscape:transform-center-x="-34.368619"
+       ry="0.26296809"
+       y="-185.94904"
+       x="175.73979"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.2079117,0.9781476,-0.9781476,0.2079117,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_14.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_14.svg
new file mode 100644
index 0000000..3b9123d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_14.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_14.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-3.5100451"
+       inkscape:transform-center-x="-34.926849"
+       ry="0.26296809"
+       y="-203.92882"
+       x="162.65498"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.10452847,0.99452189,-0.99452189,0.10452847,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_15.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_15.svg
new file mode 100644
index 0000000..1ad0f29
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_15.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="0.16003096"
+       inkscape:transform-center-x="-35.102412"
+       ry="0.26296809"
+       y="-220.44237"
+       x="147.76245"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0,1,-1,0,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_16.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_16.svg
new file mode 100644
index 0000000..d25b200
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_16.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_16.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="3.8283579"
+       inkscape:transform-center-x="-34.893388"
+       ry="0.26296809"
+       y="-235.30876"
+       x="131.22537"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.10452846,0.9945219,-0.9945219,-0.10452846,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_17.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_17.svg
new file mode 100644
index 0000000..c8651ca
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_17.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_17.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="7.4547398"
+       inkscape:transform-center-x="-34.302069"
+       ry="0.26296809"
+       y="-248.36513"
+       x="113.22492"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.20791169,0.9781476,-0.9781476,-0.20791169,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_18.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_18.svg
new file mode 100644
index 0000000..594f0b2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_18.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_18.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="10.99945"
+       inkscape:transform-center-x="-33.334935"
+       ry="0.26296809"
+       y="-259.46841"
+       x="93.958321"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_19.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_19.svg
new file mode 100644
index 0000000..4c2813f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_19.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_19.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="14.423637"
+       inkscape:transform-center-x="-32.002558"
+       ry="0.26296809"
+       y="-268.49695"
+       x="73.63665"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.40673664,0.91354546,-0.91354546,-0.40673664,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_2.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_2.svg
new file mode 100644
index 0000000..f0c400d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_2.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-34.302069"
+       inkscape:transform-center-x="-7.4547463"
+       ry="0.26296809"
+       y="45.462475"
+       x="175.92276"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.9781476,0.20791169,-0.20791169,0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_20.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_20.svg
new file mode 100644
index 0000000..7e0ce77
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_20.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_20.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="17.689801"
+       inkscape:transform-center-x="-30.319561"
+       ry="0.26296809"
+       y="-275.35184"
+       x="52.482567"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.5,0.86602541,-0.86602541,-0.5,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_21.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_21.svg
new file mode 100644
index 0000000..54230e0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_21.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_21.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="20.762154"
+       inkscape:transform-center-x="-28.304382"
+       ry="0.26296809"
+       y="-279.95798"
+       x="30.727837"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.58778525,0.809017,-0.809017,-0.58778525,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_22.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_22.svg
new file mode 100644
index 0000000..fd4b0c7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_22.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_22.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="23.607029"
+       inkscape:transform-center-x="-25.979092"
+       ry="0.26296809"
+       y="-282.26489"
+       x="8.6108074"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.6691306,0.74314483,-0.74314483,-0.6691306,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_23.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_23.svg
new file mode 100644
index 0000000..b025cd7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_23.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_23.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="26.193264"
+       inkscape:transform-center-x="-23.369171"
+       ry="0.26296809"
+       y="-282.24731"
+       x="-13.626201"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_24.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_24.svg
new file mode 100644
index 0000000..90db457
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_24.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_24.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="28.492515"
+       inkscape:transform-center-x="-20.503211"
+       ry="0.26296809"
+       y="-279.90543"
+       x="-35.739555"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.80901699,0.58778526,-0.58778526,-0.80901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_25.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_25.svg
new file mode 100644
index 0000000..82a04bf
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_25.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_25.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="30.479596"
+       inkscape:transform-center-x="-17.412613"
+       ry="0.26296809"
+       y="-275.26489"
+       x="-57.486977"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.8660254,0.50000001,-0.50000001,-0.8660254,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_26.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_26.svg
new file mode 100644
index 0000000..f189103
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_26.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_26.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="32.132736"
+       inkscape:transform-center-x="-14.131238"
+       ry="0.26296809"
+       y="-268.37656"
+       x="-78.630196"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.91354545,0.40673665,-0.40673665,-0.91354545,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_27.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_27.svg
new file mode 100644
index 0000000..851c98f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_27.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_27.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="33.433825"
+       inkscape:transform-center-x="-10.695038"
+       ry="0.26296809"
+       y="-259.31589"
+       x="-98.937561"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_28.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_28.svg
new file mode 100644
index 0000000..9bea225
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_28.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_28.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="34.368611"
+       inkscape:transform-center-x="-7.1416575"
+       ry="0.26296809"
+       y="-248.18216"
+       x="-118.18658"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.9781476,0.2079117,-0.2079117,-0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_29.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_29.svg
new file mode 100644
index 0000000..eb325b7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_29.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_29.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="34.926842"
+       inkscape:transform-center-x="-3.510042"
+       ry="0.26296809"
+       y="-235.09735"
+       x="-136.16637"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_3.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_3.svg
new file mode 100644
index 0000000..0a3f9f4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_3.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-33.334927"
+       inkscape:transform-center-x="-10.999445"
+       ry="0.26296809"
+       y="26.195871"
+       x="187.02603"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.95105652,0.30901699,-0.30901699,0.95105652,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_30.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_30.svg
new file mode 100644
index 0000000..d452484
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_30.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_30.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="35.102406"
+       inkscape:transform-center-x="0.16003948"
+       ry="0.26296809"
+       y="-220.20482"
+       x="-152.67992"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="scale(-1,-1)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_31.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_31.svg
new file mode 100644
index 0000000..20a0eb1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_31.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_31.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="34.893385"
+       inkscape:transform-center-x="3.8283651"
+       ry="0.26296809"
+       y="-203.66774"
+       x="-167.54631"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.9945219,-0.10452846,0.10452846,-0.9945219,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_32.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_32.svg
new file mode 100644
index 0000000..719a270
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_32.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_32.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="34.302056"
+       inkscape:transform-center-x="7.4547404"
+       ry="0.26296809"
+       y="-185.66728"
+       x="-180.60268"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.9781476,-0.20791169,0.20791169,-0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_33.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_33.svg
new file mode 100644
index 0000000..94ccc8c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_33.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_33.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="33.334914"
+       inkscape:transform-center-x="10.99945"
+       ry="0.26296809"
+       y="-166.40068"
+       x="-191.70595"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.95105652,-0.30901699,0.30901699,-0.95105652,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_34.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_34.svg
new file mode 100644
index 0000000..f0d1411
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_34.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_34.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="32.002546"
+       inkscape:transform-center-x="14.423637"
+       ry="0.26296809"
+       y="-146.07901"
+       x="-200.7345"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.91354546,-0.40673664,0.40673664,-0.91354546,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_35.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_35.svg
new file mode 100644
index 0000000..56cfc19
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_35.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="30.319552"
+       inkscape:transform-center-x="17.689803"
+       ry="0.26296809"
+       y="-124.92493"
+       x="-207.58939"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.86602541,-0.5,0.5,-0.86602541,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_36.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_36.svg
new file mode 100644
index 0000000..7527d65
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_36.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_36.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="28.304373"
+       inkscape:transform-center-x="20.76215"
+       ry="0.26296809"
+       y="-103.1702"
+       x="-212.19553"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_37.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_37.svg
new file mode 100644
index 0000000..a856d86
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_37.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_37.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="25.979083"
+       inkscape:transform-center-x="23.607026"
+       ry="0.26296809"
+       y="-81.053169"
+       x="-214.50244"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.74314483,-0.6691306,0.6691306,-0.74314483,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_38.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_38.svg
new file mode 100644
index 0000000..0f6298a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_38.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_38.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="23.369164"
+       inkscape:transform-center-x="26.193257"
+       ry="0.26296809"
+       y="-58.816162"
+       x="-214.48486"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_39.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_39.svg
new file mode 100644
index 0000000..f9f8135
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_39.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_39.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="20.503202"
+       inkscape:transform-center-x="28.492511"
+       ry="0.26296809"
+       y="-36.702808"
+       x="-212.14297"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.58778526,-0.80901699,0.80901699,-0.58778526,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_4.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_4.svg
new file mode 100644
index 0000000..36984ff
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_4.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_4.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-32.002558"
+       inkscape:transform-center-x="-14.423641"
+       ry="0.26296809"
+       y="5.8742027"
+       x="196.05458"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.91354546,0.40673664,-0.40673664,0.91354546,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_40.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_40.svg
new file mode 100644
index 0000000..f7112b9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_40.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_40.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="17.412603"
+       inkscape:transform-center-x="30.479595"
+       ry="0.26296809"
+       y="-14.955388"
+       x="-207.50244"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.50000001,-0.8660254,0.8660254,-0.50000001,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_41.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_41.svg
new file mode 100644
index 0000000..9c884d6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_41.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_41.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="14.131227"
+       inkscape:transform-center-x="32.132739"
+       ry="0.26296809"
+       y="6.18783"
+       x="-200.61411"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.40673665,-0.91354545,0.91354545,-0.40673665,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_42.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_42.svg
new file mode 100644
index 0000000..74f8bf4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_42.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_42.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="10.695027"
+       inkscape:transform-center-x="33.433828"
+       ry="0.26296809"
+       y="26.495197"
+       x="-191.55344"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_43.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_43.svg
new file mode 100644
index 0000000..99ece4a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_43.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_43.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="7.1416542"
+       inkscape:transform-center-x="34.368607"
+       ry="0.26296809"
+       y="45.744221"
+       x="-180.41971"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.2079117,-0.9781476,0.9781476,-0.2079117,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_44.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_44.svg
new file mode 100644
index 0000000..8e32086
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_44.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_44.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="3.5100336"
+       inkscape:transform-center-x="34.92684"
+       ry="0.26296809"
+       y="63.724003"
+       x="-167.3349"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_45.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_45.svg
new file mode 100644
index 0000000..45c24f9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_45.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_45.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-0.16004645"
+       inkscape:transform-center-x="35.102406"
+       ry="0.26296809"
+       y="80.237556"
+       x="-152.44237"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0,-1,1,0,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_46.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_46.svg
new file mode 100644
index 0000000..aa998f0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_46.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_46.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-3.8283676"
+       inkscape:transform-center-x="34.893384"
+       ry="0.26296809"
+       y="95.103951"
+       x="-135.90529"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.10452846,-0.9945219,0.9945219,0.10452846,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_47.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_47.svg
new file mode 100644
index 0000000..40badec
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_47.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_47.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-7.4547472"
+       inkscape:transform-center-x="34.302065"
+       ry="0.26296809"
+       y="108.16031"
+       x="-117.90484"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.20791169,-0.9781476,0.9781476,0.20791169,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_48.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_48.svg
new file mode 100644
index 0000000..0ae50ab
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_48.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_48.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-10.999449"
+       inkscape:transform-center-x="33.33492"
+       ry="0.26296809"
+       y="119.26359"
+       x="-98.638237"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_49.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_49.svg
new file mode 100644
index 0000000..34d499a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_49.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_49.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-14.423644"
+       inkscape:transform-center-x="32.002555"
+       ry="0.26296809"
+       y="128.29213"
+       x="-78.316566"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.40673664,-0.91354546,0.91354546,0.40673664,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_5.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_5.svg
new file mode 100644
index 0000000..67a8a19
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_5.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_5.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-30.319564"
+       inkscape:transform-center-x="-17.689802"
+       ry="0.26296809"
+       y="-15.279881"
+       x="202.90947"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.86602541,0.5,-0.5,0.86602541,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_50.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_50.svg
new file mode 100644
index 0000000..33489c2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_50.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_50.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-17.689808"
+       inkscape:transform-center-x="30.319563"
+       ry="0.26296809"
+       y="135.14702"
+       x="-57.162483"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.5,-0.86602541,0.86602541,0.5,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_51.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_51.svg
new file mode 100644
index 0000000..a144d3e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_51.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_51.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-20.762157"
+       inkscape:transform-center-x="28.304379"
+       ry="0.26296809"
+       y="139.75316"
+       x="-35.407753"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.58778525,-0.809017,0.809017,0.58778525,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_52.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_52.svg
new file mode 100644
index 0000000..a10ac1e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_52.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_52.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-23.607034"
+       inkscape:transform-center-x="25.979088"
+       ry="0.26296809"
+       y="142.06007"
+       x="-13.290724"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.6691306,-0.74314483,0.74314483,0.6691306,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_53.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_53.svg
new file mode 100644
index 0000000..cf7d1f3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_53.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_53.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-26.193264"
+       inkscape:transform-center-x="23.369163"
+       ry="0.26296809"
+       y="142.0425"
+       x="8.9462843"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.74314482,-0.66913061,0.66913061,0.74314482,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_54.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_54.svg
new file mode 100644
index 0000000..9819b1c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_54.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_54.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-28.492519"
+       inkscape:transform-center-x="20.503204"
+       ry="0.26296809"
+       y="139.70061"
+       x="31.059637"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.80901699,-0.58778526,0.58778526,0.80901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_55.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_55.svg
new file mode 100644
index 0000000..39e2072
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_55.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_55.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-30.479604"
+       inkscape:transform-center-x="17.412608"
+       ry="0.26296809"
+       y="135.06007"
+       x="52.807056"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.8660254,-0.50000001,0.50000001,0.8660254,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_56.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_56.svg
new file mode 100644
index 0000000..ed48711
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_56.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_56.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-32.132748"
+       inkscape:transform-center-x="14.131238"
+       ry="0.26296809"
+       y="128.17174"
+       x="73.950272"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.91354545,-0.40673665,0.40673665,0.91354545,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_57.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_57.svg
new file mode 100644
index 0000000..b3bb4cb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_57.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_57.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-33.433839"
+       inkscape:transform-center-x="10.695041"
+       ry="0.26296809"
+       y="119.11107"
+       x="94.257637"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.95105651,-0.309017,0.309017,0.95105651,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_58.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_58.svg
new file mode 100644
index 0000000..02d9434
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_58.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_58.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-34.368619"
+       inkscape:transform-center-x="7.1416629"
+       ry="0.26296809"
+       y="107.97734"
+       x="113.50666"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.9781476,-0.2079117,0.2079117,0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_59.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_59.svg
new file mode 100644
index 0000000..5a9e002
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_59.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_59.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.4694444"
+     inkscape:cx="144.5"
+     inkscape:cy="144"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-34.926852"
+       inkscape:transform-center-x="3.5100357"
+       ry="0.26296809"
+       y="94.892532"
+       x="131.48645"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.99452189,-0.10452847,0.10452847,0.99452189,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_6.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_6.svg
new file mode 100644
index 0000000..63dff34
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_6.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_6.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-28.30438"
+       inkscape:transform-center-x="-20.762155"
+       ry="0.26296809"
+       y="-37.034611"
+       x="207.51561"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_7.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_7.svg
new file mode 100644
index 0000000..b7e04b6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_7.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_7.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-25.979089"
+       inkscape:transform-center-x="-23.60703"
+       ry="0.26296809"
+       y="-59.151638"
+       x="209.82253"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.74314483,0.6691306,-0.6691306,0.74314483,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_8.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_8.svg
new file mode 100644
index 0000000..6a1af52
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_8.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_8.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-23.369166"
+       inkscape:transform-center-x="-26.193266"
+       ry="0.26296809"
+       y="-81.388649"
+       x="209.80495"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/h_9.svg b/skins/blackhole/themes/default/skinparts/watchhands/h_9.svg
new file mode 100644
index 0000000..af499e5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/h_9.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="h_9.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-80.75477"
+     inkscape:cy="190.98862"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       inkscape:transform-center-y="-20.503206"
+       inkscape:transform-center-x="-28.492515"
+       ry="0.26296809"
+       y="-103.502"
+       x="207.46306"
+       height="69.999992"
+       width="4.9999952"
+       id="rect4811"
+       style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.58778526,0.80901699,-0.80901699,0.58778526,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_0.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_0.svg
new file mode 100644
index 0000000..fe740c8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_0.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_0.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="148.00002"
+       y="60.000004"
+       ry="0.33810186"
+       inkscape:transform-center-x="-0.16005756"
+       inkscape:transform-center-y="-45.131682" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_1.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_1.svg
new file mode 100644
index 0000000..cc7d420
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_1.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_1.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="162.86948"
+       y="43.462761"
+       ry="0.33810186"
+       inkscape:transform-center-x="-4.8767323"
+       inkscape:transform-center-y="-44.867716"
+       transform="matrix(0.9945219,0.10452846,-0.10452846,0.9945219,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_10.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_10.svg
new file mode 100644
index 0000000..27598d5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_10.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_10.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="202.8479"
+       y="-145.26405"
+       ry="0.33810186"
+       inkscape:transform-center-x="-39.165217"
+       inkscape:transform-center-y="-22.427216"
+       transform="matrix(0.50000001,0.8660254,-0.8660254,0.50000001,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_11.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_11.svg
new file mode 100644
index 0000000..66ecef0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_11.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_11.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="195.96095"
+       y="-166.41"
+       ry="0.33810186"
+       inkscape:transform-center-x="-41.294947"
+       inkscape:transform-center-y="-18.210481"
+       transform="matrix(0.40673664,0.91354546,-0.91354546,0.40673664,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_12.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_12.svg
new file mode 100644
index 0000000..1657d4d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_12.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_12.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="186.90138"
+       y="-186.72023"
+       ry="0.33810186"
+       inkscape:transform-center-x="-42.972243"
+       inkscape:transform-center-y="-13.794225"
+       transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_13.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_13.svg
new file mode 100644
index 0000000..0442293
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_13.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_13.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="175.76845"
+       y="-205.97221"
+       ry="0.33810186"
+       inkscape:transform-center-x="-44.178728"
+       inkscape:transform-center-y="-9.226836"
+       transform="matrix(0.20791169,0.9781476,-0.9781476,0.20791169,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_14.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_14.svg
new file mode 100644
index 0000000..bf78351
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_14.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_14.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="162.68411"
+       y="-223.95502"
+       ry="0.33810186"
+       inkscape:transform-center-x="-44.901174"
+       inkscape:transform-center-y="-4.55836"
+       transform="matrix(0.10452846,0.9945219,-0.9945219,0.10452846,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_15.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_15.svg
new file mode 100644
index 0000000..3e8c402
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_15.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="147.79175"
+       y="-240.47163"
+       ry="0.33810186"
+       inkscape:transform-center-x="-45.131684"
+       inkscape:transform-center-y="0.16006331"
+       transform="matrix(0,1,-1,0,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_16.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_16.svg
new file mode 100644
index 0000000..d2cd2af
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_16.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_16.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="131.2545"
+       y="-255.34109"
+       ry="0.33810186"
+       inkscape:transform-center-x="-44.867724"
+       inkscape:transform-center-y="4.8767272"
+       transform="matrix(-0.10452846,0.9945219,-0.9945219,-0.10452846,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_17.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_17.svg
new file mode 100644
index 0000000..0c719e8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_17.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_17.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="113.25357"
+       y="-268.40048"
+       ry="0.33810186"
+       inkscape:transform-center-x="-44.112176"
+       inkscape:transform-center-y="9.5399651"
+       transform="matrix(-0.20791169,0.9781476,-0.9781476,-0.20791169,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_18.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_18.svg
new file mode 100644
index 0000000..32c72f6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_18.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_18.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="93.986176"
+       y="-279.50671"
+       ry="0.33810186"
+       inkscape:transform-center-x="-42.873323"
+       inkscape:transform-center-y="14.098682"
+       transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_19.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_19.svg
new file mode 100644
index 0000000..b37c85c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_19.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_19.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="73.663406"
+       y="-288.53812"
+       ry="0.33810186"
+       inkscape:transform-center-x="-41.164744"
+       inkscape:transform-center-y="18.502927"
+       transform="matrix(-0.40673664,0.91354546,-0.91354546,-0.40673664,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_2.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_2.svg
new file mode 100644
index 0000000..52a594a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_2.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="175.92886"
+       y="25.46183"
+       ry="0.33810186"
+       inkscape:transform-center-x="-9.5399696"
+       inkscape:transform-center-y="-44.112169"
+       transform="matrix(0.9781476,0.20791169,-0.20791169,0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_20.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_20.svg
new file mode 100644
index 0000000..e86a080
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_20.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_20.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="52.507931"
+       y="-295.39575"
+       ry="0.33810186"
+       inkscape:transform-center-x="-39.00517"
+       inkscape:transform-center-y="22.70446"
+       transform="matrix(-0.5,0.86602541,-0.86602541,-0.5,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_21.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_21.svg
new file mode 100644
index 0000000..92777ba
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_21.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_21.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="30.751532"
+       y="-300.00446"
+       ry="0.33810186"
+       inkscape:transform-center-x="-36.418231"
+       inkscape:transform-center-y="26.657231"
+       transform="matrix(-0.58778525,0.809017,-0.809017,-0.58778525,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_22.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_22.svg
new file mode 100644
index 0000000..ce8990f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_22.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_22.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="8.632576"
+       y="-302.31375"
+       ry="0.33810186"
+       inkscape:transform-center-x="-33.432288"
+       inkscape:transform-center-y="30.317941"
+       transform="matrix(-0.6691306,0.74314483,-0.74314483,-0.6691306,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_23.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_23.svg
new file mode 100644
index 0000000..775d19c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_23.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_23.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-13.606597"
+       y="-302.29834"
+       ry="0.33810186"
+       inkscape:transform-center-x="-30.080056"
+       inkscape:transform-center-y="33.646485"
+       transform="matrix(-0.74314482,0.66913061,-0.66913061,-0.74314482,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_24.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_24.svg
new file mode 100644
index 0000000..549c48f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_24.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_24.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-35.722332"
+       y="-299.95837"
+       ry="0.33810186"
+       inkscape:transform-center-x="-26.398256"
+       inkscape:transform-center-y="36.60638"
+       transform="matrix(-0.80901699,0.58778526,-0.58778526,-0.80901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_25.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_25.svg
new file mode 100644
index 0000000..bd016d3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_25.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_25.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-57.472321"
+       y="-295.31952"
+       ry="0.33810186"
+       inkscape:transform-center-x="-22.427239"
+       inkscape:transform-center-y="39.165222"
+       transform="matrix(-0.8660254,0.50000001,-0.50000001,-0.8660254,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_26.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_26.svg
new file mode 100644
index 0000000..d481659
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_26.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_26.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-78.618271"
+       y="-288.43259"
+       ry="0.33810186"
+       inkscape:transform-center-x="-18.210506"
+       inkscape:transform-center-y="41.294963"
+       transform="matrix(-0.91354545,0.40673665,-0.40673665,-0.91354545,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_27.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_27.svg
new file mode 100644
index 0000000..b6d8af5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_27.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_27.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-98.928497"
+       y="-279.37302"
+       ry="0.33810186"
+       inkscape:transform-center-x="-13.794247"
+       inkscape:transform-center-y="42.97226"
+       transform="matrix(-0.95105651,0.309017,-0.309017,-0.95105651,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_28.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_28.svg
new file mode 100644
index 0000000..21122d4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_28.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_28.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-118.18048"
+       y="-268.24008"
+       ry="0.33810186"
+       inkscape:transform-center-x="-9.2268599"
+       inkscape:transform-center-y="44.178747"
+       transform="matrix(-0.9781476,0.2079117,-0.2079117,-0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_29.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_29.svg
new file mode 100644
index 0000000..ab99cc3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_29.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_29.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-136.16328"
+       y="-255.15575"
+       ry="0.33810186"
+       inkscape:transform-center-x="-4.5583706"
+       inkscape:transform-center-y="44.901194"
+       transform="matrix(-0.99452189,0.10452847,-0.10452847,-0.99452189,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_3.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_3.svg
new file mode 100644
index 0000000..033130d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_3.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="187.0351"
+       y="6.1944332"
+       ry="0.33810186"
+       inkscape:transform-center-x="-14.098682"
+       inkscape:transform-center-y="-42.873322"
+       transform="matrix(0.95105652,0.30901699,-0.30901699,0.95105652,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_30.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_30.svg
new file mode 100644
index 0000000..0de0ca7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_30.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_30.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-152.6799"
+       y="-240.26338"
+       ry="0.33810186"
+       inkscape:transform-center-x="0.16004943"
+       inkscape:transform-center-y="45.131705"
+       transform="scale(-1,-1)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_31.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_31.svg
new file mode 100644
index 0000000..1e9544e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_31.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_31.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-167.54936"
+       y="-223.72614"
+       ry="0.33810186"
+       inkscape:transform-center-x="4.8767134"
+       inkscape:transform-center-y="44.867735"
+       transform="matrix(-0.9945219,-0.10452846,0.10452846,-0.9945219,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_32.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_32.svg
new file mode 100644
index 0000000..644ee12
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_32.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_32.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-180.60875"
+       y="-205.7252"
+       ry="0.33810186"
+       inkscape:transform-center-x="9.5399546"
+       inkscape:transform-center-y="44.112188"
+       transform="matrix(-0.9781476,-0.20791169,0.20791169,-0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_33.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_33.svg
new file mode 100644
index 0000000..10f1fe3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_33.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_33.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-191.71498"
+       y="-186.45781"
+       ry="0.33810186"
+       inkscape:transform-center-x="14.098677"
+       inkscape:transform-center-y="42.87334"
+       transform="matrix(-0.95105652,-0.30901699,0.30901699,-0.95105652,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_34.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_34.svg
new file mode 100644
index 0000000..b6b76dc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_34.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_34.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-200.74638"
+       y="-166.13504"
+       ry="0.33810186"
+       inkscape:transform-center-x="18.502928"
+       inkscape:transform-center-y="41.164758"
+       transform="matrix(-0.91354546,-0.40673664,0.40673664,-0.91354546,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_35.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_35.svg
new file mode 100644
index 0000000..15db93b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_35.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-207.604"
+       y="-144.97957"
+       ry="0.33810186"
+       inkscape:transform-center-x="22.704458"
+       inkscape:transform-center-y="39.005173"
+       transform="matrix(-0.86602541,-0.5,0.5,-0.86602541,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_36.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_36.svg
new file mode 100644
index 0000000..406e0c2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_36.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_36.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-212.21271"
+       y="-123.22317"
+       ry="0.33810186"
+       inkscape:transform-center-x="26.657232"
+       inkscape:transform-center-y="36.418233"
+       transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_37.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_37.svg
new file mode 100644
index 0000000..6d4808b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_37.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_37.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-214.522"
+       y="-101.10421"
+       ry="0.33810186"
+       inkscape:transform-center-x="30.317942"
+       inkscape:transform-center-y="33.432288"
+       transform="matrix(-0.74314483,-0.6691306,0.6691306,-0.74314483,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_38.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_38.svg
new file mode 100644
index 0000000..9b1c617
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_38.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_38.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-214.50659"
+       y="-78.865036"
+       ry="0.33810186"
+       inkscape:transform-center-x="33.64648"
+       inkscape:transform-center-y="30.080057"
+       transform="matrix(-0.66913061,-0.74314482,0.74314482,-0.66913061,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_39.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_39.svg
new file mode 100644
index 0000000..0ad3381
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_39.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_39.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-212.16664"
+       y="-56.749302"
+       ry="0.33810186"
+       inkscape:transform-center-x="36.606378"
+       inkscape:transform-center-y="26.398266"
+       transform="matrix(-0.58778526,-0.80901699,0.80901699,-0.58778526,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_4.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_4.svg
new file mode 100644
index 0000000..56429dc
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_4.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_4.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="196.0665"
+       y="-14.128333"
+       ry="0.33810186"
+       inkscape:transform-center-x="-18.502929"
+       inkscape:transform-center-y="-41.164745"
+       transform="matrix(0.91354546,0.40673664,-0.40673664,0.91354546,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_40.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_40.svg
new file mode 100644
index 0000000..0f50408
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_40.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_40.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-207.52779"
+       y="-34.999313"
+       ry="0.33810186"
+       inkscape:transform-center-x="39.165211"
+       inkscape:transform-center-y="22.427252"
+       transform="matrix(-0.50000001,-0.8660254,0.8660254,-0.50000001,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_41.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_41.svg
new file mode 100644
index 0000000..13d2cfe
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_41.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_41.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-200.64084"
+       y="-13.853366"
+       ry="0.33810186"
+       inkscape:transform-center-x="41.294948"
+       inkscape:transform-center-y="18.210509"
+       transform="matrix(-0.40673665,-0.91354545,0.91354545,-0.40673665,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_42.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_42.svg
new file mode 100644
index 0000000..604c4cb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_42.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_42.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-191.58127"
+       y="6.4568601"
+       ry="0.33810186"
+       inkscape:transform-center-x="42.972247"
+       inkscape:transform-center-y="13.794251"
+       transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_43.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_43.svg
new file mode 100644
index 0000000..3ce6918
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_43.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_43.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-180.44833"
+       y="25.708841"
+       ry="0.33810186"
+       inkscape:transform-center-x="44.178731"
+       inkscape:transform-center-y="9.2268642"
+       transform="matrix(-0.2079117,-0.9781476,0.9781476,-0.2079117,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_44.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_44.svg
new file mode 100644
index 0000000..f585fc8
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_44.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_44.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-167.364"
+       y="43.69165"
+       ry="0.33810186"
+       inkscape:transform-center-x="44.901186"
+       inkscape:transform-center-y="4.5583765"
+       transform="matrix(-0.10452847,-0.99452189,0.99452189,-0.10452847,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_45.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_45.svg
new file mode 100644
index 0000000..0db4bd6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_45.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_45.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-152.47163"
+       y="60.208263"
+       ry="0.33810186"
+       inkscape:transform-center-x="45.131692"
+       inkscape:transform-center-y="-0.16004275"
+       transform="matrix(0,-1,1,0,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_46.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_46.svg
new file mode 100644
index 0000000..4da739a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_46.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_46.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-135.93439"
+       y="75.077721"
+       ry="0.33810186"
+       inkscape:transform-center-x="44.867724"
+       inkscape:transform-center-y="-4.8767176"
+       transform="matrix(0.10452846,-0.9945219,0.9945219,0.10452846,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_47.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_47.svg
new file mode 100644
index 0000000..3a64bd9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_47.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_47.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-117.93346"
+       y="88.137108"
+       ry="0.33810186"
+       inkscape:transform-center-x="44.112179"
+       inkscape:transform-center-y="-9.5399581"
+       transform="matrix(0.20791169,-0.9781476,0.9781476,0.20791169,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_48.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_48.svg
new file mode 100644
index 0000000..1e327fb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_48.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_48.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-98.666061"
+       y="99.243347"
+       ry="0.33810186"
+       inkscape:transform-center-x="42.873328"
+       inkscape:transform-center-y="-14.098673"
+       transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_49.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_49.svg
new file mode 100644
index 0000000..a8ee213
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_49.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_49.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-78.3433"
+       y="108.27475"
+       ry="0.33810186"
+       inkscape:transform-center-x="41.164754"
+       inkscape:transform-center-y="-18.502919"
+       transform="matrix(0.40673664,-0.91354546,0.91354546,0.40673664,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_5.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_5.svg
new file mode 100644
index 0000000..0089db4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_5.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_5.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="202.92412"
+       y="-35.283806"
+       ry="0.33810186"
+       inkscape:transform-center-x="-22.704454"
+       inkscape:transform-center-y="-39.005156"
+       transform="matrix(0.86602541,0.5,-0.5,0.86602541,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_50.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_50.svg
new file mode 100644
index 0000000..8054684
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_50.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_50.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-57.187824"
+       y="115.13237"
+       ry="0.33810186"
+       inkscape:transform-center-x="39.005168"
+       inkscape:transform-center-y="-22.704448"
+       transform="matrix(0.5,-0.86602541,0.86602541,0.5,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_51.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_51.svg
new file mode 100644
index 0000000..93aaf1c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_51.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_51.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-35.431427"
+       y="119.74107"
+       ry="0.33810186"
+       inkscape:transform-center-x="36.418235"
+       inkscape:transform-center-y="-26.657221"
+       transform="matrix(0.58778525,-0.809017,0.809017,0.58778525,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_52.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_52.svg
new file mode 100644
index 0000000..bb69fb3
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_52.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_52.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="-13.312471"
+       y="122.05037"
+       ry="0.33810186"
+       inkscape:transform-center-x="33.432294"
+       inkscape:transform-center-y="-30.317933"
+       transform="matrix(0.6691306,-0.74314483,0.74314483,0.6691306,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_53.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_53.svg
new file mode 100644
index 0000000..cc62002
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_53.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_53.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="8.9267015"
+       y="122.03496"
+       ry="0.33810186"
+       inkscape:transform-center-x="30.080059"
+       inkscape:transform-center-y="-33.646472"
+       transform="matrix(0.74314482,-0.66913061,0.66913061,0.74314482,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_54.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_54.svg
new file mode 100644
index 0000000..564ac1d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_54.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_54.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="31.042435"
+       y="119.695"
+       ry="0.33810186"
+       inkscape:transform-center-x="26.398263"
+       inkscape:transform-center-y="-36.606376"
+       transform="matrix(0.80901699,-0.58778526,0.58778526,0.80901699,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_55.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_55.svg
new file mode 100644
index 0000000..ad00b96
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_55.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_55.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="52.792423"
+       y="115.05614"
+       ry="0.33810186"
+       inkscape:transform-center-x="22.427242"
+       inkscape:transform-center-y="-39.165213"
+       transform="matrix(0.8660254,-0.50000001,0.50000001,0.8660254,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_56.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_56.svg
new file mode 100644
index 0000000..d4289ef
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_56.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_56.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="73.93837"
+       y="108.1692"
+       ry="0.33810186"
+       inkscape:transform-center-x="18.210504"
+       inkscape:transform-center-y="-41.294945"
+       transform="matrix(0.91354545,-0.40673665,0.40673665,0.91354545,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_57.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_57.svg
new file mode 100644
index 0000000..1bc4ad4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_57.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_57.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="94.248596"
+       y="99.109627"
+       ry="0.33810186"
+       inkscape:transform-center-x="13.794248"
+       inkscape:transform-center-y="-42.972244"
+       transform="matrix(0.95105651,-0.309017,0.309017,0.95105651,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_58.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_58.svg
new file mode 100644
index 0000000..e93b706
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_58.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_58.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="113.50058"
+       y="87.976692"
+       ry="0.33810186"
+       inkscape:transform-center-x="9.2268556"
+       inkscape:transform-center-y="-44.178728"
+       transform="matrix(0.9781476,-0.2079117,0.2079117,0.9781476,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_59.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_59.svg
new file mode 100644
index 0000000..8680cce
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_59.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_59.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="131.48338"
+       y="74.892365"
+       ry="0.33810186"
+       inkscape:transform-center-x="4.5583813"
+       inkscape:transform-center-y="-44.90118"
+       transform="matrix(0.99452189,-0.10452847,0.10452847,0.99452189,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_6.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_6.svg
new file mode 100644
index 0000000..9dc0882
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_6.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_6.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="207.53282"
+       y="-57.040207"
+       ry="0.33810186"
+       inkscape:transform-center-x="-26.657225"
+       inkscape:transform-center-y="-36.418224"
+       transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_7.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_7.svg
new file mode 100644
index 0000000..ae6dbd6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_7.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_7.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="209.84212"
+       y="-79.159164"
+       ry="0.33810186"
+       inkscape:transform-center-x="-30.317935"
+       inkscape:transform-center-y="-33.432285"
+       transform="matrix(0.74314483,0.6691306,-0.6691306,0.74314483,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_8.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_8.svg
new file mode 100644
index 0000000..284be20
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_8.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_8.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="209.82671"
+       y="-101.39834"
+       ry="0.33810186"
+       inkscape:transform-center-x="-33.646478"
+       inkscape:transform-center-y="-30.08005"
+       transform="matrix(0.66913061,0.74314482,-0.74314482,0.66913061,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/m_9.svg b/skins/blackhole/themes/default/skinparts/watchhands/m_9.svg
new file mode 100644
index 0000000..831d712
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/m_9.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="m_9.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3897849"
+     inkscape:cx="145"
+     inkscape:cy="159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4809"
+       width="4.9999943"
+       height="89.999992"
+       x="207.48676"
+       y="-123.51407"
+       ry="0.33810186"
+       inkscape:transform-center-x="-36.606382"
+       inkscape:transform-center-y="-26.398246"
+       transform="matrix(0.58778526,0.80901699,-0.80901699,0.58778526,0,0)" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_0.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_0.svg
new file mode 100644
index 0000000..21cb0f7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_0.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_0.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="30.031693"
+       x="148.98105"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.99999998,-2.1071537e-4,2.1071537e-4,0.99999998,0,0)"
+       inkscape:transform-center-x="-0.22827304"
+       inkscape:transform-center-y="-59.824822" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_1.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_1.svg
new file mode 100644
index 0000000..1ee8c87
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_1.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_1.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="13.506389"
+       x="163.82228"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.9945439,0.1043189,-0.1043189,0.9945439,0,0)"
+       inkscape:transform-center-x="-6.4804172"
+       inkscape:transform-center-y="-59.473235" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_10.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_10.svg
new file mode 100644
index 0000000..4ea8b4a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_10.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_10.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-175.00835"
+       x="203.64046"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.50018246,0.86592003,-0.86592003,0.50018246,0,0)"
+       inkscape:transform-center-x="-51.92395"
+       inkscape:transform-center-y="-29.71473" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_11.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_11.svg
new file mode 100644
index 0000000..560667c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_11.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_11.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-196.12389"
+       x="196.74974"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.40692912,0.91345974,-0.91345974,0.40692912,0,0)"
+       inkscape:transform-center-x="-54.745543"
+       inkscape:transform-center-y="-24.12442" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_12.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_12.svg
new file mode 100644
index 0000000..90c20b9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_12.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_12.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-216.40347"
+       x="187.68961"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.30921738,0.95099138,-0.95099138,0.30921738,0,0)"
+       inkscape:transform-center-x="-56.96733"
+       inkscape:transform-center-y="-18.269791" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_13.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_13.svg
new file mode 100644
index 0000000..ce12797
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_13.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_13.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-235.62492"
+       x="176.5593"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.20811779,0.97810377,-0.97810377,0.20811779,0,0)"
+       inkscape:transform-center-x="-58.564969"
+       inkscape:transform-center-y="-12.215005" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_14.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_14.svg
new file mode 100644
index 0000000..2374b55
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_14.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_14.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-253.57765"
+       x="163.48077"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.10473802,0.99449985,-0.99449985,0.10473802,0,0)"
+       inkscape:transform-center-x="-59.520968"
+       inkscape:transform-center-y="-6.0263875" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_15.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_15.svg
new file mode 100644
index 0000000..7370a78
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_15.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-270.06494"
+       x="148.59734"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(2.1071313e-4,0.99999998,-0.99999998,2.1071313e-4,0,0)"
+       inkscape:transform-center-x="-59.824828"
+       inkscape:transform-center-y="0.22826732" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_16.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_16.svg
new file mode 100644
index 0000000..1c887f1
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_16.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_16.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-284.90619"
+       x="132.07205"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.1043189,0.9945439,-0.9945439,-0.1043189,0,0)"
+       inkscape:transform-center-x="-59.473252"
+       inkscape:transform-center-y="6.4804324" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_17.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_17.svg
new file mode 100644
index 0000000..24e8653
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_17.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_17.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-297.93875"
+       x="114.08595"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.20770558,0.97819139,-0.97819139,-0.20770558,0,0)"
+       inkscape:transform-center-x="-58.470054"
+       inkscape:transform-center-y="12.661587" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_18.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_18.svg
new file mode 100644
index 0000000..e69531b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_18.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_18.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-309.01987"
+       x="94.836098"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.30881659,0.95112161,-0.95112161,-0.30881659,0,0)"
+       inkscape:transform-center-x="-56.826255"
+       inkscape:transform-center-y="18.704008" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_19.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_19.svg
new file mode 100644
index 0000000..0b2a3a9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_19.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_19.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-318.02811"
+       x="74.533409"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.40654414,0.91363114,-0.91363114,-0.40654414,0,0)"
+       inkscape:transform-center-x="-54.55984"
+       inkscape:transform-center-y="24.541503" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_2.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_2.svg
new file mode 100644
index 0000000..a9e0bcd
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_2.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-4.4797187"
+       x="176.85484"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.97819139,0.20770558,-0.20770558,0.97819139,0,0)"
+       inkscape:transform-center-x="-12.661557"
+       inkscape:transform-center-y="-58.470047" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_20.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_20.svg
new file mode 100644
index 0000000..ff2f8df
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_20.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_20.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-324.86481"
+       x="53.400318"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.49981751,0.86613074,-0.86613074,-0.49981751,0,0)"
+       inkscape:transform-center-x="-51.695675"
+       inkscape:transform-center-y="30.11012" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_21.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_21.svg
new file mode 100644
index 0000000..e697370
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_21.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_21.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-329.45505"
+       x="31.668369"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.58761477,0.80914083,-0.80914083,-0.58761477,0,0)"
+       inkscape:transform-center-x="-48.265121"
+       inkscape:transform-center-y="35.348847" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_22.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_22.svg
new file mode 100644
index 0000000..15f97e2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_22.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_22.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-331.74854"
+       x="9.5756598"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.668974,0.7432858,-0.7432858,-0.668974,0,0)"
+       inkscape:transform-center-x="-44.305763"
+       inkscape:transform-center-y="40.200285" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_23.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_23.svg
new file mode 100644
index 0000000..10f9955
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_23.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_23.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-331.72012"
+       x="-12.635757"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.74300382,0.66928718,-0.66928718,-0.74300382,0,0)"
+       inkscape:transform-center-x="-39.860969"
+       inkscape:transform-center-y="44.61127" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_24.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_24.svg
new file mode 100644
index 0000000..3421f9b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_24.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_24.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-329.37015"
+       x="-34.72253"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.80889313,0.58795571,-0.58795571,-0.80889313,0,0)"
+       inkscape:transform-center-x="-34.979457"
+       inkscape:transform-center-y="48.533486" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_25.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_25.svg
new file mode 100644
index 0000000..7a658a7
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_25.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_25.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-324.72437"
+       x="-56.442673"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.86592003,0.50018247,-0.50018247,-0.86592003,0,0)"
+       inkscape:transform-center-x="-29.714712"
+       inkscape:transform-center-y="51.92397" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_26.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_26.svg
new file mode 100644
index 0000000..495212f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_26.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_26.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-317.83365"
+       x="-77.558212"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.91345973,0.40692913,-0.40692913,-0.91345973,0,0)"
+       inkscape:transform-center-x="-24.124401"
+       inkscape:transform-center-y="54.745555" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_27.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_27.svg
new file mode 100644
index 0000000..96d565f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_27.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_27.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-308.7735"
+       x="-97.837799"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.95099138,0.30921739,-0.30921739,-0.95099138,0,0)"
+       inkscape:transform-center-x="-18.269773"
+       inkscape:transform-center-y="56.967332" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_28.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_28.svg
new file mode 100644
index 0000000..ee39f1f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_28.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_28.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-297.64319"
+       x="-117.05925"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.97810377,0.2081178,-0.2081178,-0.97810377,0,0)"
+       inkscape:transform-center-x="-12.21498"
+       inkscape:transform-center-y="58.564964" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_29.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_29.svg
new file mode 100644
index 0000000..e58adf0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_29.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_29.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-284.56467"
+       x="-135.01198"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.99449985,0.10473802,-0.10473802,-0.99449985,0,0)"
+       inkscape:transform-center-x="-6.0263649"
+       inkscape:transform-center-y="59.52095" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_3.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_3.svg
new file mode 100644
index 0000000..c1b3b0c
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_3.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-23.72957"
+       x="187.93596"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.95112161,0.30881659,-0.30881659,0.95112161,0,0)"
+       inkscape:transform-center-x="-18.703982"
+       inkscape:transform-center-y="-56.826248" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_30.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_30.svg
new file mode 100644
index 0000000..6aded60
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_30.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_30.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-269.68121"
+       x="-151.49928"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.99999998,2.1071313e-4,-2.1071313e-4,-0.99999998,0,0)"
+       inkscape:transform-center-x="0.22827386"
+       inkscape:transform-center-y="59.824806" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_31.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_31.svg
new file mode 100644
index 0000000..a8b1998
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_31.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_31.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-253.15591"
+       x="-166.34052"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.9945439,-0.1043189,0.1043189,-0.9945439,0,0)"
+       inkscape:transform-center-x="6.4804204"
+       inkscape:transform-center-y="59.473222" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_32.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_32.svg
new file mode 100644
index 0000000..720797f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_32.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_32.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-235.16982"
+       x="-179.37308"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.97819139,-0.20770558,0.20770558,-0.97819139,0,0)"
+       inkscape:transform-center-x="12.661572"
+       inkscape:transform-center-y="58.47004" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_33.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_33.svg
new file mode 100644
index 0000000..becfb21
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_33.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_33.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-215.91997"
+       x="-190.45419"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.95112161,-0.30881659,0.30881659,-0.95112161,0,0)"
+       inkscape:transform-center-x="18.703994"
+       inkscape:transform-center-y="56.826245" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_34.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_34.svg
new file mode 100644
index 0000000..6026629
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_34.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_34.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-195.61728"
+       x="-199.46245"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.91363114,-0.40654414,0.40654414,-0.91363114,0,0)"
+       inkscape:transform-center-x="24.541491"
+       inkscape:transform-center-y="54.559847" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_35.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_35.svg
new file mode 100644
index 0000000..1d7d4f4
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_35.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-174.48419"
+       x="-206.29915"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.86613074,-0.49981751,0.49981751,-0.86613074,0,0)"
+       inkscape:transform-center-x="30.110104"
+       inkscape:transform-center-y="51.695683" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_36.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_36.svg
new file mode 100644
index 0000000..ab3120f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_36.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_36.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-152.75224"
+       x="-210.88939"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.80914083,-0.58761477,0.58761477,-0.80914083,0,0)"
+       inkscape:transform-center-x="35.348823"
+       inkscape:transform-center-y="48.265129" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_37.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_37.svg
new file mode 100644
index 0000000..c5e13b9
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_37.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_37.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-130.65953"
+       x="-213.18288"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.7432858,-0.668974,0.668974,-0.7432858,0,0)"
+       inkscape:transform-center-x="40.200252"
+       inkscape:transform-center-y="44.305771" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_38.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_38.svg
new file mode 100644
index 0000000..bf8ea2a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_38.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_38.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-108.44811"
+       x="-213.15448"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.66928718,-0.74300382,0.74300382,-0.66928718,0,0)"
+       inkscape:transform-center-x="44.611243"
+       inkscape:transform-center-y="39.860992" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_39.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_39.svg
new file mode 100644
index 0000000..7126aa6
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_39.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_39.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-86.361343"
+       x="-210.8045"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.58795571,-0.80889313,0.80889313,-0.58795571,0,0)"
+       inkscape:transform-center-x="48.533472"
+       inkscape:transform-center-y="34.979482" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_4.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_4.svg
new file mode 100644
index 0000000..4f22687
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_4.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_4.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-44.032261"
+       x="196.94421"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.91363114,0.40654414,-0.40654414,0.91363114,0,0)"
+       inkscape:transform-center-x="-24.541481"
+       inkscape:transform-center-y="-54.559848" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_40.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_40.svg
new file mode 100644
index 0000000..4fab092
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_40.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_40.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-64.641205"
+       x="-206.15871"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.50018247,-0.86592003,0.86592003,-0.50018247,0,0)"
+       inkscape:transform-center-x="51.923956"
+       inkscape:transform-center-y="29.714727" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_41.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_41.svg
new file mode 100644
index 0000000..34235c0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_41.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_41.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-43.525669"
+       x="-199.26799"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.40692913,-0.91345973,0.91345973,-0.40692913,0,0)"
+       inkscape:transform-center-x="54.745548"
+       inkscape:transform-center-y="24.124414" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_42.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_42.svg
new file mode 100644
index 0000000..415778b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_42.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_42.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-23.24608"
+       x="-190.20786"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.30921739,-0.95099138,0.95099138,-0.30921739,0,0)"
+       inkscape:transform-center-x="56.967331"
+       inkscape:transform-center-y="18.269797" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_43.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_43.svg
new file mode 100644
index 0000000..b011837
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_43.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_43.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-4.0246282"
+       x="-179.07755"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.2081178,-0.97810377,0.97810377,-0.2081178,0,0)"
+       inkscape:transform-center-x="58.564972"
+       inkscape:transform-center-y="12.214999" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_44.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_44.svg
new file mode 100644
index 0000000..dfe5902
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_44.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_44.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="13.928093"
+       x="-165.99902"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.10473802,-0.99449985,0.99449985,-0.10473802,0,0)"
+       inkscape:transform-center-x="59.520963"
+       inkscape:transform-center-y="6.0263756" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_45.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_45.svg
new file mode 100644
index 0000000..815d091
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_45.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_45.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="30.41539"
+       x="-151.11559"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-2.1071313e-4,-0.99999998,0.99999998,-2.1071313e-4,0,0)"
+       inkscape:transform-center-x="59.824829"
+       inkscape:transform-center-y="-0.22826621" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_46.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_46.svg
new file mode 100644
index 0000000..904f469
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_46.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_46.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="45.256626"
+       x="-134.59029"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.1043189,-0.9945439,0.9945439,0.1043189,0,0)"
+       inkscape:transform-center-x="59.47324"
+       inkscape:transform-center-y="-6.4804095" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_47.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_47.svg
new file mode 100644
index 0000000..67136e0
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_47.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_47.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="58.289196"
+       x="-116.60418"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.20770558,-0.97819139,0.97819139,0.20770558,0,0)"
+       inkscape:transform-center-x="58.470051"
+       inkscape:transform-center-y="-12.661554" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_48.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_48.svg
new file mode 100644
index 0000000..63f5847
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_48.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_48.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="69.370308"
+       x="-97.354324"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.30881659,-0.95112161,0.95112161,0.30881659,0,0)"
+       inkscape:transform-center-x="56.826254"
+       inkscape:transform-center-y="-18.703981" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_49.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_49.svg
new file mode 100644
index 0000000..4c8d944
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_49.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_49.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="78.378563"
+       x="-77.051636"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.40654414,-0.91363114,0.91363114,0.40654414,0,0)"
+       inkscape:transform-center-x="54.559855"
+       inkscape:transform-center-y="-24.541477" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_5.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_5.svg
new file mode 100644
index 0000000..42466bb
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_5.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_5.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-65.165352"
+       x="203.78091"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.86613074,0.49981751,-0.49981751,0.86613074,0,0)"
+       inkscape:transform-center-x="-30.110102"
+       inkscape:transform-center-y="-51.695679" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_50.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_50.svg
new file mode 100644
index 0000000..622b614
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_50.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_50.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="85.215256"
+       x="-55.918545"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.49981751,-0.86613074,0.86613074,0.49981751,0,0)"
+       inkscape:transform-center-x="51.695689"
+       inkscape:transform-center-y="-30.110096" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_51.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_51.svg
new file mode 100644
index 0000000..4accac5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_51.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_51.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="89.805489"
+       x="-34.186596"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.58761477,-0.80914083,0.80914083,0.58761477,0,0)"
+       inkscape:transform-center-x="48.265134"
+       inkscape:transform-center-y="-35.348821" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_52.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_52.svg
new file mode 100644
index 0000000..ed2155b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_52.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_52.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="92.098969"
+       x="-12.093886"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.668974,-0.7432858,0.7432858,0.668974,0,0)"
+       inkscape:transform-center-x="44.305776"
+       inkscape:transform-center-y="-40.200258" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_53.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_53.svg
new file mode 100644
index 0000000..e47e57a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_53.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_53.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="92.070572"
+       x="10.117531"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.74300382,-0.66928718,0.66928718,0.74300382,0,0)"
+       inkscape:transform-center-x="39.860991"
+       inkscape:transform-center-y="-44.611248" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_54.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_54.svg
new file mode 100644
index 0000000..1867c67
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_54.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_54.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="89.720604"
+       x="32.204304"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.80889313,-0.58795571,0.58795571,0.80889313,0,0)"
+       inkscape:transform-center-x="34.979481"
+       inkscape:transform-center-y="-48.53347" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_55.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_55.svg
new file mode 100644
index 0000000..d20310d
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_55.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_55.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="85.074814"
+       x="53.924442"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.86592003,-0.50018247,0.50018247,0.86592003,0,0)"
+       inkscape:transform-center-x="29.714731"
+       inkscape:transform-center-y="-51.923948" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_56.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_56.svg
new file mode 100644
index 0000000..c77f1e5
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_56.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_56.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="78.184097"
+       x="75.039978"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.91345973,-0.40692913,0.40692913,0.91345973,0,0)"
+       inkscape:transform-center-x="24.124422"
+       inkscape:transform-center-y="-54.74554" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_57.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_57.svg
new file mode 100644
index 0000000..ce5d81a
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_57.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_57.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="69.123955"
+       x="95.319565"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.95099138,-0.30921739,0.30921739,0.95099138,0,0)"
+       inkscape:transform-center-x="18.2698"
+       inkscape:transform-center-y="-56.967327" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_58.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_58.svg
new file mode 100644
index 0000000..7011250
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_58.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_58.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="57.993652"
+       x="114.54102"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.97810377,-0.2081178,0.2081178,0.97810377,0,0)"
+       inkscape:transform-center-x="12.215002"
+       inkscape:transform-center-y="-58.564969" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_59.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_59.svg
new file mode 100644
index 0000000..50d3798
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_59.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_59.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="43.692689"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1846"
+     inkscape:window-height="1058"
+     inkscape:window-x="66"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="44.915134"
+       x="132.49374"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.99449985,-0.10473802,0.10473802,0.99449985,0,0)"
+       inkscape:transform-center-x="6.0263817"
+       inkscape:transform-center-y="-59.520957" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_6.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_6.svg
new file mode 100644
index 0000000..f0b6c4e
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_6.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_6.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-86.897301"
+       x="208.37114"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.80914083,0.58761478,-0.58761478,0.80914083,0,0)"
+       inkscape:transform-center-x="-35.348818"
+       inkscape:transform-center-y="-48.265125" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_7.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_7.svg
new file mode 100644
index 0000000..39d480b
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_7.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_7.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-108.99001"
+       x="210.66463"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.7432858,0.66897401,-0.66897401,0.7432858,0,0)"
+       inkscape:transform-center-x="-40.200259"
+       inkscape:transform-center-y="-44.305764" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_8.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_8.svg
new file mode 100644
index 0000000..c6059c2
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_8.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_8.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-131.20143"
+       x="210.63623"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.66928717,0.74300382,-0.74300382,0.66928717,0,0)"
+       inkscape:transform-center-x="-44.611252"
+       inkscape:transform-center-y="-39.860979" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/skinparts/watchhands/s_9.svg b/skins/blackhole/themes/default/skinparts/watchhands/s_9.svg
new file mode 100644
index 0000000..9de138f
--- /dev/null
+++ b/skins/blackhole/themes/default/skinparts/watchhands/s_9.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300"
+   height="300"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91pre2 r13516"
+   viewBox="0 0 299.99999 300"
+   sodipodi:docname="s_9.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1480363"
+     inkscape:cx="151"
+     inkscape:cy="166.12166"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="false"
+     units="px"
+     inkscape:window-width="1531"
+     inkscape:window-height="878"
+     inkscape:window-x="61"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Zeiger"
+     style="display:inline">
+    <rect
+       ry="0.33689189"
+       y="-153.28821"
+       x="208.28625"
+       height="119.99999"
+       width="2.9999931"
+       id="rect4663"
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.5879557,0.80889313,-0.80889313,0.5879557,0,0)"
+       inkscape:transform-center-x="-48.533475"
+       inkscape:transform-center-y="-34.979477" />
+  </g>
+</svg>
diff --git a/skins/blackhole/themes/default/theme.xml b/skins/blackhole/themes/default/theme.xml
new file mode 100644
index 0000000..753336b
--- /dev/null
+++ b/skins/blackhole/themes/default/theme.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+        <color name="clrTransparent">00000000</color>
+        <color name="clrRed">FFFF0000</color>
+        <color name="clrGreen">FF5FE200</color>
+        <color name="clrYellow">FFE2DA00</color>
+        <color name="clrBlue">FF007FE2</color>
+        <color name="clrWhite">FFFFFFFF</color>
+        <color name="clrGray">FF999999</color>
+        <color name="clrRedTrans">55FF0000</color>
+        <color name="clrBlackTrans">99000000</color>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+        <font name="light">Source Sans Pro:Light</font>
+        <font name="bold">Source Sans Pro:Bold</font>
+        <font name="semibold">Source Sans Pro:Semibold</font>
+        <font name="regular">Source Sans Pro:Regular</font>
+        <font name="digital">DS-Digital:Normal</font>
+    </fonts>
+</globals>
diff --git a/skins/blackhole/xmlfiles/displayaudiotracks.xml b/skins/blackhole/xmlfiles/displayaudiotracks.xml
new file mode 100644
index 0000000..86ab2e1
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displayaudiotracks.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayaudiotracks SYSTEM "../../../dtd/displayaudiotracks.dtd">
+
+<displayaudiotracks x="25%" y="0" width="50%" height="100%" fadetime="{fadetime}">
+    <!-- Available Variables background:
+    {numtracks}                     number of displayed tracks 
+    -->
+    <background>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10 + {areaheight} / 10 * {numtracks}" layer="1">
+            <fill color="{clrBlackTrans}" />
+        </area>
+    </background>
+
+    <!-- Available Variables header:
+    {numtracks}                     number of displayed tracks 
+    {title}                         title of menu 
+    -->
+    <header>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10" layer="2">
+            <drawtext align="center" valign="center" font="{semibold}" fontsize="80%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+
+     <!-- Available Variables header:
+    {numelements}                 number of displayed tracks 
+    -->
+    <menuitems x="0" y="{areaheight} - {numelements} * {areaheight} / 10" orientation="vertical" width="100%" height="{numelements} * {areaheight} / 10" align="top" numlistelements="{numelements}">
+        <!-- Available Variables auidotrack listelement:
+        {current}                 true if item is currently selected 
+        {title}                   title of auio track 
+        -->
+        <listelement>
+           <area x="1%" width="98%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="1%" width="98%" layer="3">
+                <drawtext x="10" valign="center" font="{regular}" fontsize="60%" color="{clrWhite}" text="{title}" />
+            </area>
+        </listelement>
+    </menuitems>
+
+</displayaudiotracks>
diff --git a/skins/blackhole/xmlfiles/displaychannel.xml b/skins/blackhole/xmlfiles/displaychannel.xml
new file mode 100644
index 0000000..83a7f7d
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaychannel.xml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaychannel SYSTEM "../../../dtd/displaychannel.dtd">
+
+<displaychannel x="0" y="0" width="100%" height="100%" fadetime="{fadetime}">
+
+    <background>
+        <!-- global background -->
+        <area x="0" y="70%" width="100%" height="30%" layer="1">
+            <drawimage imagetype="skinpart" path="displaychannelback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- epg background -->
+        <area x="17%" y="80%" width="67%" height="14%" layer="2">
+            <drawimage imagetype="skinpart" path="displaychannelbackepg" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- channel logo background -->
+        <area x="1%" y="77%" width="14%" height="20%" layer="2">
+            <drawimage imagetype="skinpart" path="displaychannellogoback" x="0" y="0" width="100%" height="100%"/>
+        </area>        
+        <!-- watch background -->
+        <area x="86%" y="77%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="2">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <!-- Available Variables channelinfo:
+    {channelnumber}                 Number of Channel, with "-" in case of channel switching
+    {channelname}                   Name of current Channel
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {switching}                     true if a number is pressed on the remote to switch to a dedicated channel
+    -->
+    <channelinfo>
+        <area x="17%" y="74%" width="67%" height="6%" layer="2">
+            <drawtext x="0" y="0" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{channelnumber}  {channelname}" />
+        </area>
+        <area x="2%" y="78%" width="12%" height="18%" layer="3">
+            <drawimage cache="true" imagetype="channellogo" path="{channelid}" width="100%" height="100%" align="center" valign="center"/>
+        </area>
+    </channelinfo>
+
+    <!-- Available Variables epginfo:
+    {currenttitle}                     Title of the current Schedule
+    {currentsubtitle}                  Subtitle of the current Schedule
+    {currentstart}                     Start of current Schedule in hh:mm
+    {currentstop}                      End of current Schedule in hh:mm 
+    {currentduration}                  Duration of current Schedule in min
+    {currentdurationhours}             Duration, full hours
+    {currentdurationminutes}           Duration, rest of minutes
+    {currentelapsed}                   Elapsed time of current Schedule in min
+    {currentremaining}                 Remaining time of current Schedule in min
+    {currentrecording}                 true if current Schedule is recorded
+    {hasVPS}                           true if current Schedule has VPS
+    {nexttitle}                        Title of next Schedule
+    {nextsubtitle}                     Subtitle of next Schedule
+    {nextstart}                        Start of next Schedule in hh:mm
+    {nextstop}                         Stop of next Schedule in hh:mm
+    {nextduration}                     Duration of next Schedule in min
+    {nextdurationhours}                Duration, full hours
+    {nextdurationminutes}              Duration, rest of minutes
+    {nextrecording}                    true if next Schedule will be recorded
+    -->
+    <epginfo>
+        <area x="17%" y="80%" width="66%" height="7%" layer="3">
+            <drawtext name="starttime" x="1%" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{currentstart}" />
+            <drawtext align="right" name="elapsed" valign="center" font="{regular}" fontsize="75%" color="{clrWhite}" text="{currentelapsed}/{currentduration}min" />
+            <drawtext x="{width(starttime)} + 40" y="0" width="{areawidth} - {width(starttime)} - {width(elapsed)} - 45" font="{regular}" fontsize="70%" color="{clrWhite}" text="{currenttitle}" />
+            <drawtext x="{width(starttime)} + 40" y="56%" width="{areawidth} - {width(starttime)} - {width(elapsed)} - 45" font="{regular}" fontsize="45%" color="{clrWhite}" text="{currentsubtitle}" />
+        </area>
+        <area x="17%" y="87%" width="66%" height="7%" layer="3">
+            <drawtext name="starttime" x="1%" valign="center" font="{regular}" fontsize="80%" color="{clrGray}" text="{nextstart}" />
+            <drawtext align="right" name="duration" valign="center" font="{regular}" fontsize="75%" color="{clrGray}" text="{nextduration}min" />
+            <drawtext x="{width(starttime)} + 40" y="0" width="{areawidth} - {width(starttime)} - {width(duration)} - 45" font="{regular}" fontsize="70%" color="{clrGray}" text="{nexttitle}" />
+            <drawtext x="{width(starttime)} + 40" y="55%" width="{areawidth} - {width(starttime)} - {width(duration)} - 45" font="{regular}" fontsize="40%" color="{clrGray}" text="{nextsubtitle}" />
+        </area>
+    </epginfo>
+
+    <!-- Available Variables progressbar:
+    {start}                            Start of current Schedule in hh:mm
+    {stop}                             End of current Schedule in hh:mm 
+    {duration}                         Total Duration of current Schedule in seconds
+    {elapsed}                          Elapsed time of current Schedule in seconds
+    {remaining}                        Remaining time of current Schedule in seconds
+    -->
+    <progressbar>
+        <area x="67%" y="72%" width="30%" height="2%" layer="4">
+            <drawimage imagetype="skinpart" path="progressbar" x="{areaheight}/2" y="0" width="{elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight}" height="100%"/>
+        </area>
+        <area x="67%" y="72%" width="30%" height="2%" layer="5">
+            <drawimage imagetype="skinpart" path="progressbarend" x="{areaheight}/2 + {elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight} - 1" y="0" width="{areaheight}/2" height="100%"/>
+        </area>
+    </progressbar>
+
+    <progressbarback>
+        <area x="67%" y="72%" width="30%" height="2%" layer="3">
+            <drawimage imagetype="skinpart" path="progressbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </progressbarback>
+
+    <!-- Available Variables statusinfo:
+    {isRadio}                          true if channel is a radio channel
+    {hasVT}                            true if channel has video text   
+    {isStereo}                         true if a stereo audio trac is available
+    {isDolby}                          true if a dolby audio track is available
+    {isEncrypted}                      true if channel is encrypted
+    {isRecording}                      true if currently a recording is running on this channel
+    {newmails}                         true if mailbox plugin is installed and new mails are available
+    -->
+    <statusinfo>
+        <area x="17%" y="95%" width="67%" height="4%" layer="3">
+            <drawimage condition="{isDolby}" imagetype="icon" path="ico_dolby" x="{areaheight}*6 + 20" y="0" width="{areaheight}*3" height="{areaheight}"/>
+            <drawimage condition="{hasVT}" imagetype="icon" path="ico_videotext" x="{areaheight}*9 + 30" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{isEncrypted}" imagetype="icon" path="ico_crypted" x="{areaheight}*10 + 40" y="0" width="{areaheight}*2" height="{areaheight}"/>
+            <drawimage condition="{isRecording}" imagetype="icon" path="ico_rec_on" x="{areaheight}*12 + 50" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </statusinfo>
+
+    <!-- Available Variables audioinfo:
+    {numaudiotracks}                   number of available audio tracks for current channel
+    {audiochannel}                     0 if current channel is stereo, 1 for left chanel only, 2 for right channel only
+    {trackdesc}                        description of the current audio track
+    {tracklang}                        language of the current audio track
+    -->
+    <audioinfo>
+    </audioinfo>
+
+    <!-- Available Variables screenresolution:
+    {screenwidth}                      width of currently displayed channel in px
+    {screenheight}                     height of currently displayed channel in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <screenresolution>
+        <area x="17%" y="95%" width="67%" height="4%" layer="4">
+            <drawimage imagetype="icon" path="ico_{resolution}" x="0" y="0" width="{areaheight}*3" height="{areaheight}"/>
+            <drawimage condition="{isWideScreen}" imagetype="icon" path="ico_widescreen" x="{areaheight}*3 + 10" y="0" width="{areaheight}*3" height="{areaheight}"/>
+        </area>
+    </screenresolution>
+
+    <!-- Available Variables dvbdeviceinfo:
+    {prevAvailable}                     true if previous Channel Group is avaialble
+    {nextAvailable}                     true if next Channel Group is avaialble
+    {group}                             Name of current Channel Group
+    {nextgroup}                         Name of next Channel Group
+    {prevgroup}                         Name of prev Channel Group
+    {sepexists}                         true if a channel separator logo exists
+    {seppath}                           path for separator logo to use in imagetype "seplogo"
+    -->
+    <channelgroup>
+        <area x="17%" y="82%" width="66%" height="10%" layer="3">
+            <drawtext x="1%" width="24%" valign="center" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{prevgroup}" />
+            <drawtext x="30%" width="40%" valign="center" font="{semibold}" fontsize="60%" color="{clrWhite}" text="{group}" />
+            <drawtext align="right" width="25%" valign="center" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{nextgroup}" />
+        </area>             
+    </channelgroup>
+
+    <!-- Available Variables signalquality:
+    {signalstrength}                    STR value of currently displayed channel
+    {signalquality}                     SNR value of currently displayed channel
+    -->
+    <signalquality>
+    </signalquality>
+
+    <!-- background of signalmeter, will only be drawn if signalquality was deleted -->
+    <signalqualityback>
+    </signalqualityback>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channellogoexists]} true if a channel logo exists 
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+        <area condition="{showdevices}" x="56%" y="94%" width="28%" height="6%" layer="2">
+            <loop name="devices" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/{numdevices}" rowheight="{areaheight}">
+                <drawtext x="0" y="0" font="{regular}" fontsize="40%" color="{clrWhite}" text="{devices[num]}: {devices[type]}" />
+                <drawtext condition="{devices[hascam]}" align="right" y="0" font="{regular}" fontsize="40%" color="{clrWhite}" text="(CAM {devices[cam]})" />
+                <drawtext condition="{devices[recording]} ++ {devices[livetv]}" x="0" y="35%" font="{regular}" fontsize="30%" width="{columnwidth}" color="{clrRed}" text="LiveTV, Recording ({devices[channelname]}) " />
+                <drawtext condition="{devices[recording]} ++ not{devices[livetv]}" x="0" y="35%" font="{regular}" fontsize="30%" width="{columnwidth}" color="{clrRed}" text="Recording ({devices[channelname]}) " />
+                <drawtext condition="not{devices[recording]} ++ {devices[livetv]}" x="0" y="35%" font="{regular}" fontsize="30%" width="{columnwidth}" color="{clrWhite}" text="LiveTV ({devices[channelname]}) " />
+                <drawrectangle  x="0" y="70%" width="{columnwidth} * {devices[signalstrength]} / 100 - 10 * {devices[signalstrength]} / 100" height="{rowheight}/15" color="{clrWhite}" />
+                <drawrectangle  x="0" y="85%" width="{columnwidth} * {devices[signalquality]} / 100 - 10 * {devices[signalquality]} / 100" height="{rowheight}/15" color="{clrWhite}" />
+            </loop>  
+        </area>
+    </devices>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasPoster}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{showposter}++{isbanner}" x="1%" y="3%" width="{areaheight}*0.13*{mediawidth}/{mediaheight}" height="13%" layer="7">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center"  width="{areawidth}" height="{areaheight}"/>
+        </area>
+        <area condition="{showposter}++not{isbanner}" x="0" y="3%" width="{areaheight}*0.5*{mediawidth}/{mediaheight}" height="40%" layer="7">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center" width="{areawidth}" height="{areaheight}"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="17%" y="74%" width="67%" height="6%" layer="3">
+            <drawtext align="right" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{dayname} {day}.{month}" />
+        </area>
+        <area x="86%" y="95%" width="{areaheight}*0.18" height="5%" layer="3">
+            <drawtext align="center" y="0" font="{digital}" fontsize="100%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables time:
+    {sec}                    current seconds
+    {min}                    current minutes
+    {hour}                   current hours
+    {hmins}                  current "hourminutes" to display an hour hand
+    -->
+    <time>
+        <area x="86%" y="77%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="5">
+            <drawimage imagetype="skinpart" path="watchhands/s_{sec}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="86%" y="77%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="4">
+            <drawimage imagetype="skinpart" path="watchhands/m_{min}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="86%" y="77%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="3">
+            <drawimage imagetype="skinpart" path="watchhands/h_{hmins}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </time>
+
+    <currentweather>
+        <area x="0" y="70%" width="11%" height="5%" layer="3">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" x="{areawidth}/2 + {width(temperature)}/2 - {width(weathericon)}/2 + 5" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+            <drawtext name="temperature" x="{areawidth}/2 - {width(temperature)}/2 - {width(weathericon)}/2" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="80%" width="90%" height="15%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageblue" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messagegreen" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageyellow" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messagered" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="80%" width="90%" height="15%" layer="6">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+    
+</displaychannel>
diff --git a/skins/blackhole/xmlfiles/displaymenu.xml b/skins/blackhole/xmlfiles/displaymenu.xml
new file mode 100644
index 0000000..04a3838
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenu.xml
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymenu SYSTEM "../../../dtd/displaymenu.dtd" [
+<!ENTITY displaymenudefault SYSTEM "displaymenudefault.xml">
+<!ENTITY displaymenumain SYSTEM "displaymenumain.xml">
+<!ENTITY displaymenusetup SYSTEM "displaymenusetup.xml">
+<!ENTITY displaymenuschedules SYSTEM "displaymenuschedules.xml">
+<!ENTITY displaymenutimers SYSTEM "displaymenutimers.xml">
+<!ENTITY displaymenuchannels SYSTEM "displaymenuchannels.xml">
+<!ENTITY displaymenurecordings SYSTEM "displaymenurecordings.xml">
+<!ENTITY displaymenudetailepg SYSTEM "displaymenudetailepg.xml">
+<!ENTITY displaymenudetailrecording SYSTEM "displaymenudetailrecording.xml">
+<!ENTITY displaymenudetailtext SYSTEM "displaymenudetailtext.xml">
+]>
+
+<displaymenu x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- 
+    The following background, header, datetime and colorbuttons definitions are default
+    implementations. If one or more of these elements are not implemented in the subview, 
+    the default implementations are used. 
+    -->
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <drawimage imagetype="skinpart" path="displaymenubacktv" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="0" y="0" width="83%" height="8%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenuheader" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="74%" y="0" width="26%" height="46%" layer="3">
+            <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <header>
+        <area x="0" y="0" width="83%" height="8%" layer="3">
+            <drawtext x="1%" width="100%" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="81%" y="0" width="7%" height="5%" layer="5">
+            <drawtext x="0" valign="center" font="{digital}" fontsize="90%" color="{clrWhite}" text="{time}" />
+        </area>
+        <area x="50%" y="0" width="27%" height="8%" layer="3">
+            <drawtext align="right" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{daynameshort} {day}.{month}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables time:
+    {sec}                    current seconds
+    {min}                    current minutes
+    {hour}                   current hours
+    {hmins}                  current "hourminutes" to display an hour hand
+    -->
+    <time>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="5">
+            <drawimage imagetype="skinpart" path="watchhands/s_{sec}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="6">
+            <drawimage imagetype="skinpart" path="watchhands/m_{min}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="7">
+            <drawimage imagetype="skinpart" path="watchhands/h_{hmins}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </time>
+
+    <!-- Available Variables message:
+    {text}                    message text
+    {status}                  true if message is an status message
+    {info}                    true if message is an info message
+    {warning}                 true if message is an warn message
+    {error}                   true if message is an error message
+    -->
+    <message>
+        <area x="5%" y="80%" width="90%" height="15%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageblue" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messagegreen" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageyellow" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messagered" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="80%" width="90%" height="15%" layer="7">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="4">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" />
+        </area>
+
+        <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" />
+        </area>
+        
+        <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" />
+        </area>
+        
+        <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{green4}" x="60%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="60%"/>
+        </area>
+        <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="50%" color="{clrWhite}" text="{blue}" />
+        </area>
+    </colorbuttons>
+    &displaymenudefault;
+    &displaymenumain;
+    &displaymenusetup;
+    &displaymenuschedules;
+    &displaymenutimers;
+    &displaymenuchannels;
+    &displaymenurecordings;
+    &displaymenudetailepg;
+    &displaymenudetailrecording;
+    &displaymenudetailtext;
+</displaymenu>
diff --git a/skins/blackhole/xmlfiles/displaymenuchannels.xml b/skins/blackhole/xmlfiles/displaymenuchannels.xml
new file mode 100644
index 0000000..e4fa353
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenuchannels.xml
@@ -0,0 +1,123 @@
+<menuchannels x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%">
+    
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="{nummenuitems}">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {number}                  number of the displayed channel
+        {name}                    name of the displayed channel
+        {channellogoexists}       true if a channel logo exists 
+        {channelid}               ChannelID as path to display channel logo
+        {transponder}             Transponder of channel
+        {frequency}               Frequency of channel
+        {source}                  Source of channel (S, C, T)
+        {sourcedescription}       Descriptin of source from sources.conf
+        {position}                orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                  true if channel is a ATSC channel
+        {isCable}                 true if channel is cable channel
+        {isSat}                   true if channel is a satellite channel
+        {isTerr}                  true if channel is terrestrical
+        {presenteventtitle}       title of present event on this channel
+        {presenteventstart}       present event start time in hh::mm
+        {presenteventstop}        present event event stop time in hh::mm
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area condition="not{separator}" x="1%" width="9%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="90%" height="90%" align="center" valign="center" />
+            </area>
+            <area condition="not{separator}" x="11%" width="39%" layer="3">
+                <drawtext condition="not{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{sourcedescription}, Transp. {transponder}" />
+                <drawtext condition="{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{sourcedescription}, Transp. {transponder}" />
+            </area>
+            <area condition="not{separator}" x="11%" width="39%" layer="3">
+                <drawtext condition="not{current}" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{number} {name}" />
+                <drawtext condition="{current}" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrWhite}" text="{number} {name}" />
+            </area>
+            <area condition="{separator}" x="1%" width="50%" layer="3">
+                <drawtext x="0" valign="center" font="{regular}" fontsize="70%" color="{clrWhite}" text="{name}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}                     x position of according menu item
+        {menuitemy}                     y position of according menu item
+        {menuitemwidth}                 width of according menu item
+        {menuitemheight}                height of according menu item
+        {number}                        number of the displayed channel
+        {name}                          name of the displayed channel
+        {channellogoexists}             true if a channel logo exists 
+        {channelid}                     ChannelID as path to display channel logo
+        {transponder}                   Transponder of channel
+        {frequency}                     Frequency of channel
+        {source}                        Source of channel (S, C, T)
+        {sourcedescription}             Descriptin of source from sources.conf
+        {position}                      orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                        true if channel is a ATSC channel
+        {isCable}                       true if channel is cable channel
+        {isSat}                         true if channel is a satellite channel
+        {isTerr}                        true if channel is terrestrical
+        {presenteventtitle}             title of present event on this channel
+        {presenteventstart}             present event start time in hh::mm
+        {presenteventstop}              present event stop time in hh::mm
+        {presenteventshorttext}         present event short text
+        {presenteventdescription}       present event description
+        {presenteventday}               present event name of day
+        {presenteventdate}              present event date in dd:mm:yy
+        {presenteventelapsed}           present event elapsed time
+        {presenteventduration}          present event duration
+        {presenteventdurationhours}     duration, full hours
+        {presenteventdurationminutes}   duration, rest of minutes
+        {hasposter}                     true if a scraped poster is available for this elements present evemt
+        {posterwidth}                   width of scraped poster
+        {posterheight}                  height of scraped poster
+        {posterpath}                    absolute path of scraped poster
+        {nexteventtitle}                title of next event on this channel
+        {nexteventstart}                next event start time in hh::mm
+        {nexteventstop}                 next event event stop time in hh::mm
+        {nexteventshorttext}            next event short text
+        {nexteventdescription}          next event description
+        {nexteventday}                  next event name of day
+        {nexteventdate}                 next event date in dd:mm:yy
+        {nexteventduration}             next event duration
+        {nexteventdurationhours}        duration, full hours
+        {nexteventdurationminutes}      duration, rest of minutes
+        {schedule[]}                    array with following 10 schedules
+        {schedule[title]}               title of event
+        {schedule[shorttext]}           shorttext of event
+        {schedule[start]}               start time of event in hh:mm
+        {schedule[stop]}                stop time of event in hh:mm        
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="55%" y="52%" width="45%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area x="55%" y="53%" width="44%" height="47%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="30%" height="30%" align="right" y="0" />
+            </area>
+            <areascroll mode="forthandback" orientation="vertical" delay="1000" scrollspeed="medium" x="55%" y="52%" width="45%" height="48%" layer="4">
+                <drawtext x="10" y="0" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{tr(schedule)}:" />
+                <drawtext x="10" y="16%" font="{regular}" width="{areawidth}-20" fontsize="12%" color="{clrWhite}" text="{tr(since)} {presenteventstart} - {presenteventtitle}" />
+                <drawtext x="10" y="26%" font="{regular}" width="{areawidth}-20" fontsize="12%" color="{clrWhite}" text="{nexteventstart} - {nexteventtitle}" />
+                <loop name="schedule" x="0" y="36%" orientation="vertical">
+                    <drawtext x="10" font="{regular}" width="{areawidth}-20" fontsize="12%" color="{clrWhite}" text="{schedule[start]} - {schedule[title]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+
+    </menuitems>
+
+</menuchannels>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymenudefault.xml b/skins/blackhole/xmlfiles/displaymenudefault.xml
new file mode 100644
index 0000000..766f02c
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenudefault.xml
@@ -0,0 +1,75 @@
+<menudefault x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <drawimage imagetype="skinpart" path="displaymenuback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="0" y="0" width="83%" height="8%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenuheader" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="74%" y="0" width="26%" height="46%" layer="3">
+            <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <scrollbar>
+        <area x="97%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="97%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <!-- IMPORTANT: menuitemwidth and determinatefont have to be defined here. menuitemwidth defines the total width of the 
+    default menu items, determinatefont the function which sets the actual font to use. With that it is possible to determinate
+    the correct column widths -->
+    <menuitems x="1%" y="10%" orientation="vertical" width="95%" height="80%" align="center" menuitemwidth="94%" determinatefont="column1" numlistelements="{nummenuitemsdefault}">
+        <!-- Available Variables default menu listelement:
+        {nummenuitem}               number of item in list, starts with 1
+        {column1}                   text of column1
+        {column2}                   text of column2
+        {column3}                   text of column3
+        {column4}                   text of column4
+        {column5}                   text of column5
+        {column6}                   text of column6
+        {column2set}                true if column2 is used
+        {column3set}                true if column3 is used
+        {column4set}                true if column4 is used
+        {column5set}                true if column5 is used
+        {column6set}                true if column6 is used
+        {column2x}                  proposed x value of column2
+        {column3x}                  proposed x value of column3
+        {column4x}                  proposed x value of column4
+        {column5x}                  proposed x value of column5
+        {column6x}                  proposed x value of column6
+        {column1width}              proposed width of column1
+        {column2width}              proposed width of column2
+        {column3width}              proposed width of column3
+        {column4width}              proposed width of column4
+        {column5width}              proposed width of column5
+        {column6width}              proposed width of column6
+        {current}                   true if column is currently selected 
+        {separator}                 true if column is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="100%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <areascroll scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
+                <drawtext name="column1" x="{column1x}" width="{column1width}" valign="center" font="{regular}" fontsize="90%" color="{clrWhite}" text="{column1}" />
+            </areascroll>
+            <area x="1%" width="100%" layer="3">
+                <drawtext condition="{column2set}" x="{column2x}" valign="center" font="{regular}" fontsize="90%" width="{column2width}" color="{clrWhite}" text="{column2}" />
+                <drawtext condition="{column3set}" x="{column3x}" valign="center" font="{regular}" fontsize="90%" width="{column3width}" color="{clrWhite}" text="{column3}" />
+                <drawtext condition="{column4set}" x="{column4x}" valign="center" font="{regular}" fontsize="90%" width="{column4width}" color="{clrWhite}" text="{column4}" />
+                <drawtext condition="{column5set}" x="{column5x}" valign="center" font="{regular}" fontsize="90%" width="{column5width}" color="{clrWhite}" text="{column5}" />
+                <drawtext condition="{column6set}" x="{column6x}" valign="center" font="{regular}" fontsize="90%" width="{column6width}" color="{clrWhite}" text="{column6}" />
+            </area>
+        </listelement>
+        
+    </menuitems>
+</menudefault>
diff --git a/skins/blackhole/xmlfiles/displaymenudetailepg.xml b/skins/blackhole/xmlfiles/displaymenudetailepg.xml
new file mode 100644
index 0000000..672938c
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenudetailepg.xml
@@ -0,0 +1,301 @@
+<menudetailedepg x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+    <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+
+
+   <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     Day of event as three letter abrivation
+    {date}                    date of current event in dd.mm.yy
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channelname}             Channelname of event
+    {channelnumber}           Channelnumber of event
+    {channellogoexists}       true if a channel logo exists 
+    {channelid}               ChannelID as path to display channel logo
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {epgpicavailable}         true if a epg picture is available
+    {epgpicpath}              path of epg picture
+    -->
+    <detailheader>
+        <area x="0" y="0" width="83%" height="8%" layer="3">
+            <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="1%" width="5%" height="90%" align="left" valign="center" />
+            <drawtext x="{posx(logo)} + {width(logo)}+20" valign="center" font="{semibold}" fontsize="80%" color="{clrWhite}" text="{channelnumber} - {channelname}" />
+        </area>
+        <area x="1%" y="10%" width="50%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area condition="not{ismovie}++not{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawtext x="3%" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+            <drawtext x="3%" y="30%" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title}" />
+            <drawtext x="3%" y="60%" width="96%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+        <area condition="{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawimage name="banner" imagetype="image" path="{bannerpath}" align="center" y="1%" width="70%" height="{areawidth} * 0.7 * {bannerheight} / {bannerwidth}"/>
+            <drawtext name="datetime" x="3%" y="{posy(banner)} + {height(banner)} + 5" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+            <drawtext x="3%" y="{posy(datetime)} + {height(datetime)}" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title} - {shorttext}" />
+        </area>
+        <area condition="{ismovie}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawimage name="poster" imagetype="image" path="{posterpath}" x="1%" valign="center" width="{areaheight} * {posterwidth} / {posterheight}" height="{areaheight}-20"/>
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="30%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{title}" />
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="60%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+        <area x="56%" y="72%" width="41%" height="17%" layer="2">
+            <drawimage imagetype="skinpart" path="tabback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </detailheader>
+
+    <!-- Available Variables in tab elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {description}             description of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     Day of event as three letter abrivation
+    {date}                    date of current event in dd.mm.yy
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channellogoexists}       true if a channel logo exists 
+    {channelid}               ChannelID as path to display channel logo
+    {hasreruns}               true if reruns of this event are found
+    {reruns[]}                array with reruns
+    {reruns[title]}           title of rerun
+    {reruns[shorttext]}       shorttext of rerun
+    {reruns[date]}            date of rerun in dd:mm
+    {reruns[day]}             short dayname of rerun
+    {reruns[start]}           start time of rerun in hh:mm
+    {reruns[stop]}            stop time of rerun in hh:mm
+    {reruns[channelname]}     name of channel on which rerun occurs
+    {reruns[channelnumber]}   number of channel on which rerun occurs
+    {reruns[channelid]}       id of channel on which rerun occurs to display channel logo
+    {reruns[channellogoexists]} true if channel logo exists
+    {epgpic1avaialble}        true if first epg picture is available
+    {epgpic2avaialble}        true if first epg picture is available
+    {epgpic3avaialble}        true if first epg picture is available
+    {epgpic1path}             path of first epg picture
+    {epgpic2path}             path of second epg picture
+    {epgpic3path}             path of third epg picture
+    
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <!-- just define as many tabs as needed -->
+
+    <!-- TAB EPGINFO -->
+    <tab name="EPG Info" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext x="0" y="0" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+        <drawtext x="0" y="6%" width="100%" font="{semibold}" fontsize="9%" color="{clrWhite}" text="{title}" />
+        <drawtext x="0" y="14%" width="100%" font="{regular}" fontsize="7%" color="{clrWhite}" text="{shorttext}" />
+
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="24%" width="96%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+
+    </tab>
+    <!-- TAB RERUNS -->
+    <tab name="{tr(reruns)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" width="100%" name="title" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" />
+        <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical">
+            <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" />
+            <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="0" y="2%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[channelname]}" />
+            <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="0" width="{areawidth} - {width(logo)} - 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}" />
+            <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="4%" width="{areawidth} - {width(logo)} - 20" font="{semibold}" fontsize="5%" color="{clrWhite}" text="{reruns[title]}  {reruns[shorttext]}" />
+            <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="0" width="{areawidth} - {width(logo)} - 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}" />
+            <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="4%" width="{areawidth} - {width(logo)} - 20" font="{semibold}" fontsize="5%" color="{clrWhite}" text="{reruns[title]}  {reruns[shorttext]}" />
+        </loop>
+    </tab>
+    <!-- TAB ACTORS -->
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}*0.3" rowheight="{areawidth}*0.3*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{regular}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{regular}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <!-- TAB TVDBINFO -->
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstair [...]
+    </tab>
+    <!-- TAB SERIESGALERY -->
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <!-- TAB MOVIEDBINFO -->
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}
||{tr(revenue)}: {movierevenue}

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runtime [...]
+    </tab>
+    <!-- TAB MOVIEGALERY -->
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>
+    <!-- Available Variables tablabels:
+    {currenttab}            name of currently active tab
+    {prevtab}               name of prev tab
+    {nexttab}               name of next tab
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="56%" y="72%" width="41%" height="9%" layer="3">
+            <drawtext align="center" y="0" width="100%" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{currenttab}" />
+        </area>
+        <area x="56%" y="81%" width="18%" height="8%" layer="3">
+            <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{prevtab}" />
+        </area>
+        <area x="79%" y="81%" width="17%" height="8%" layer="3">
+            <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{nexttab}" />
+        </area>
+    </tablabels>
+</menudetailedepg>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymenudetailrecording.xml b/skins/blackhole/xmlfiles/displaymenudetailrecording.xml
new file mode 100644
index 0000000..ee663d5
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenudetailrecording.xml
@@ -0,0 +1,263 @@
+<menudetailedrecording x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+
+   <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {recimgavailable}         true if a recording image is available in the recording path
+    {recimgpath}              path of rec image
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="50%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area condition="not{ismovie}++not{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawtext x="3%" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+            <drawtext x="3%" y="30%" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{epgname}" />
+            <drawtext x="3%" y="60%" width="96%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+        <area condition="{isseries}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawimage name="banner" imagetype="image" path="{bannerpath}" align="center" y="1%" width="70%" height="{areawidth} * 0.7 * {bannerheight} / {bannerwidth}"/>
+            <drawtext name="datetime" x="3%" y="{posy(banner)} + {height(banner)}" font="{regular}" fontsize="15%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+            <drawtext x="3%" y="{posy(datetime)} + {height(datetime)}" width="96%" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{epgname} - {shorttext}" />
+        </area>
+        <area condition="{ismovie}" x="55%" y="52%" width="43%" height="20%" layer="3">
+            <drawimage name="poster" imagetype="image" path="{posterpath}" x="1%" valign="center" width="{areaheight} * {posterwidth} / {posterheight}" height="{areaheight}-20"/>
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="15%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="30%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{semibold}" fontsize="30%" color="{clrWhite}" text="{epgname}" />
+            <drawtext x="{posx(poster)} + {width(poster)} + 10" y="60%" width="{areawidth} - {posx(poster)} - {width(poster)} - 20" font="{regular}" fontsize="20%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+        <area x="56%" y="72%" width="41%" height="17%" layer="2">
+            <drawimage imagetype="skinpart" path="tabback" x="0" y="0" width="100%" height="100%"/>
+        </area>   
+    </detailheader>
+    <!-- Available Variables in tab elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+    {cutted}                  true if recording is cutted
+
+    {recordingsize}           size of recording (automatically in GB / MB)
+    {recordingsizecutted}     size of cutted recording (automatically in GB / MB)
+    {recordinglength}         length of recording (in hh::mm:ss)
+    {recordinglengthcutted}   length of cutted recording (in hh::mm:ss)
+    {recordingbitrate}        bitrate of recording (in MBit/s)
+    {recordingformat}         format of recording (TS / PS)
+    {searchtimer}             name of accordign searchtimer (if available)
+    
+    {recimg1avaialble}        true if first recording image is available
+    {recimg2avaialble}        true if first recording image is available
+    {recimg3avaialble}        true if first recording image is available
+    {recimg1path}             path of first recording image
+    {recimg2path}             path of second recording image
+    {recimg3path}             path of third recording image
+    
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <!-- just define as many tabs as needed -->
+    <tab name="Info" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext x="0" y="0" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+        <drawtext x="0" y="6%" width="100%" font="{semibold}" fontsize="9%" color="{clrWhite}" text="{epgname}" />
+        <drawtext x="0" y="14%" width="100%" font="{regular}" fontsize="7%" color="{clrWhite}" text="{shorttext}" />
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="24%" width="96%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.7" y="20%" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="24%" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{regular}" fontsize="5%" color="{clrWhite}" text="{description}" />
+    </tab>
+    <tab name="{tr(recinfo)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" name="title" font="{regular}" fontsize="8%" color="{clrWhite}" text="{tr(recinfo)}" />
+        <drawtextbox x="0" y="{height(title)} + 20" width="96%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(recsize)}: {recordingsize}
{tr(recsizecutted)}: {recordingsizecutted}
{tr(reclength)}: {recordinglength}
{tr(reclengthcutted)}: {recordinglengthcutted}
{tr(bitrate)}: {recordingbitrate}
{tr(format)}: {recordingformat}
{tr(searchtimer)}: {searchtimer}
" />
+    </tab>
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}*0.3" rowheight="{areawidth}*0.3*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{regular}" fontsize="5%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{regular}" fontsize="5%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstair [...]
+    </tab>
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}$
||{tr(revenue)}: {movierevenue}$

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runti [...]
+    </tab>
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>    <!-- Available Variables tablabels:
+    {currenttab}            name of currently active tab
+    {prevtab}               name of prev tab
+    {nexttab}               name of next tab
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="56%" y="72%" width="41%" height="9%" layer="3">
+            <drawtext align="center" y="0" width="100%" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{currenttab}" />
+        </area>
+        <area x="56%" y="81%" width="18%" height="8%" layer="3">
+            <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{prevtab}" />
+        </area>
+        <area x="79%" y="81%" width="17%" height="8%" layer="3">
+            <drawtext align="center" valign="center" width="100%" font="{regular}" fontsize="60%" color="{clrGray}" text="{nexttab}" />
+        </area>
+    </tablabels>
+
+</menudetailedrecording>
diff --git a/skins/blackhole/xmlfiles/displaymenudetailtext.xml b/skins/blackhole/xmlfiles/displaymenudetailtext.xml
new file mode 100644
index 0000000..84bf634
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenudetailtext.xml
@@ -0,0 +1,37 @@
+<menudetailedtext x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <drawimage imagetype="skinpart" path="displaymenuback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="1%" y="10%" width="93%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="0" y="0" width="83%" height="8%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenuheader" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="74%" y="0" width="26%" height="46%" layer="3">
+            <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <scrollbar>
+        <area x="97%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="97%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in tab elements:
+    {text}                    detailed text
+    -->
+    <tab name="text" x="2%" y="11%" width="92%" height="79%" layer="3" scrollheight="{areaheight}/4">
+        <drawtextbox x="0" y="0" width="100%" font="{regular}" fontsize="5%" color="{clrWhite}" text="{text}" />
+    </tab>
+
+</menudetailedtext>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymenumain.xml b/skins/blackhole/xmlfiles/displaymenumain.xml
new file mode 100644
index 0000000..90317d4
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenumain.xml
@@ -0,0 +1,228 @@
+<menumain x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+
+    <header>
+        <area x="0" y="0" width="83%" height="8%" layer="3">
+            <drawtext x="1%" width="100%" valign="center" font="{semibold}" fontsize="90%" color="{clrWhite}" text="{title} - {vdrversion}" />
+        </area>
+    </header>
+
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <drawimage imagetype="skinpart" path="displaymenubacktv" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="0" y="0" width="83%" height="8%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenuheader" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="74%" y="0" width="26%" height="46%" layer="3">
+            <drawimage imagetype="skinpart" path="displaymenucorner" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="{areawidth}*0.865" y="{areawidth}*0.005" width="13%" height="{areawidth}*0.13" layer="4">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="55%" y="51%" width="44%" height="19%" layer="2">
+            <drawimage imagetype="skinpart" path="tachos_back" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- tacho disc usage -->
+        <area x="55%" y="51%" width="44%" height="19%" layer="3">
+            <drawimage imagetype="skinpart" path="tacho_percent_back" x="{areawidth}*0.025" y="5%" width="20%" height="{areawidth}*0.2"/>
+        </area>
+        <!-- tacho load -->
+        <area x="55%" y="51%" width="44%" height="19%" layer="3">
+            <drawimage imagetype="skinpart" path="tacho_load_back" x="{areawidth}*0.28" y="5%" width="20%" height="{areawidth}*0.20"/>
+        </area>
+        <!-- tacho cpu temp -->
+        <area x="55%" y="51%" width="44%" height="19%" layer="3">
+            <drawimage imagetype="skinpart" path="tacho_temp_back" x="{areawidth}*0.530" y="5%" width="20%" height="{areawidth}*0.20"/>
+        </area>
+        <!-- tacho gpu temp -->
+        <area x="55%" y="51%" width="44%" height="19%" layer="3">
+            <drawimage imagetype="skinpart" path="tacho_temp_back" x="{areawidth}*0.78" y="5%" width="20%" height="{areawidth}*0.20"/>
+        </area>
+        <area x="55%" y="71%" width="44%" height="19%" layer="2">
+            <drawimage imagetype="skinpart" path="tachos_back" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <currentweather>
+        <area x="40%" y="0" width="15%" height="8%" layer="3">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" align="right" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+            <drawtext name="temperature" x="{areawidth} - {width(weathericon)} - {width(temperature)} - 10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables timers:
+    {numtimers}                  number of active timers (max. 15 timers will be displayed)
+    {numtimerconflicts}          number of current timer conflicts
+    {timer1exists}               true if timer 1 available
+    {timer2exists}               true if timer 2 available
+    ...
+    {timer15exists}              true if timer 15 available
+    {timers[]}                   array with active timers (local and remote if remotetimers plugin is in use)
+    {timers[title]}              title of timer
+    {timers[datetime]}           date and time of timer
+    {timers[recording]}          true if timer is recording currently
+    {timers[channelname]}        name of channel for which timer is created
+    {timers[channelnumber]}      number of channel
+    {timers[channelid]}          ChannelID of channel
+    {timers[channellogoexists]}  true if channel logo exists
+    -->
+    <timers>
+        <area condition="not{numtimers}" x="55%" y="71%" width="44%" height="19%" layer="2">
+            <drawtext align="center" valign="center" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{tr(noactivetimers)}" />
+        </area>
+        <area condition="{numtimers}" x="55%" y="71%" width="44%" height="19%" layer="2">
+            <loop name="timers" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/4" rowheight="{areaheight}" overflow="cut">
+                <drawimage  cache="true" name="logo" imagetype="channellogo" path="{timers[channelid]}" width="{columnwidth}-15" height="40%" align="center" y="10" />
+                <drawrectangle condition="{timers[recording]}" x="0" y="{height(logo)}+10" width="{columnwidth}-5" height="{rowheight} - {height(logo)} - 20" color="{clrRedTrans}" />
+                <drawtextbox x="5" y="{height(logo)} + 10" width="{columnwidth}-10" align="center" maxlines="2" font="{regular}" fontsize="15%" color="{clrWhite}" text="{timers[title]}" />
+                <drawtext align="center" y="75%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{timers[datetime]}" />
+            </loop>
+        </area>
+    </timers>
+
+    <!-- Available Variables discusage:
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <discusage>
+        <area x="55%" y="51%" width="44%" height="19%" layer="5">
+            <drawimage imagetype="skinpart" path="tachohands/perc_{usedpercent}" x="{areawidth}*0.025" y="5%" width="20%" height="{areawidth}*0.20"/>
+        </area>
+        <area x="55%" y="51%" width="11%" height="19%" layer="4">
+            <drawtext align="center" y="85%" font="{regular}" fontsize="15%" color="{clrWhite}" text="Disc Usage: {usedpercent}%" />
+        </area>
+    </discusage>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channellogoexists]} true if a channel logo exists 
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+    </devices>
+
+    <!-- Available Variables systemload:
+    {load}                      current system load
+    {loadhand}                  system load for tacho hand (between 0 and 2.5 in 0.025 steps multiplied by 1000, >2.5 is always 2525)
+    -->
+    <systemload>
+        <area x="55%" y="51%" width="44%" height="19%" layer="5">
+            <drawimage imagetype="skinpart" path="tachohands/load_{loadhand}" x="{areawidth}*0.28" y="5%" width="20%" height="{areawidth}*0.20"/>
+        </area>
+        <area x="66%" y="51%" width="11%" height="19%" layer="4">
+            <drawtext align="center" y="85%" font="{regular}" fontsize="15%" color="{clrWhite}" text="Load: {load}" />
+        </area>
+    </systemload>
+
+    <!-- Available Variables tempreatures:
+    {cputemp}                  current cpu temperature in °C
+    {gputemp}                  current gpu temperature in °C
+    -->
+    <temperatures>
+        <area x="55%" y="51%" width="44%" height="19%" layer="5">
+            <drawimage condition="gt({cputemp}, 80)" imagetype="skinpart" path="tachohands/temp_81"        x="{areawidth}*0.53" y="5%" width="20%" height="{areawidth}*0.2"/>
+            <drawimage condition="lt({cputemp}, 81)" imagetype="skinpart" path="tachohands/temp_{cputemp}" x="{areawidth}*0.53" y="5%" width="20%" height="{areawidth}*0.2"/>
+            <drawimage condition="gt({gputemp}, 80)" imagetype="skinpart" path="tachohands/temp_81"        x="{areawidth}*0.78" y="5%" width="20%" height="{areawidth}*0.2"/>
+            <drawimage condition="lt({cputemp}, 81)" imagetype="skinpart" path="tachohands/temp_{gputemp}" x="{areawidth}*0.78" y="5%" width="20%" height="{areawidth}*0.2"/>
+        </area>
+        <area x="77%" y="51%" width="11%" height="19%" layer="4">
+            <drawtext align="center" y="85%" font="{regular}" fontsize="15%" color="{clrWhite}" text="CPU Temp: {cputemp}°C" />
+        </area>
+        <area x="88%" y="51%" width="11%" height="19%" layer="4">
+            <drawtext align="center" y="85%" font="{regular}" fontsize="15%" color="{clrWhite}" text="GPU Temp: {gputemp}°C" />
+        </area>
+    </temperatures>
+
+    <!-- Available Variables currentschedule:
+    {title}                     Title of the current Schedule
+    {subtitle}                  Subtitle of the current Schedule
+    {start}                     Start of current Schedule in hh:mm
+    {stop}                      End of current Schedule in hh:mm 
+    {duration}                  Duration of current Schedule in min
+    {durationhours}             Duration, full hours
+    {minutes}                   Duration, rest of minutes
+    {elapsed}                   Elapsed time of current Schedule in min
+    {remaining}                 Remaining time of current Schedule in min
+    {hasPoster}                 true if poster is available
+    {posterpath}                Full Path of Poster to use in image path attribute
+    {posterwidth}               width of poster in pixel
+    {posterheight}              height of poster in pixel
+    {hasBanner}                 true if banner is available
+    {bannerpath}                Full Path of banner to use in image path attribute
+    {bannerwidth}               width of banner in pixel
+    {bannerheight}              height of banner in pixel
+    -->
+    <currentschedule>
+    </currentschedule>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="50%" height="80%" align="center" numlistelements="{nummenuitemsmain}">
+        <!-- Available Variables main menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="100%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area condition="{showmainmenuicons}" x="1%" width="20%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" x="1%" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+            </area>
+            <area condition="not{showmainmenuicons}" x="0" width="100%" layer="3">
+                <drawtext condition="not{current}" x="1%" width="98%" valign="center" font="{regular}" fontsize="80%" color="{clrGray}" text="{number} {label} " />
+                <drawtext condition="{current}" x="1%" width="98%" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{number} {label} " />
+            </area>
+            <area condition="{showmainmenuicons}" x="0" width="100%" layer="3">
+                <drawtext condition="not{current}" x="{areaheight} + {areawidth}*0.02" width="{areawidth} - {areaheight}" valign="center" font="{regular}" fontsize="80%" color="{clrGray}" text="{number} {label} " />
+                <drawtext condition="{current}" x="{areaheight} + {areawidth}*0.02" width="{areawidth} - {areaheight}" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{number} {label} " />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+        </currentelement>
+    </menuitems>
+
+</menumain>
diff --git a/skins/blackhole/xmlfiles/displaymenurecordings.xml b/skins/blackhole/xmlfiles/displaymenurecordings.xml
new file mode 100644
index 0000000..f7e85b1
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenurecordings.xml
@@ -0,0 +1,120 @@
+<menurecordings x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%">
+
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="{nummenuitems}">
+        <!-- Available Variables recordings menu listelement:
+        {nummenuitem}           number of item in list, starts with 1
+        {name}                  Name of recording
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes
+        {current}               true if item is currently selected
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposterthumbnail}    true if a scraped poster thumbnail is available for recording
+        {thumbnailbwidth}       width of scraped poster thumbnail
+        {thumbnailheight}       height of scraped poster thumbnail
+        {thumbnailpath}         absolute path of scraped poster thumbnail
+        -->
+        <listelement>
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area condition="not{folder}" x="1%" width="50%" layer="3">
+                <drawtext condition="not{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{date} - {time}, {duration} min" />
+                <drawtext condition="{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{date} - {time}, {duration} min" />
+            </area>
+            <area condition="not{folder}" x="1%" width="50%" layer="3">
+                <drawimage name="new" condition="{new}" imagetype="icon" path="ico_new_rec" align="right" y="8%" width="{areaheight}/2" height="{areaheight}/2" />
+                <drawimage name="cutted" condition="{new}++{cutted}" imagetype="icon" path="ico_cutted" x="{areawidth} - {areaheight} - 10" y="8%" width="{areaheight}/2" height="{areaheight}/2" />
+                <drawimage condition="not{new}++{cutted}" imagetype="icon" path="ico_cutted" align="right" y="8%" width="{areaheight}/2" height="{areaheight}/2" />
+            </area>
+            <areascroll condition="not{folder}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="50%" layer="3">
+                <drawtext condition="not{current}" name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{name}" />
+                <drawtext condition="{current}" name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrWhite}" text="{name}" />
+            </areascroll>
+            <area condition="{folder}" x="1%" width="4%" layer="3">
+                <drawimage imagetype="icon" path="ico_folder" x="0" valign="center" width="{areaheight}*0.8" height="80%"/>
+            </area>
+            <areascroll condition="{folder}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="6%" width="45%" layer="3">
+                <drawtext condition="not{current}" name="menutext" x="0" valign="center" font="{regular}" fontsize="70%" color="{clrGray}" text="{name} ({numrecordingsfolder} rec., {newrecordingsfolder} new)" />
+                <drawtext condition="{current}" name="menutext" x="0" valign="center" font="{regular}" fontsize="70%" color="{clrWhite}" text="{name} ({numrecordingsfolder} rec., {newrecordingsfolder} new)" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}             x position of according menu item
+        {menuitemy}             y position of according menu item
+        {menuitemwidth}         width of according menu item
+        {menuitemheight}        height of according menu item
+        {name}                  Real Name of recording (Name of Recording Folder)
+        {epgname}               Name of recording (Name from EPG)
+        {shorttext}             Short Text of recording
+        {description}           Descrption of recording        
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposter}             true if a scraped poster is available for recording
+        {posterwidth}           width of scraped poster
+        {posterheight}          height of scraped poster
+        {posterpath}            absolute path of scraped poster
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="55%" y="52%" width="45%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area condition="{folder}" x="55%" y="52%" width="45%" height="48%" layer="3">
+                <drawimage imagetype="icon" path="ico_folder" x="25%" y="3%" width="50%" height="{areawidth}*0.5"/>
+                <drawtext align="center" y="75%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{numrecordingsfolder} recs, {newrecordingsfolder} new" />
+            </area>
+            <areascroll condition="not{folder}++not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="56%" y="53%" width="43%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{date} - {time}, {duration} min" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{epgname}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{shorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{description}" />
+            </areascroll>
+            <area condition="not{folder}++{hasposter}" x="56%" y="53%" width="15%" height="46%" layer="3">
+                <drawimage imagetype="image" path="{posterpath}" align="center" valign="center" width="{areawidth}" height="{areawidth} * {posterheight} / {posterwidth}"/>
+            </area>
+            <areascroll condition="not{folder}++{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="72%" y="53%" width="27%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{date} - {time}, {duration} min" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{epgname}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{shorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{description}" />
+            </areascroll>
+        </currentelement>
+    </menuitems>
+
+</menurecordings>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymenuschedules.xml b/skins/blackhole/xmlfiles/displaymenuschedules.xml
new file mode 100644
index 0000000..5eca045
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenuschedules.xml
@@ -0,0 +1,265 @@
+<menuschedules x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    {channelnumber}                 Number of Channel of current event
+    {channelname}                   Name of current Channel of current event
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {whatson}                       true if menu "What's on" is displayed
+    {whatsonnow}                    true if menu "What's on now" is displayed
+    {whatsonnext}                   true if menu "What's on next" is displayed
+    {whatsonfavorites}              true if EPGSearch Favorites menu is displayed
+    -->
+    <header>
+        <area x="0" y="0" width="83%" height="8%" layer="3">
+            <drawtext condition="{whatsonnow}||{whatsonnext}||{whatsonfavorites}" x="5" valign="center" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{title}" />
+            <drawimage name="logo" condition="{whatson}" imagetype="channellogo" path="{channelid}" x="1%" width="5%" height="90%" align="left" valign="center" />
+            <drawtext condition="{whatson}" x="{posx(logo)} + {width(logo)}+20" valign="center" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{channelnumber} - {channelname}" />
+        </area>
+    </header>
+
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="{nummenuitems}">
+        <!-- Available Variables schedules menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {hasVPS}                  true if event has VPS information
+        -->
+        <listelement>
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <!-- progress bar for running -->
+            <area condition="{running}" x="25%" width="25%" layer="4">
+                <drawimage imagetype="skinpart" path="progressbarback" x="0" y="10%" width="100%" height="20%"/>
+            </area>
+            <area condition="{running}" x="25%" width="25%" layer="5">
+                <drawimage imagetype="skinpart" path="progressbar" x="{areaheight}*0.1" y="10%" width="{elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight}*0.2" height="20%"/>
+            </area>
+            <area condition="{running}" x="25%" width="25%" layer="6">
+                <drawimage imagetype="skinpart" path="progressbarend" x="{areaheight}*0.1 + {elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight}*0.2 - 1" y="10%" width="{areaheight}*0.1" height="20%"/>
+            </area>
+            <!-- timer symbols-->
+            <area condition="{timerfull}||{timerpartitial}" x="47%" width="3%" layer="4">
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_timer" align="right" y="1%" width="{areaheight}/2" height="{areaheight}/2" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_timer" align="right" y="1%" width="{areaheight} * 0.35" height="{areaheight} * 0.35" />
+            </area>
+            <!-- element whatson -->
+            <area condition="not{separator}++{whatson}++not{current}" x="1%" width="50%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatson}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="50%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatson}++not{current}" x="1%" width="50%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatson}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="50%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <!-- current element whatson -->
+            <area condition="not{separator}++{whatson}++{current}" x="1%" width="50%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatson}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="50%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrWhite}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatson}++{current}" x="1%" width="50%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrWhite}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatson}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="50%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrWhite}" text="{title}" />
+            </areascroll>
+            <!-- element whatsonnow -->
+            <area condition="not{separator}++{whatsonnow}" x="1%" width="9%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="90%" height="90%" align="center" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnow}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonnow}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonnow}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonnow}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <!-- current element whatsonnow -->
+            <area condition="not{separator}++{whatsonnow}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonnow}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonnow}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonnow}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <!-- element whatsonnext -->
+            <area condition="not{separator}++{whatsonnext}" x="1%" width="9%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="90%" height="90%" align="center" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnext}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonnext}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonnext}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonnext}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <!-- current element whatsonnext -->
+            <area condition="not{separator}++{whatsonnext}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonnext}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonnext}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonnext}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <!-- element whatsonfavorites -->
+            <area condition="not{separator}++{whatsonfavorites}" x="1%" width="9%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="90%" height="90%" align="center" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonfavorites}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonfavorites}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonfavorites}++not{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonfavorites}++not{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+           <!-- current element whatsonfavorites -->
+            <area condition="not{separator}++{whatsonfavorites}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{start} - {stop}" />
+            </area>
+            <areascroll condition="{showsubtitle}++not{separator}++{whatsonfavorites}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="32%" font="{regular}" fontsize="45%" color="{clrGray}" text="{title}" />
+            </areascroll>
+            <area condition="{showsubtitle}++not{separator}++{whatsonfavorites}++{current}" x="11%" width="39%" layer="3">
+                <drawtext x="0" y="73%" width="98%" font="{regular}" fontsize="27%" color="{clrGray}" text="{shorttext}" />
+            </area>
+            <areascroll condition="not{showsubtitle}++not{separator}++{whatsonfavorites}++{current}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="11%" width="39%" layer="3">
+                <drawtext name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+            </areascroll>
+
+           <!-- day or channel separator -->
+            <area condition="{separator}" x="1%" width="50%" layer="3">
+                <drawtext x="0" valign="center" font="{regular}" fontsize="70%" color="{clrWhite}" text="{title}" />
+            </area>      
+        </listelement>
+        <!-- Available Variables schedules menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {description}             detailed description of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {hasposter}               true if a scraped poster is available for this element
+        {posterwidth}             width of scraped poster
+        {posterheight}            height of scraped poster
+        {posterpath}              absolute path of scraped poster
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {schedule[]}              array with next 10 schedules, only for whatsonnow and whatsonnext
+        {schedule[title]}         title of event
+        {schedule[shorttext]}     shorttext of event
+        {schedule[start]}         start time of event in hh:mm
+        {schedule[stop]}          stop time of event in hh:mm
+        -->
+        <currentelement delay="200" fadetime="0">
+            <area x="55%" y="52%" width="45%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <areascroll condition="not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="56%" y="53%" width="43%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{title}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{shorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{description}" />
+            </areascroll>
+            <area condition="{hasposter}" x="56%" y="53%" width="15%" height="46%" layer="3">
+                <drawimage imagetype="image" path="{posterpath}" align="center" valign="center" width="{areawidth}" height="{areawidth} * {posterheight} / {posterwidth}"/>
+            </area>
+            <areascroll condition="{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="72%" y="53%" width="27%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{day} {daynumeric}.{month} {start} - {stop}" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{title}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{shorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{description}" />
+            </areascroll>
+        </currentelement>
+    </menuitems>
+
+</menuschedules>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymenusetup.xml b/skins/blackhole/xmlfiles/displaymenusetup.xml
new file mode 100644
index 0000000..a86dfd4
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenusetup.xml
@@ -0,0 +1,51 @@
+<menusetup x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+
+   <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="{nummenuitemsmain}">
+        <!-- Available Variables setup menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+           <area x="0" width="51%" layer="3">
+                <drawtext condition="not{current}" x="1%" width="98%" valign="center" font="{regular}" fontsize="80%" color="{clrGray}" text="{number} {label} " />
+                <drawtext condition="{current}" x="1%" width="98%" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{number} {label} " />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+            <area x="55%" y="52%" width="45%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area x="55%" y="52%" width="45%" height="48%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" align="center" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+            </area>
+        </currentelement>
+    </menuitems>
+    
+</menusetup>
diff --git a/skins/blackhole/xmlfiles/displaymenutimers.xml b/skins/blackhole/xmlfiles/displaymenutimers.xml
new file mode 100644
index 0000000..8805203
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymenutimers.xml
@@ -0,0 +1,117 @@
+<menutimers x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="{nummenuitems}">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}       number of item in list, starts with 1
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)
+        {channelname}       Name of channel which is set for the timer
+        {channellogoexists} true if a channel logo exists 
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {current}           true if item is currently selected
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <listelement>
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <area condition="not{separator}" x="1%" width="9%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" width="90%" height="90%" align="center" valign="center" />
+            </area>
+            <area condition="not{separator}" x="11%" width="39%" layer="3">
+                <drawtext condition="not{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrGray}" text="{channelname}, {dayname} {day}.{month} {timerstart} - {timerstop}" />
+                <drawtext condition="{current}" x="0" y="5%" font="{regular}" fontsize="35%" color="{clrWhite}" text="{channelname}, {dayname} {day}.{month} {timerstart} - {timerstop}" />
+            </area>
+            <area condition="not{separator}" x="11%" width="39%" layer="4">
+                <drawimage condition="{flagactive}" imagetype="icon" path="ico_timer_active" align="right"  y="8%" width="{areaheight}/3" height="{areaheight}/3" />
+                <drawimage condition="not{flagactive}" imagetype="icon" path="ico_timer_inactive" align="right" y="8%" width="{areaheight}/3" height="{areaheight}/3" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}" x="11%" width="39%" layer="3">
+                <drawtext condition="not{current}"  name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrGray}" text="{title}" />
+                <drawtext condition="{current}" name="menutext" x="0" y="35%" font="{regular}" fontsize="60%" color="{clrWhite}" text="{title}" />
+            </areascroll>
+            <area condition="{separator}" x="1%" width="50%" layer="3">
+                <drawtext x="0" valign="center" font="{regular}" fontsize="70%" color="{clrWhite}" text="{title}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)#
+        {channelname}       Name of channel which is set for the timer
+        {channellogoexists} true if a channel logo exists 
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {eventshorttext}    Short Text corresponding event
+        {eventdescription}  Description corresponding event
+        {hasposter}         true if a scraped poster is available for event
+        {posterwidth}       width of scraped poster
+        {posterheight}      height of scraped poster
+        {posterpath}        absolute path of scraped poster
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area condition="{flagactive}" x="55%" y="52%" width="45%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+            <areascroll condition="{flagactive} ++ not{hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="56%" y="53%" width="43%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{dayname} {day}.{month} {eventstart} - {eventstop}" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{eventtitle}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{eventshorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{eventdescription}" />
+            </areascroll>
+            <area condition="{flagactive} ++ {hasposter}" x="56%" y="53%" width="15%" height="46%" layer="3">
+                <drawimage imagetype="image" path="{posterpath}" align="center" valign="center" width="{areawidth}" height="{areawidth} * {posterheight} / {posterwidth}"/>
+            </area>
+            <areascroll condition="{flagactive} ++ {hasposter}" orientation="vertical" mode="forthandback" delay="1000" scrollspeed="medium" x="72%" y="53%" width="27%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="10%" color="{clrWhite}" text="{dayname} {day}.{month} {eventstart} - {eventstop}" />
+                <drawtext x="0" y="10%" font="{semibold}" width="100%" fontsize="12%" color="{clrWhite}" text="{eventtitle}" />
+                <drawtextbox name="shorttext" x="0" y="21%" width="100%" font="{regular}" fontsize="9%" color="{clrWhite}" text="{eventshorttext}" />
+                <drawtextbox x="0" y="{posy(shorttext)} + {height(shorttext)}" width="100%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{eventdescription}" />
+            </areascroll>
+        </currentelement>
+        
+    </menuitems>
+
+</menutimers>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/displaymessage.xml b/skins/blackhole/xmlfiles/displaymessage.xml
new file mode 100644
index 0000000..1f18edf
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displaymessage.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymessage SYSTEM "../../../dtd/displaymessage.dtd">
+
+<displaymessage x="0" y="0" width="100%" height="100%" fadetime="{fadetime}">
+
+    <background>
+    </background>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="80%" width="90%" height="15%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageblue" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messagegreen" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageyellow" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messagered" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="80%" width="90%" height="15%" layer="7">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+</displaymessage>
diff --git a/skins/blackhole/xmlfiles/displayreplay.xml b/skins/blackhole/xmlfiles/displayreplay.xml
new file mode 100644
index 0000000..4ea2577
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displayreplay.xml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayreplay SYSTEM "../../../dtd/displayreplay.dtd">
+
+<displayreplay  x="0" y="0" width="100%" height="100%" fadetime="{fadetime}">
+
+    <background>
+       <!-- global background -->
+        <area x="0" y="70%" width="100%" height="30%" layer="2">
+            <drawimage imagetype="skinpart" path="displaychannelback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- progressbar background -->
+        <area x="17%" y="81%" width="67%" height="12%" layer="3">
+            <drawimage imagetype="skinpart" path="displaychannelbackepg" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="18%" y="84%" width="65%" height="{areaheight}*0.024" layer="4">
+            <drawimage imagetype="skinpart" path="progressbarback_replay" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- watch background -->
+        <area x="86%" y="76%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="3">
+            <drawimage imagetype="skinpart" path="watchback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <backgroundmodeonly>
+        <area x="{areawidth}/2 - 2.5*{areaheight}*0.1" y="82%" width="5*{areaheight}*0.1" height="10%" layer="2">
+            <fill color="{clrBlackTrans}" />
+        </area>
+    </backgroundmodeonly>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="86%" y="70%" width="{areaheight}*0.18" height="5%" layer="4">
+            <drawtext align="center" y="0" font="{semibold}" fontsize="100%" color="{clrWhite}" text="{daynameshort} {day}.{month}" />
+        </area>
+        <area x="86%" y="94%" width="{areaheight}*0.18" height="5%" layer="4">
+            <drawtext align="center" y="0" font="{digital}" fontsize="100%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables time:
+    {sec}                    current seconds
+    {min}                    current minutes
+    {hour}                   current hours
+    {hmins}                  current "hourminutes" to display an hour hand
+    -->
+    <time>
+        <area x="86%" y="76%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="6">
+            <drawimage imagetype="skinpart" path="watchhands/s_{sec}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="86%" y="76%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="5">
+            <drawimage imagetype="skinpart" path="watchhands/m_{min}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="86%" y="76%" width="{areaheight}*0.18" height="{areaheight}*0.18" layer="4">
+            <drawimage imagetype="skinpart" path="watchhands/h_{hmins}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </time>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasposter}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{hasposter}" x="1%" y="75%" width="{areaheight}*0.21*{posterwidth}/{posterheight}" height="21%" layer="3">
+            <drawimage imagetype="image" path="{posterpath}" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area condition="not{hasposter}" x="1%" y="75%" width="14%" height="21%" layer="3">
+            <drawimage imagetype="icon" path="ico_recording" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables rectitle:
+    {rectitle}                     Title of Recording
+    {recsubtitle}                  Subtitle of the Recording
+    {recdate}                      Date Recording in dd.mm.yy
+    {rectime}                      Time of Recording in hh:mm
+    -->
+    <rectitle>
+        <area x="17%" y="75%" width="67%" height="6%" layer="3">
+            <drawtext x="0" y="0" font="{semibold}" width="100%" fontsize="100%" color="{clrWhite}" text="{rectitle} - {recsubtitle}" />
+        </area>
+    </rectitle>
+
+    <!-- Available Variables recinfo:
+    {screenwidth}                      width of currently displayed recording in px
+    {screenheight}                     height of currently displayed recording in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <recinfo>
+       <area x="17%" y="94%" width="67%" height="5%" layer="5">
+            <drawimage imagetype="icon" path="ico_{resolution}" x="0" y="0" width="{areaheight}*3" height="{areaheight}"/>
+            <drawimage condition="{isWideScreen}" imagetype="icon" path="ico_widescreen" x="{areaheight}*3 + 10" y="0" width="{areaheight}*3" height="{areaheight}"/>
+        </area>
+    </recinfo>
+
+    <!-- Available Variables currenttime:
+    {reccurrent}                   Current Time in hh:mm:ss
+    -->
+    <currenttime>
+        <area x="18%" y="88%" width="30%" height="5%" layer="4">
+            <drawtext x="0" valign="center" font="{digital}" fontsize="80%" color="{clrWhite}" text="{reccurrent}" />
+        </area>
+    </currenttime>
+
+    <!-- Available Variables totaltime:
+    {rectotal}                   Total Time in hh:mm:ss
+    -->
+    <totaltime>
+        <area x="54%" y="88%" width="29%" height="5%" layer="4">
+            <drawtext align="right" valign="center" font="{digital}" fontsize="80%" color="{clrWhite}" text="{rectotal}" />
+        </area>
+    </totaltime>
+
+    <!-- Available Variables progressbar:
+    {current}                   current frame of recording
+    {total}                     total frames of recording
+    -->
+    <progressbar>
+        <area x="18%" y="84%" width="65%" height="{areaheight}*0.024" layer="5">
+            <drawimage imagetype="skinpart" path="progressbar" x="2" y="2" width="{current}/{total}*{areawidth} - {current}/{total}*4" height="{areaheight}-4"/>
+        </area>
+    </progressbar>
+
+    <!-- Available Variables cutmarks:
+    {marks[]}                   array of available marks
+    {marks[position]}           frame of current mark
+    {marks[endposition]}        frame where startmark ends
+    {marks[total]}              total number of frames
+    {marks[active]}             true if current replay position hits exactly the mark
+    {marks[startmark]}          true if mark is start mark
+    -->
+    <cutmarks>
+        <area x="18%" y="83%" width="65%" height="{areaheight}*0.044" layer="6" transparency="40">
+            <loop name="marks" x="0" y="0" orientation="absolute">
+                <!-- draw mark -->
+                <drawimage condition="{marks[startmark]}" imagetype="icon" path="ico_cutmark_start" x="{marks[position]}/{marks[total]}*{areawidth} - {areaheight}/3" y="0" width="{areaheight}/3" height="{areaheight}" />
+                <drawimage condition="not{marks[startmark]}" imagetype="icon" path="ico_cutmark_stop" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="{areaheight}/3" height="{areaheight}" />
+                <!-- draw bar to next mark if mark is startmark-->                
+                <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="40%" width="{marks[endposition]}/{marks[total]}*{areawidth} - {marks[position]}/{marks[total]}*{areawidth}" height="20%" color="{clrRed}" />
+            </loop>
+        </area>
+    </cutmarks>
+
+    <!-- Available Variables controlicons and controliconsmodeonly:
+    {play}              true if recording is played currently
+    {pause}             true if recording is paused
+    {forward}           true if fast forwarding 
+    {forward1x}         true if fast forwarding 1x (with 3 trickspeeds)
+    {forward2x}         true if fast forwarding 2x (with 3 trickspeeds)
+    {forward3x}         true if fast forwarding 3x (with 3 trickspeeds)
+    {rewind}            true if rewinding 
+    {rewind1x}          true if rewinding 1x (with 3 trickspeeds)
+    {rewind2x}          true if rewinding 2x (with 3 trickspeeds)
+    {rewind3x}          true if rewinding 3x (with 3 trickspeeds)
+    -->
+    <controlicons>
+        <area x="67%" y="70%" width="25%" height="6%" layer="4">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_back_inactive" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_back_active" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_back_active_x1" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_back_active_x2" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_back_active_x3" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_inactive" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause_active" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_inactive" x="2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play_active" x="2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_fwd_inactive" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_fwd_active" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_fwd_active_x1" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_fwd_active_x2" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_fwd_active_x3" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>        
+    </controlicons>
+
+    <controliconsmodeonly>
+        <area x="{areawidth}/2 - 2*{areaheight}*0.1" y="82%" width="4*{areaheight}*0.1" height="10%" layer="3">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_back_inactive" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_back_active" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_back_active_x1" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_back_active_x2" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_back_active_x3" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_inactive" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause_active" x="{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_inactive" x="2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play_active" x="2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_fwd_inactive" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_fwd_active" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_fwd_active_x1" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_fwd_active_x2" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_fwd_active_x3" x="3*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>        
+    </controliconsmodeonly>
+
+    <!-- Available Variables jump:
+    {jump}                      time to jump to in hh:mm
+    -->
+    <jump>
+        <area x="50%" y="94%" width="30%" height="6%" layer="4">
+            <drawtext align="right" valign="center" font="{digital}" fontsize="60%" color="{clrWhite}" text="{jump}" />
+        </area>
+    </jump>
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="78%" width="90%" height="15%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageblue" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messagegreen" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageyellow" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messagered" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="78%" width="90%" height="15%" layer="7">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+    <!-- Available Variables onpause and onpausemodeonly:
+    {name}                    title of recording
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb    
+    -->
+    <!-- delay (in seconds) defines the time to wait till viewelement is displayed
+    fadetime in ms -->
+    <onpause delay="30" fadetime="{fadetime}">
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrBlackTrans}" />
+        </area>
+        <area x="0" y="35%" width="100%" height="30%" layer="2">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="100%" color="{clrWhite}" text="{tr(pause)}" />
+        </area>
+    </onpause>
+
+    <onpausemodeonly delay="30" fadetime="{fadetime}">
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrBlackTrans}" />
+        </area>
+        <area x="0" y="35%" width="100%" height="30%" layer="2">
+            <drawtext align="center" valign="center" font="{regular}" fontsize="100%" color="{clrWhite}" text="{tr(pause)}" />
+        </area>
+    </onpausemodeonly>
+
+</displayreplay>
diff --git a/skins/blackhole/xmlfiles/displayvolume.xml b/skins/blackhole/xmlfiles/displayvolume.xml
new file mode 100644
index 0000000..7768aff
--- /dev/null
+++ b/skins/blackhole/xmlfiles/displayvolume.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayvolume SYSTEM "../../../dtd/displayvolume.dtd">
+
+<displayvolume x="79%" y="{areaheight} - {areawidth}*0.26" width="20%" height="{areawidth}*0.25" fadetime="{fadetime}">
+
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="2">
+            <drawimage imagetype="skinpart" path="displayvolumeback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="0" y="0" width="100%" height="100%" layer="3">
+            <drawimage imagetype="skinpart" path="tacho_percent_back" x="{areawidth}*0.059" y="{areawidth}*0.059" width="{areawidth}*0.882" height="{areawidth}*0.882"/>
+        </area>
+    </background>
+
+    <!-- Available Variables volume:
+    {volume}                            current volume, range from 0 to 255
+    {volpercent}                        current volume in %
+    {maxvolume}                         maximal volume
+    {mute}                              true if volume is muted
+    -->
+    <volume>
+        <area x="0" y="80%" width="100%" height="20%" layer="4">
+            <drawtext align="center" valign="center" color="{clrWhite}" font="{semibold}" fontsize="80%" text="{volume} / {maxvolume}" />
+        </area>
+        <area x="0" y="0" width="100%" height="100%" layer="5">
+            <drawimage imagetype="skinpart" path="tachohands/perc_{volpercent}" x="{areawidth}*0.059" y="{areawidth}*0.059" width="{areawidth}*0.882" height="{areawidth}*0.882"/>
+        </area>
+        <area x="0" y="80%" width="20%" height="20%" layer="5">
+            <drawimage condition="gt({volpercent}, 74)" imagetype="icon" path="ico_volume_full" align="center" valign="center" width="90%" height="90%"/>
+            <drawimage condition="gt({volpercent}, 34) ++ lt({volpercent}, 75)" imagetype="icon" path="ico_volume_medium" align="center" valign="center" width="90%" height="90%"/>
+            <drawimage condition="gt({volpercent}, 0) ++ lt({volpercent}, 35)" imagetype="icon" path="ico_volume_low" align="center" valign="center" width="90%" height="90%"/>
+            <drawimage condition="eq({volpercent}, 0)" imagetype="icon" path="ico_volume_mute" align="center" valign="center" width="90%" height="90%"/>
+        </area>
+    </volume>
+
+</displayvolume>
diff --git a/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecast.xml b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecast.xml
new file mode 100644
index 0000000..4cccbaf
--- /dev/null
+++ b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecast.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%" >
+    
+    <menuitems x="1%" y="10%" orientation="vertical" width="98%" height="80%" align="center" numlistelements="8">
+        <!-- Available Variables:
+        {current}
+        {menuitemtext}                      "Current Weather", "Next 48 hours" or "Next 7 days"
+        {iscurrent}                         true if item is "Current Weather"
+        {ishourly}                          true if item is "Next 48 hours"
+        {isdaily}                           true if item is "Next 7 days"
+        {city}                              configured city to display weather for
+        {latitude}                          latitude
+        {longitude}                         longitude
+        
+        If {iscurrent} is true, the following tokens are set:
+        {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+        {temperature}                       current temperature in °C
+        {apparenttemperature}               apparent (felt) temperature in °C
+        {summary}                           short summary of current weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+        {precipitationintensity}            precipitation intensity in l/qm    
+        {precipitationprobability}          precipitation probability in %
+        {precipitationtype}                 precipitation type (snow, ...)
+        {humidity}                          humidity in %
+        {windspeed}                         wind speed in km/h
+        {windbearing}                       wind bearing in degrees
+        {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+        {visibility}                        visibility in km
+        {cloudcover}                        cloud cover in %
+        {pressure}                          pressure in HPa
+        {ozone}                             Ozone in DU (Dobson Unit)
+
+        If {ishourly} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {hourly[]}                          array with up to 48 hourly forecasts
+        {hourly[num]}                       number of forecast, starting at 1
+        {hourly[timestamp]}                 timestamp in hh:mm
+        {hourly[temperature]}               temperature in °C
+        {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+        {hourly[summary]}                   short summary
+        {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+        {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+        {hourly[precipitationprobability]}  precipitation probability in %
+        {hourly[precipitationtype]}         precipitation type (snow, ...)
+        {hourly[humidity]}                  humidity in %
+        {hourly[windspeed]}                 wind speed in km/h
+        {hourly[windbearing]}               wind bearing in degrees
+        {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+        {hourly[visibility]}                visibility in km
+        {hourly[cloudcover]}                cloud cover in %
+        {hourly[pressure]}                  pressure in HPa
+        {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+
+        If {isdaily} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {daily[day]}                        day of forecast in dd.mm
+        {daily[dayname]}                    three letter abbrivated day name
+        {daily[temperaturemin]}             minimum temperature at this day in °C
+        {daily[temperaturemintime]}         time of minimum temperature
+        {daily[temperaturemax]}             maximum temperature at this day in °C
+        {daily[temperaturemaxtime]}         time of maximum temperature
+        {daily[summary]}                    short summary
+        {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+        {daily[precipitationintensity]}     precipitation intensity in l/qm    
+        {daily[precipitationprobability]}   precipitation probability in %
+        {daily[precipitationtype]}          precipitation type (snow, ...)
+        {daily[humidity]}                   humidity in %
+        {daily[windspeed]}                  wind speed in km/h
+        {daily[windbearing]}                wind bearing in degrees
+        {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+        {daily[visibility]}                 visibility in km
+        {daily[cloudcover]}                 cloud cover in %
+        {daily[pressure]}                   pressure in HPa
+        {daily[ozone]}                      Ozone in DU (Dobson Unit)
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="0" width="51%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="0" width="100%" height="100%"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="0" width="100%" height="100%"/>
+            </area>   
+            <area x="0" width="51%" layer="3">
+                <drawtext x="10" valign="center" font="{regular}" fontsize="80%" color="{clrWhite}" text="{menuitemtext}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- All Tokens from listelement are available -->
+        <currentelement delay="100" fadetime="0">
+            <area x="0" y="52%" width="100%" height="48%" layer="2">
+                <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+            </area>
+           <area condition="{iscurrent}" x="1%" y="53%" width="98%" height="46%" layer="3">
+                <drawtext x="0" y="0" font="{semibold}" fontsize="20%" color="{clrWhite}" text="{city} {timestamp}" />
+                <drawtext x="0" y="20%" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{summary}" />
+                <drawimage name="weathericon" imagetype="icon" path="{icon}" align="right" y="0" width="{areaheight}*0.5" height="{areaheight}*0.5"/>
+                <drawtext name="temperature" x="{areawidth} - {width(weathericon)} - {width(temperature)} - 15" y="0" font="{regular}" fontsize="40%" color="{clrWhite}" text="{temperature}°C" />
+                <drawtext x="0" y="40%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature} °C" />
+                <drawtext x="0" y="55%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %, {tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+                <drawtext x="0" y="70%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %, {tr(cloudcover)}: {cloudcover} %" />
+                <drawtext x="0" y="85%" font="{regular}" fontsize="15%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h, {tr(windbearing)}: {windbearingstring} ({windbearing} °)" />
+            </area>
+            <area condition="{ishourly}" x="1%" y="53%" width="98%" height="46%" layer="3">
+                <loop name="hourly" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/8" rowheight="{areaheight}" overflow="cut">
+                    <drawtext align="center" y="0" font="{semibold}" fontsize="15%"  color="{clrWhite}" text="{hourly[timestamp]}" />
+                    <drawimage imagetype="icon" path="{hourly[icon]}" align="center" y="15%" width="{columnwidth}*0.8" height="{columnwidth}*0.8"/>
+                    <drawtext align="center" y="{columnwidth}*0.8 + {rowheight}*0.15" font="{regular}" fontsize="15%" color="{clrWhite}" text="{hourly[temperature]}°C" />
+                    <drawtextbox x="0" y="{columnwidth}*0.8 + {rowheight}*0.3" width="{columnwidth}" maxlines="2" align="center" font="{regular}" fontsize="10%" color="{clrWhite}" text="{hourly[summary]}" />
+                    <drawimage imagetype="skinpart" path="line_vertical" x="{columnwidth}" y="0" width="2" height="{rowheight}"/>
+                </loop>
+            </area>
+            <area condition="{isdaily}" x="1%" y="53%" width="98%" height="46%" layer="3">
+                <loop name="daily" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/7" rowheight="{areaheight}" overflow="cut">
+                    <drawtext align="center" y="0" font="{semibold}" fontsize="14%"  color="{clrWhite}" text="{daily[dayname]}" />
+                    <drawtext align="center" y="10%" font="{semibold}" fontsize="14%"  color="{clrWhite}" text="{daily[day]}" />
+                    <drawimage imagetype="icon" path="{daily[icon]}" align="center" y="25%" width="{columnwidth}*0.6" height="{columnwidth}*0.6"/>
+                    <drawtext align="center" y="{rowheight}*0.65" font="{regular}" fontsize="13%" color="{clrWhite}" text="{daily[temperaturemin]}°C - {daily[temperaturemax]}°C" />
+                    <drawtextbox x="{columnwidth}*0.02" y="{rowheight}*0.80" width="{columnwidth}*0.96" maxlines="2" align="center" font="{regular}" fontsize="8%" color="{clrWhite}" text="{daily[summary]}" />
+                    <drawimage imagetype="skinpart" path="line_vertical" x="{columnwidth}" y="0" width="2" height="{rowheight}"/>
+                </loop>
+            </area>
+        </currentelement>
+    </menuitems>
+</menuplugin>
\ No newline at end of file
diff --git a/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
new file mode 100644
index 0000000..8b73e9c
--- /dev/null
+++ b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%">
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader and tab:
+    {menuheader}                        "Current Weather"
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+    {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+    {temperature}                       current temperature in °C
+    {apparenttemperature}               apparent (felt) temperature in °C
+    {temperaturemin}                    minimum temperature the day in °C
+    {temperaturemax}                    maximum temperature the day in °C
+    {summary}                           short summary of current weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {precipitationintensity}            precipitation intensity in l/qm    
+    {precipitationprobability}          precipitation probability in %
+    {precipitationtype}                 precipitation type (snow, ...)
+    {humidity}                          humidity in %
+    {windspeed}                         wind speed in km/h
+    {windbearing}                       wind bearing in degrees
+    {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+    {visibility}                        visibility in km
+    {cloudcover}                        cloud cover in %
+    {pressure}                          pressure in HPa
+    {ozone}                             Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="50%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="3">
+            <drawimage imagetype="icon" path="{icon}" x="5%" y="5%" width="{areaheight}/2" height="{areaheight}/2"/>
+        </area>
+        <area x="55%" y="52%" width="42%" height="37%" layer="4">
+            <drawtext align="right" valign="bottom" font="{regular}" fontsize="50%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <drawtext x="0" y="0" font="{semibold}" fontsize="8%" color="{clrWhite}" text="{tr(conditions)} {tr(for)} {city}" />
+        <drawtext x="0" y="8%" font="{semibold}" fontsize="8%" color="{clrWhite}" text="({latitude}, {longitude})" />
+        <drawtext x="0" y="16%" font="{regular}" fontsize="8%" color="{clrWhite}" text="{summary}" />
+
+        <drawtext x="0" y="28%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(temp)}: {temperature}°C" />
+        <drawtext x="0" y="34%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature}°C" />
+        <drawtext x="0" y="40%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(todaymin)}: {mintemperature}°C" />
+        <drawtext x="0" y="46%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(todaymax)}: {maxtemperature}°C" />
+        <drawtext x="0" y="52%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %" />
+        <drawtext x="0" y="58%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+        <drawtext x="0" y="64%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %" />
+        <drawtext x="0" y="70%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h aus {windbearingstring}" />
+        <drawtext x="0" y="76%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(visibility)}: {visibility} km" />
+        <drawtext x="0" y="82%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(cloudcover)}: {cloudcover} %" />
+        <drawtext x="0" y="88%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(pressure)}: {pressure} HPa" />
+        <drawtext x="0" y="94%" font="{regular}" fontsize="6%" color="{clrWhite}" text="{tr(ozone)}: {ozone} DU" />
+    </tab>
+</menuplugin>
diff --git a/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
new file mode 100644
index 0000000..e6b3d8c
--- /dev/null
+++ b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%">
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {daily[day]}                        day of forecast in dd.mm
+    {daily[dayname]}                    three letter abbrivated day name
+    {daily[temperaturemin]}             minimum temperature at this day in °C
+    {daily[temperaturemintime]}         time of minimum temperature
+    {daily[temperaturemax]}             maximum temperature at this day in °C
+    {daily[temperaturemaxtime]}         time of maximum temperature
+    {daily[summary]}                    short summary
+    {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+    {daily[precipitationintensity]}     precipitation intensity in l/qm    
+    {daily[precipitationprobability]}   precipitation probability in %
+    {daily[precipitationtype]}          precipitation type (snow, ...)
+    {daily[humidity]}                   humidity in %
+    {daily[windspeed]}                  wind speed in km/h
+    {daily[windbearing]}                wind bearing in degrees
+    {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+    {daily[visibility]}                 visibility in km
+    {daily[cloudcover]}                 cloud cover in %
+    {daily[pressure]}                   pressure in HPa
+    {daily[ozone]}                      Ozone in DU (Dobson Unit)
+    -->
+
+    <detailheader>
+        <area x="1%" y="10%" width="50%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="3">
+            <drawimage imagetype="icon" path="{icon}" align="center" y="10" width="{areaheight}/2" height="{areaheight}/2"/>
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="4">
+            <drawtextbox name="summary" x="5" y="55%" width="{areawidth}-10" align="center" height="50%" font="{regular}" fontsize="12%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+       <loop name="daily" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/4">
+            <drawtext x="0" y="{rowheight}*0.15" font="{semibold}" fontsize="{rowheight}/3" color="{clrWhite}" text="{daily[dayname]} {daily[day]}" />
+            <drawimage imagetype="icon" path="{daily[icon]}" align="center" y="5" width="{rowheight}*0.5" height="{rowheight}*0.5"/>
+            <drawtext name="tempmin" x="0.7*{columnwidth} + 0.15*{columnwidth} - {width(tempmin)}/2" font="{light}" y="0" fontsize="{rowheight}*0.25" color="{clrWhite}" text="{tr(min)}. {daily[temperaturemin]}°C" />
+            <drawtext name="felt" x="0.7*{columnwidth} + 0.15*{columnwidth} - {width(felt)}/2" font="{light}" y="{rowheight}*0.25" fontsize="{rowheight}*0.25" color="{clrWhite}" text="{tr(max)}. {daily[temperaturemax]}°C" />
+            <drawtext x="0" y="{rowheight}*0.54" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{daily[summary]}" />
+            <drawtext x="0" y="{rowheight}*0.68" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{tr(precipitationprobability)} {daily[precipitationprobability]}%, {daily[precipitationintensity]} l/qm, {tr(windspeed)} {daily[windspeed]} km/h {tr(from)} {daily[windbearingstring]}" />
+            <drawtext x="0" y="{rowheight}*0.82" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{tr(cloudcover)} {daily[cloudcover]}%, {tr(visibility)} {daily[visibility]} km, {tr(pressure)} {daily[pressure]} HPa, {tr(ozone)} {daily[ozone]} DU" />
+            <drawimage imagetype="skinpart" path="line_horizontal" x="0" y="{rowheight} - 1" width="{columnwidth}" height="2"/>
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
new file mode 100644
index 0000000..ac68b82
--- /dev/null
+++ b/skins/blackhole/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="55%" scaletvy="10%" scaletvwidth="40%" scaletvheight="40%">
+    <scrollbar>
+        <area x="52%" y="10%" width="2%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="scrollbarback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="52%" y="10%" width="2%" height="80%" layer="3">
+            <drawimage imagetype="skinpart" path="scrollbar" x="0" y="{areaheight} * {offset} / 1000" width="100%" height="{areaheight} * {height} / 1000"/>
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {hourly[]}                          array with up to 48 hourly forecasts
+    {hourly[num]}                       number of forecast, starting at 1
+    {hourly[timestamp]}                 timestamp in hh:mm
+    {hourly[temperature]}               temperature in °C
+    {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+    {hourly[summary]}                   short summary
+    {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+    {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+    {hourly[precipitationprobability]}  precipitation probability in %
+    {hourly[precipitationtype]}         precipitation type (snow, ...)
+    {hourly[humidity]}                  humidity in %
+    {hourly[windspeed]}                 wind speed in km/h
+    {hourly[windbearing]}               wind bearing in degrees
+    {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+    {hourly[visibility]}                visibility in km
+    {hourly[cloudcover]}                cloud cover in %
+    {hourly[pressure]}                  pressure in HPa
+    {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="50%" height="80%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymendetailback" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="2">
+            <drawimage imagetype="skinpart" path="displaymenucurrentback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="3">
+            <drawimage imagetype="icon" path="{icon}" align="center" y="10" width="{areaheight}/2" height="{areaheight}/2"/>
+        </area>
+        <area x="55%" y="52%" width="43%" height="38%" layer="4">
+            <drawtextbox name="summary" x="5" y="55%" width="{areawidth}-10" align="center" height="50%" font="{regular}" fontsize="12%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="11%" width="48%" height="78%" layer="3" scrollheight="{areaheight}/4">
+        <loop name="hourly" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/4">
+            <drawtext x="0" y="0" font="{semibold}" fontsize="{rowheight}/2.5" color="{clrWhite}" text="{hourly[timestamp]}" />
+            <drawimage imagetype="icon" path="{hourly[icon]}" align="center" y="5" width="{rowheight}*0.5" height="{rowheight}*0.5"/>
+            <drawtext name="temp" x="0.7*{columnwidth} + 0.15*{columnwidth} - {width(temp)}/2" font="{light}" y="0" fontsize="{rowheight}*0.4" color="{clrWhite}" text="{hourly[temperature]}°C" />
+            <drawtext name="felt" x="0.7*{columnwidth} + 0.15*{columnwidth} - {width(felt)}/2" font="{light}" y="{rowheight}*0.35" fontsize="{rowheight}*0.15" color="{clrWhite}" text="{tr(felt)} {hourly[apparenttemperature]}°C" />
+            <drawtext x="0" y="{rowheight}*0.5" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{hourly[summary]}" />
+            <drawtext x="0" y="{rowheight}*0.64" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{tr(precipitationprobability)} {hourly[precipitationprobability]}%, {hourly[precipitationintensity]} l/qm" />
+            <drawtext x="0" y="{rowheight}*0.78" width="{columnwidth}" font="{regular}" fontsize="{rowheight}*0.14" color="{clrWhite}" text="{tr(windspeed)} {hourly[windspeed]} km/h {tr(from)} {hourly[windbearingstring]}" />
+            <drawimage imagetype="skinpart" path="line_horizontal" x="0" y="{rowheight} - 1" width="{columnwidth}" height="2"/>
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skins/metrixhd/globals.xml b/skins/metrixhd/globals.xml
new file mode 100644
index 0000000..1b2386c
--- /dev/null
+++ b/skins/metrixhd/globals.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+        <token name="tr(activetimers)">
+            <trans lang="en_EN">Active Timers</trans>
+            <trans lang="de_DE">Aktive Timer</trans>
+        </token>
+        <token name="tr(activetimer)">
+            <trans lang="en_EN">Active Timer</trans>
+            <trans lang="de_DE">Aktiver Timer</trans>
+        </token>
+        <token name="tr(conflicts)">
+            <trans lang="en_EN">Conflicts</trans>
+            <trans lang="de_DE">Konflikte</trans>
+        </token>
+        <token name="tr(disc)">
+            <trans lang="en_EN">Disc</trans>
+            <trans lang="de_DE">Disk</trans>
+        </token>
+        <token name="tr(free)">
+            <trans lang="en_EN">free</trans>
+            <trans lang="de_DE">frei</trans>
+        </token>
+        <token name="tr(hours)">
+            <trans lang="en_EN">hours</trans>
+            <trans lang="de_DE">Stunden</trans>
+        </token>
+        <token name="tr(reruns)">
+            <trans lang="en_EN">Reruns</trans>
+            <trans lang="de_DE">Wiederholungen</trans>
+        </token>
+        <token name="tr(rerunsof)">
+            <trans lang="en_EN">Reruns of</trans>
+            <trans lang="de_DE">Wiederholungen von</trans>
+        </token>
+        <token name="tr(actors)">
+            <trans lang="en_EN">Actors</trans>
+            <trans lang="de_DE">Schauspieler</trans>
+        </token>
+        <token name="tr(episode)">
+            <trans lang="en_EN">Episode</trans>
+            <trans lang="de_DE">Folge</trans>
+        </token>
+        <token name="tr(season)">
+            <trans lang="en_EN">Season</trans>
+            <trans lang="de_DE">Staffel</trans>
+        </token>
+        <token name="tr(gueststars)">
+            <trans lang="en_EN">Guest Stars</trans>
+            <trans lang="de_DE">Gaststars</trans>
+        </token>
+        <token name="tr(seriesfirstaired)">
+            <trans lang="en_EN">Series First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Serie</trans>
+        </token>
+        <token name="tr(episodefirstaired)">
+            <trans lang="en_EN">Episode First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Episode</trans>
+        </token>
+        <token name="tr(network)">
+            <trans lang="en_EN">Network</trans>
+            <trans lang="de_DE">TV Station</trans>
+        </token>
+        <token name="tr(genre)">
+            <trans lang="en_EN">Genre</trans>
+            <trans lang="de_DE">Genre</trans>
+        </token>
+        <token name="tr(status)">
+            <trans lang="en_EN">Status</trans>
+            <trans lang="de_DE">Status</trans>
+        </token>
+        <token name="tr(rating)">
+            <trans lang="en_EN">Rating</trans>
+            <trans lang="de_DE">Bewertung</trans>
+        </token>
+        <token name="tr(episoderating)">
+            <trans lang="en_EN">Episode Rating</trans>
+            <trans lang="de_DE">Bewertung der Folge</trans>
+        </token>
+        <token name="tr(recinfo)">
+            <trans lang="en_EN">Recording Information</trans>
+            <trans lang="de_DE">Aufnahme Informationen</trans>
+        </token>
+        <token name="tr(seriesgalery)">
+            <trans lang="en_EN">Series Galery</trans>
+            <trans lang="de_DE">Serien Galerie</trans>
+        </token>
+        <token name="tr(moviegalery)">
+            <trans lang="en_EN">Movie Galery</trans>
+            <trans lang="de_DE">Spielfilm Galerie</trans>
+        </token>
+        <token name="tr(originaltitle)">
+            <trans lang="en_EN">Original Title</trans>
+            <trans lang="de_DE">Originaltitel</trans>
+        </token>
+        <token name="tr(budget)">
+            <trans lang="en_EN">Budget</trans>
+            <trans lang="de_DE">Budget</trans>
+        </token>
+        <token name="tr(revenue)">
+            <trans lang="en_EN">Revenue</trans>
+            <trans lang="de_DE">Einnahmen</trans>
+        </token>
+        <token name="tr(adult)">
+            <trans lang="en_EN">Adult</trans>
+            <trans lang="de_DE">Nur für Erwachsene</trans>
+        </token>
+        <token name="tr(releasedate)">
+            <trans lang="en_EN">Release Date</trans>
+            <trans lang="de_DE">Erscheinungsdatum</trans>
+        </token>
+        <token name="tr(runtime)">
+            <trans lang="en_EN">Runtime</trans>
+            <trans lang="de_DE">Laufzeit</trans>
+        </token>
+        <token name="tr(popularity)">
+            <trans lang="en_EN">Popularity</trans>
+            <trans lang="de_DE">Popularität</trans>
+        </token>
+        <token name="tr(voteaverage)">
+            <trans lang="en_EN">Vote Average</trans>
+            <trans lang="de_DE">Durchschnittliche Wertung</trans>
+        </token>
+        <token name="tr(homepage)">
+            <trans lang="en_EN">Homepage</trans>
+            <trans lang="de_DE">Homepage</trans>
+        </token>
+        <token name="tr(recsize)">
+            <trans lang="en_EN">Recording size</trans>
+            <trans lang="de_DE">Größe der Aufnahme</trans>
+        </token>
+        <token name="tr(recsizecutted)">
+            <trans lang="en_EN">Cutted Recording Size</trans>
+            <trans lang="de_DE">Größe der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(reclength)">
+            <trans lang="en_EN">Recording Length</trans>
+            <trans lang="de_DE">Länge der Aufnahme</trans>
+        </token>
+        <token name="tr(reclengthcutted)">
+            <trans lang="en_EN">Cutted Recording Length</trans>
+            <trans lang="de_DE">Länge der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(bitrate)">
+            <trans lang="en_EN">Bit Rate</trans>
+            <trans lang="de_DE">Bitrate</trans>
+        </token>
+        <token name="tr(format)">
+            <trans lang="en_EN">Format</trans>
+            <trans lang="de_DE">Format</trans>
+        </token>
+        <token name="tr(searchtimer)">
+            <trans lang="en_EN">Searchtimer</trans>
+            <trans lang="de_DE">Suchtimer</trans>
+        </token>
+        <token name="tr(volume)">
+            <trans lang="en_EN">Volume</trans>
+            <trans lang="de_DE">Lautstärke</trans>
+        </token>
+        <token name="tr(pause)">
+            <trans lang="en_EN">Pause</trans>
+            <trans lang="de_DE">Pause</trans>
+        </token>
+        <token name="tr(temp)">
+            <trans lang="en_EN">Temperature</trans>
+            <trans lang="de_DE">Temperatur</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(todaymin)">
+            <trans lang="en_EN">minimum today</trans>
+            <trans lang="de_DE">heutiges Minimum</trans>
+        </token>
+        <token name="tr(todaymax)">
+            <trans lang="en_EN">maximum today</trans>
+            <trans lang="de_DE">heutiges Maximum</trans>
+        </token>
+        <token name="tr(precipitationprobability)">
+            <trans lang="en_EN">Precipitation Prob.</trans>
+            <trans lang="de_DE">Regenwahrsch.</trans>
+        </token>
+        <token name="tr(precipitationintensity)">
+            <trans lang="en_EN">Precipitation Intensity</trans>
+            <trans lang="de_DE">Regenmenge</trans>
+        </token>
+        <token name="tr(humidity)">
+            <trans lang="en_EN">Humidity</trans>
+            <trans lang="de_DE">Luftfeuchtigkeit</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(windbearing)">
+            <trans lang="en_EN">Wind Bearing</trans>
+            <trans lang="de_DE">Windrichtung</trans>
+        </token>
+        <token name="tr(windspeed)">
+            <trans lang="en_EN">Wind Speed</trans>
+            <trans lang="de_DE">Windgeschwindigkeit</trans>
+        </token>
+        <token name="tr(cloudcover)">
+            <trans lang="en_EN">Cloud Cover</trans>
+            <trans lang="de_DE">Bewölkung</trans>
+        </token>
+        <token name="tr(pressure)">
+            <trans lang="en_EN">Pressure</trans>
+            <trans lang="de_DE">Luftdruck</trans>
+        </token>
+        <token name="tr(ozone)">
+            <trans lang="en_EN">Ozone</trans>
+            <trans lang="de_DE">Ozon</trans>
+        </token>
+        <token name="tr(visibility)">
+            <trans lang="en_EN">visibility</trans>
+            <trans lang="de_DE">Sicht</trans>
+        </token>
+        <token name="tr(conditions)">
+            <trans lang="en_EN">Weather Conditions</trans>
+            <trans lang="de_DE">Wetterlage</trans>
+        </token>
+        <token name="tr(from)">
+            <trans lang="en_EN">from</trans>
+            <trans lang="de_DE">aus</trans>
+        </token>
+        <token name="tr(felt)">
+            <trans lang="en_EN">felt</trans>
+            <trans lang="de_DE">gefühlt</trans>
+        </token>
+        <token name="tr(min)">
+            <trans lang="en_EN">min</trans>
+            <trans lang="de_DE">min</trans>
+        </token>
+        <token name="tr(max)">
+            <trans lang="en_EN">max</trans>
+            <trans lang="de_DE">max</trans>
+        </token>
+       <token name="tr(for)">
+            <trans lang="en_EN">for</trans>
+            <trans lang="de_DE">für</trans>
+        </token>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+    </fonts>
+</globals>
diff --git a/skins/metrixhd/setup.xml b/skins/metrixhd/setup.xml
new file mode 100644
index 0000000..abaf1c6
--- /dev/null
+++ b/skins/metrixhd/setup.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE setup SYSTEM "../../dtd/setup.dtd">
+
+<setup>
+    <menu>
+        <parameter type="int" name="fadetime" min="0" max="1000" displaytext="{tr(fadetext)}">0</parameter>
+        <parameter type="bool" name="showdevices" displaytext="{tr(showdevices)}">0</parameter>
+    </menu>
+
+    <translations>
+        <token name="tr(fadetext)">
+            <trans lang="en_EN">Fade time in ms</trans>
+            <trans lang="de_DE">Einblendzeit in ms</trans>
+            <trans lang="fi_FI">Häivytyksen kesto [ms]</trans>
+        </token>
+        <token name="tr(showdevices)">
+            <trans lang="en_EN">Show DVB device info when switching channel</trans>
+            <trans lang="de_DE">DVB Karten Info beim Umschalten anzeigen</trans>
+            <trans lang="fi_FI">Näytä DVB-tiedot kanavanvaihdossa</trans>
+        </token>
+    </translations>
+</setup>
diff --git a/skins/metrixhd/themes/default/icons/clear-day.png b/skins/metrixhd/themes/default/icons/clear-day.png
new file mode 100644
index 0000000..2b06a14
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/clear-day.png differ
diff --git a/skins/metrixhd/themes/default/icons/clear-night.png b/skins/metrixhd/themes/default/icons/clear-night.png
new file mode 100644
index 0000000..9bbe49f
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/clear-night.png differ
diff --git a/skins/metrixhd/themes/default/icons/cloudy.png b/skins/metrixhd/themes/default/icons/cloudy.png
new file mode 100644
index 0000000..9870c7f
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/cloudy.png differ
diff --git a/skins/metrixhd/themes/default/icons/fog.png b/skins/metrixhd/themes/default/icons/fog.png
new file mode 100644
index 0000000..9bc88d2
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/fog.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ac3.png b/skins/metrixhd/themes/default/icons/ico_ac3.png
new file mode 100644
index 0000000..5b8614a
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ac3.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_activetimer.png b/skins/metrixhd/themes/default/icons/ico_activetimer.png
new file mode 100644
index 0000000..af4c33c
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_activetimer.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_channelsep.png b/skins/metrixhd/themes/default/icons/ico_channelsep.png
new file mode 100644
index 0000000..bf51238
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_channelsep.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_crypt_off.png b/skins/metrixhd/themes/default/icons/ico_crypt_off.png
new file mode 100644
index 0000000..b612aec
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_crypt_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_crypt_on.png b/skins/metrixhd/themes/default/icons/ico_crypt_on.png
new file mode 100644
index 0000000..55abed4
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_crypt_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_cutted.png b/skins/metrixhd/themes/default/icons/ico_cutted.png
new file mode 100644
index 0000000..b90c9c1
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_cutted.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_discusage.png b/skins/metrixhd/themes/default/icons/ico_discusage.png
new file mode 100644
index 0000000..f40fcd9
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_discusage.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_dolby_off.png b/skins/metrixhd/themes/default/icons/ico_dolby_off.png
new file mode 100644
index 0000000..17815f5
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_dolby_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_dolby_on.png b/skins/metrixhd/themes/default/icons/ico_dolby_on.png
new file mode 100644
index 0000000..c06c18e
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_dolby_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ff.png b/skins/metrixhd/themes/default/icons/ico_ff.png
new file mode 100644
index 0000000..5ffbe4b
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ff.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ff_1x.png b/skins/metrixhd/themes/default/icons/ico_ff_1x.png
new file mode 100644
index 0000000..96a74bc
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ff_1x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ff_2x.png b/skins/metrixhd/themes/default/icons/ico_ff_2x.png
new file mode 100644
index 0000000..54657bf
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ff_2x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ff_3x.png b/skins/metrixhd/themes/default/icons/ico_ff_3x.png
new file mode 100644
index 0000000..ac21eca
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ff_3x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_ff_off.png b/skins/metrixhd/themes/default/icons/ico_ff_off.png
new file mode 100644
index 0000000..5a9ab50
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_ff_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_hd_off.png b/skins/metrixhd/themes/default/icons/ico_hd_off.png
new file mode 100644
index 0000000..cd0492a
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_hd_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_hd_off.svg b/skins/metrixhd/themes/default/icons/ico_hd_off.svg
new file mode 100644
index 0000000..897bdfc
--- /dev/null
+++ b/skins/metrixhd/themes/default/icons/ico_hd_off.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="49"
+   height="24"
+   sodipodi:docname="ico_hd_off.svg">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1769"
+     inkscape:window-height="1195"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="6.9532167"
+     inkscape:cx="-12.199961"
+     inkscape:cy="10.824729"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <path
+     style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.50196081000000004;opacity:0.4;fill-opacity:1"
+     d="m 3.7627119,1.5762712 5.8474576,0 -1.220339,6.9661017 9.1525425,-0.050847 0.966102,-7.0677966 6.016389,0.014893 -2.965542,21.1376493 -5.993831,0.06883 1.20853,-8.712893 -9.3502922,0.08899 -1.6652543,8.491525 -5.30084738,0.06356 z"
+     id="path3759"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccccc" />
+  <path
+     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.50196078000000000;opacity:0.4"
+     d="m 28.398305,1.3728813 15.991526,0 C 46.277579,1.243275 49.255354,2.7574438 48.61017,8.0338983 47.616873,15.342244 46.343401,22.177506 41.288136,22.627119 L 24.915254,22.525424 27.20339,8.7966102 l 5.898305,-0.025424 -1.576271,9.5338988 7.677966,0 c 2.596312,0.118399 3.234177,-5.226757 3.457627,-7.90678 0.408058,-3.1501646 0.153706,-4.2577277 -1.420115,-4.3115034 L 27.61017,6.152542 z"
+     id="path3767"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccccc" />
+</svg>
diff --git a/skins/metrixhd/themes/default/icons/ico_hd_on.png b/skins/metrixhd/themes/default/icons/ico_hd_on.png
new file mode 100644
index 0000000..5f6cfa5
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_hd_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_hd_on.svg b/skins/metrixhd/themes/default/icons/ico_hd_on.svg
new file mode 100644
index 0000000..9c69401
--- /dev/null
+++ b/skins/metrixhd/themes/default/icons/ico_hd_on.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="49"
+   height="24"
+   sodipodi:docname="ico_hd_on.svg">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1769"
+     inkscape:window-height="1195"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="6.9532167"
+     inkscape:cx="19.799617"
+     inkscape:cy="10.824729"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <path
+     style="fill:#ffffff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.50196081000000004;opacity:1;fill-opacity:1"
+     d="m 3.7627119,1.5762712 5.8474576,0 -1.220339,6.9661017 9.1525425,-0.050847 0.966102,-7.0677966 6.016389,0.014893 -2.965542,21.1376493 -5.993831,0.06883 1.20853,-8.712893 -9.3502922,0.08899 -1.6652543,8.491525 -5.30084738,0.06356 z"
+     id="path3759"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccccc" />
+  <path
+     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.50196078000000000"
+     d="m 28.398305,1.3728813 15.991526,0 C 46.277579,1.243275 49.255354,2.7574438 48.61017,8.0338983 47.616873,15.342244 46.343401,22.177506 41.288136,22.627119 L 24.915254,22.525424 27.20339,8.7966102 l 5.898305,-0.025424 -1.576271,9.5338988 7.677966,0 c 2.596312,0.118399 3.234177,-5.226757 3.457627,-7.90678 0.408058,-3.1501646 0.153706,-4.2577277 -1.420115,-4.3115034 L 27.61017,6.152542 z"
+     id="path3767"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccccc" />
+</svg>
diff --git a/skins/metrixhd/themes/default/icons/ico_line_off.png b/skins/metrixhd/themes/default/icons/ico_line_off.png
new file mode 100644
index 0000000..94591ee
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_line_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_line_on.png b/skins/metrixhd/themes/default/icons/ico_line_on.png
new file mode 100644
index 0000000..1584078
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_line_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_mute.png b/skins/metrixhd/themes/default/icons/ico_mute.png
new file mode 100644
index 0000000..4eefc75
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_mute.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_pause.png b/skins/metrixhd/themes/default/icons/ico_pause.png
new file mode 100644
index 0000000..405a097
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_pause.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_pause_off.png b/skins/metrixhd/themes/default/icons/ico_pause_off.png
new file mode 100644
index 0000000..6f02e39
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_pause_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_play.png b/skins/metrixhd/themes/default/icons/ico_play.png
new file mode 100644
index 0000000..02a01c0
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_play.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_play_off.png b/skins/metrixhd/themes/default/icons/ico_play_off.png
new file mode 100644
index 0000000..d87322a
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_play_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rec_off.png b/skins/metrixhd/themes/default/icons/ico_rec_off.png
new file mode 100644
index 0000000..224baea
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rec_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rec_on.png b/skins/metrixhd/themes/default/icons/ico_rec_on.png
new file mode 100644
index 0000000..7bc18a7
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rec_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_recfolder.png b/skins/metrixhd/themes/default/icons/ico_recfolder.png
new file mode 100644
index 0000000..e3df65b
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_recfolder.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_recnew.png b/skins/metrixhd/themes/default/icons/ico_recnew.png
new file mode 100644
index 0000000..b9166ba
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_recnew.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rew.png b/skins/metrixhd/themes/default/icons/ico_rew.png
new file mode 100644
index 0000000..1505f79
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rew.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rew_1x.png b/skins/metrixhd/themes/default/icons/ico_rew_1x.png
new file mode 100644
index 0000000..6ddbde4
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rew_1x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rew_2x.png b/skins/metrixhd/themes/default/icons/ico_rew_2x.png
new file mode 100644
index 0000000..9b7ee52
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rew_2x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rew_3x.png b/skins/metrixhd/themes/default/icons/ico_rew_3x.png
new file mode 100644
index 0000000..4a3abeb
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rew_3x.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_rew_off.png b/skins/metrixhd/themes/default/icons/ico_rew_off.png
new file mode 100644
index 0000000..a84a7f3
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_rew_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_stereo.png b/skins/metrixhd/themes/default/icons/ico_stereo.png
new file mode 100644
index 0000000..7f3610d
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_stereo.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_timer_active.png b/skins/metrixhd/themes/default/icons/ico_timer_active.png
new file mode 100644
index 0000000..28c2f81
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_timer_active.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_timer_inactive.png b/skins/metrixhd/themes/default/icons/ico_timer_inactive.png
new file mode 100644
index 0000000..c4b1860
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_timer_inactive.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_timer_recording.png b/skins/metrixhd/themes/default/icons/ico_timer_recording.png
new file mode 100644
index 0000000..86dc66b
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_timer_recording.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_txt_off.png b/skins/metrixhd/themes/default/icons/ico_txt_off.png
new file mode 100644
index 0000000..a445bc5
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_txt_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_txt_on.png b/skins/metrixhd/themes/default/icons/ico_txt_on.png
new file mode 100644
index 0000000..ad14ff7
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_txt_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_volume.png b/skins/metrixhd/themes/default/icons/ico_volume.png
new file mode 100644
index 0000000..3a72514
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_volume.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_widescreen_off.png b/skins/metrixhd/themes/default/icons/ico_widescreen_off.png
new file mode 100644
index 0000000..dffd6a5
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_widescreen_off.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_widescreen_off.svg b/skins/metrixhd/themes/default/icons/ico_widescreen_off.svg
new file mode 100644
index 0000000..dd91dad
--- /dev/null
+++ b/skins/metrixhd/themes/default/icons/ico_widescreen_off.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="43"
+   height="23"
+   sodipodi:docname="ico_widescreen_off.svg">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2048"
+     inkscape:window-height="1481"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="16"
+     inkscape:cx="-4.8693805"
+     inkscape:cy="19.882154"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     id="path3834"
+     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.10000000000000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;opacity:0.4"
+     d="M 26.31204,9.2549017 29.307138,8.946193 c 1.930719,-0.2361949 1.627499,7.01011 -0.03235,6.862976 L 26.236601,15.553807 z M 0,0 0,23 c 15.021262,-4.846203 26.918346,-4.787057 43,0 L 43,0 C 26.964088,7.5152881 15.064204,7.6359799 0,0 z m 41.5625,2.59375 0,2.90625 -3.96875,1.46875 0,3.6875 3.40625,-0.0625 0,2.4375 -3.40625,0 0,3.65625 4.15625,1.125 0,2.90625 -6.71875,-1.6875 0,-13.875 z M 1.90625,2.8125 4.59375,4.03125 6.375,14.5625 8.03125,5.3125 10.625,6.125 l 2.34375,8.5 1.5,-7.6 [...]
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccsccccsccccc" />
+</svg>
diff --git a/skins/metrixhd/themes/default/icons/ico_widescreen_on.png b/skins/metrixhd/themes/default/icons/ico_widescreen_on.png
new file mode 100644
index 0000000..876bb55
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/ico_widescreen_on.png differ
diff --git a/skins/metrixhd/themes/default/icons/ico_widescreen_on.svg b/skins/metrixhd/themes/default/icons/ico_widescreen_on.svg
new file mode 100644
index 0000000..e6a91e5
--- /dev/null
+++ b/skins/metrixhd/themes/default/icons/ico_widescreen_on.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="43"
+   height="23"
+   sodipodi:docname="ico_widescreen_on.png">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2048"
+     inkscape:window-height="1481"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="16"
+     inkscape:cx="9.0368695"
+     inkscape:cy="19.882154"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     id="path3834"
+     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.10000000000000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+     d="M 26.31204,9.2549017 29.307138,8.946193 c 1.930719,-0.2361949 1.627499,7.01011 -0.03235,6.862976 L 26.236601,15.553807 z M 0,0 0,23 c 15.021262,-4.846203 26.918346,-4.787057 43,0 L 43,0 C 26.964088,7.5152881 15.064204,7.6359799 0,0 z m 41.5625,2.59375 0,2.90625 -3.96875,1.46875 0,3.6875 3.40625,-0.0625 0,2.4375 -3.40625,0 0,3.65625 4.15625,1.125 0,2.90625 -6.71875,-1.6875 0,-13.875 z M 1.90625,2.8125 4.59375,4.03125 6.375,14.5625 8.03125,5.3125 10.625,6.125 l 2.34375,8.5 1.5,-7.6 [...]
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccsccccsccccc" />
+</svg>
diff --git a/skins/metrixhd/themes/default/icons/partly-cloudy-day.png b/skins/metrixhd/themes/default/icons/partly-cloudy-day.png
new file mode 100644
index 0000000..b6df179
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/partly-cloudy-day.png differ
diff --git a/skins/metrixhd/themes/default/icons/partly-cloudy-night.png b/skins/metrixhd/themes/default/icons/partly-cloudy-night.png
new file mode 100644
index 0000000..aa358fb
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/partly-cloudy-night.png differ
diff --git a/skins/metrixhd/themes/default/icons/rain.png b/skins/metrixhd/themes/default/icons/rain.png
new file mode 100644
index 0000000..8275003
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/rain.png differ
diff --git a/skins/metrixhd/themes/default/icons/sleet.png b/skins/metrixhd/themes/default/icons/sleet.png
new file mode 100644
index 0000000..1d99ae0
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/sleet.png differ
diff --git a/skins/metrixhd/themes/default/icons/snow.png b/skins/metrixhd/themes/default/icons/snow.png
new file mode 100644
index 0000000..939e22f
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/snow.png differ
diff --git a/skins/metrixhd/themes/default/icons/wind.png b/skins/metrixhd/themes/default/icons/wind.png
new file mode 100644
index 0000000..d92ec15
Binary files /dev/null and b/skins/metrixhd/themes/default/icons/wind.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Applikationen.png b/skins/metrixhd/themes/default/menuicons/customicons/Applikationen.png
new file mode 100644
index 0000000..3c3b616
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Applikationen.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Audio.png b/skins/metrixhd/themes/default/menuicons/customicons/Audio.png
new file mode 100644
index 0000000..ff387fe
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Audio.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png b/skins/metrixhd/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png
new file mode 100644
index 0000000..3cdddc9
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Dienstprogramme.png b/skins/metrixhd/themes/default/menuicons/customicons/Dienstprogramme.png
new file mode 100644
index 0000000..793aba6
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Dienstprogramme.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/FireFox.png b/skins/metrixhd/themes/default/menuicons/customicons/FireFox.png
new file mode 100644
index 0000000..192fadc
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/FireFox.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Info.png b/skins/metrixhd/themes/default/menuicons/customicons/Info.png
new file mode 100644
index 0000000..6737431
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Info.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Internet.png b/skins/metrixhd/themes/default/menuicons/customicons/Internet.png
new file mode 100644
index 0000000..f3db150
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Internet.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Medien.png b/skins/metrixhd/themes/default/menuicons/customicons/Medien.png
new file mode 100644
index 0000000..0ce2360
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Medien.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Rechner neu starten.png b/skins/metrixhd/themes/default/menuicons/customicons/Rechner neu starten.png
new file mode 100644
index 0000000..5783ccf
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Rechner neu starten.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Remote wakeup.png b/skins/metrixhd/themes/default/menuicons/customicons/Remote wakeup.png
new file mode 100644
index 0000000..1cd2f6e
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Remote wakeup.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Spiele.png b/skins/metrixhd/themes/default/menuicons/customicons/Spiele.png
new file mode 100644
index 0000000..8e07161
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Spiele.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/System herunterfahren.png b/skins/metrixhd/themes/default/menuicons/customicons/System herunterfahren.png
new file mode 100644
index 0000000..e0234df
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/System herunterfahren.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/System.png b/skins/metrixhd/themes/default/menuicons/customicons/System.png
new file mode 100644
index 0000000..81d100e
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/System.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Tools.png b/skins/metrixhd/themes/default/menuicons/customicons/Tools.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Tools.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Tunderbird.png b/skins/metrixhd/themes/default/menuicons/customicons/Tunderbird.png
new file mode 100644
index 0000000..5ae27e0
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Tunderbird.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png b/skins/metrixhd/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png
new file mode 100644
index 0000000..cd7b81c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/VDR neu starten.png b/skins/metrixhd/themes/default/menuicons/customicons/VDR neu starten.png
new file mode 100644
index 0000000..14904ca
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/VDR neu starten.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Video.png b/skins/metrixhd/themes/default/menuicons/customicons/Video.png
new file mode 100644
index 0000000..490ca4b
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Video.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Web.png b/skins/metrixhd/themes/default/menuicons/customicons/Web.png
new file mode 100644
index 0000000..20260e3
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Web.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/XBMC.png b/skins/metrixhd/themes/default/menuicons/customicons/XBMC.png
new file mode 100644
index 0000000..c7c4c04
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/XBMC.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/Xterm.png b/skins/metrixhd/themes/default/menuicons/customicons/Xterm.png
new file mode 100644
index 0000000..fa75282
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/Xterm.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/audiovideo.png b/skins/metrixhd/themes/default/menuicons/customicons/audiovideo.png
new file mode 100644
index 0000000..726538d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/audiovideo.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/markad_status.png b/skins/metrixhd/themes/default/menuicons/customicons/markad_status.png
new file mode 100644
index 0000000..4fdc7a4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/markad_status.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/schneiden_abbrechen.png b/skins/metrixhd/themes/default/menuicons/customicons/schneiden_abbrechen.png
new file mode 100644
index 0000000..b2e0bd3
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/schneiden_abbrechen.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/tux.png b/skins/metrixhd/themes/default/menuicons/customicons/tux.png
new file mode 100644
index 0000000..c5b4742
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/tux.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/usb.png b/skins/metrixhd/themes/default/menuicons/customicons/usb.png
new file mode 100644
index 0000000..c4db1d4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/usb.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/vdrlogo.png b/skins/metrixhd/themes/default/menuicons/customicons/vdrlogo.png
new file mode 100644
index 0000000..037a191
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/vdrlogo.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/customicons/yaicon_blue.png b/skins/metrixhd/themes/default/menuicons/customicons/yaicon_blue.png
new file mode 100644
index 0000000..2c49273
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/customicons/yaicon_blue.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/admin.png b/skins/metrixhd/themes/default/menuicons/pluginicons/admin.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/admin.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/arghdirector.png b/skins/metrixhd/themes/default/menuicons/pluginicons/arghdirector.png
new file mode 100644
index 0000000..bbd221a
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/arghdirector.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/autostart.png b/skins/metrixhd/themes/default/menuicons/pluginicons/autostart.png
new file mode 100644
index 0000000..6fdb1bb
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/autostart.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/avahi4vdr.png b/skins/metrixhd/themes/default/menuicons/pluginicons/avahi4vdr.png
new file mode 100644
index 0000000..044e71d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/avahi4vdr.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/avards.png b/skins/metrixhd/themes/default/menuicons/pluginicons/avards.png
new file mode 100644
index 0000000..cf8d037
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/avards.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/block.png b/skins/metrixhd/themes/default/menuicons/pluginicons/block.png
new file mode 100644
index 0000000..86127c2
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/block.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/burn.png b/skins/metrixhd/themes/default/menuicons/pluginicons/burn.png
new file mode 100644
index 0000000..305d7ff
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/burn.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/cdplayer.png b/skins/metrixhd/themes/default/menuicons/pluginicons/cdplayer.png
new file mode 100644
index 0000000..89a6c19
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/cdplayer.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/chanman.png b/skins/metrixhd/themes/default/menuicons/pluginicons/chanman.png
new file mode 100644
index 0000000..a73e83c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/chanman.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/check.png b/skins/metrixhd/themes/default/menuicons/pluginicons/check.png
new file mode 100644
index 0000000..d487a24
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/check.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/conflictcheckonly.png b/skins/metrixhd/themes/default/menuicons/pluginicons/conflictcheckonly.png
new file mode 100644
index 0000000..7f832bd
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/conflictcheckonly.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/ddci.png b/skins/metrixhd/themes/default/menuicons/pluginicons/ddci.png
new file mode 100644
index 0000000..4ad459c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/ddci.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/devstatus.png b/skins/metrixhd/themes/default/menuicons/pluginicons/devstatus.png
new file mode 100644
index 0000000..96c0ec1
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/devstatus.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/dummydevice.png b/skins/metrixhd/themes/default/menuicons/pluginicons/dummydevice.png
new file mode 100644
index 0000000..11fd707
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/dummydevice.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/duplicates.png b/skins/metrixhd/themes/default/menuicons/pluginicons/duplicates.png
new file mode 100644
index 0000000..dc1be57
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/duplicates.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/dvbapi.png b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbapi.png
new file mode 100644
index 0000000..b966461
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbapi.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/dvbhddevice.png b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbhddevice.png
new file mode 100644
index 0000000..b874297
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbhddevice.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/dvbsddevice.png b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbsddevice.png
new file mode 100644
index 0000000..106184e
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/dvbsddevice.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/dynamite.png b/skins/metrixhd/themes/default/menuicons/pluginicons/dynamite.png
new file mode 100644
index 0000000..28ea35a
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/dynamite.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/eepg.png b/skins/metrixhd/themes/default/menuicons/pluginicons/eepg.png
new file mode 100644
index 0000000..3938b96
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/eepg.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/epg2vdr.png b/skins/metrixhd/themes/default/menuicons/pluginicons/epg2vdr.png
new file mode 100644
index 0000000..ac8757e
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/epg2vdr.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearch.png b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearch.png
new file mode 100644
index 0000000..5eab415
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearch.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearchonly.png b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearchonly.png
new file mode 100644
index 0000000..b5186e7
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsearchonly.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/epgsync.png b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsync.png
new file mode 100644
index 0000000..5c14009
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/epgsync.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/externalplayer.png b/skins/metrixhd/themes/default/menuicons/pluginicons/externalplayer.png
new file mode 100644
index 0000000..2bd67db
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/externalplayer.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/extrecmenu.png b/skins/metrixhd/themes/default/menuicons/pluginicons/extrecmenu.png
new file mode 100644
index 0000000..6f613f1
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/extrecmenu.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/favorites.png b/skins/metrixhd/themes/default/menuicons/pluginicons/favorites.png
new file mode 100644
index 0000000..409c852
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/favorites.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/femon.png b/skins/metrixhd/themes/default/menuicons/pluginicons/femon.png
new file mode 100644
index 0000000..e87b711
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/femon.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/fepg.png b/skins/metrixhd/themes/default/menuicons/pluginicons/fepg.png
new file mode 100644
index 0000000..65023ed
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/fepg.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/filebrowser.png b/skins/metrixhd/themes/default/menuicons/pluginicons/filebrowser.png
new file mode 100644
index 0000000..d3f90e0
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/filebrowser.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/fritzbox.png b/skins/metrixhd/themes/default/menuicons/pluginicons/fritzbox.png
new file mode 100644
index 0000000..7bfc229
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/fritzbox.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/graphlcd.png b/skins/metrixhd/themes/default/menuicons/pluginicons/graphlcd.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/graphlcd.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/graphtft.png b/skins/metrixhd/themes/default/menuicons/pluginicons/graphtft.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/graphtft.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/image.png b/skins/metrixhd/themes/default/menuicons/pluginicons/image.png
new file mode 100644
index 0000000..33644e0
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/image.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/imonlcd.png b/skins/metrixhd/themes/default/menuicons/pluginicons/imonlcd.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/imonlcd.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/iptv.png b/skins/metrixhd/themes/default/menuicons/pluginicons/iptv.png
new file mode 100644
index 0000000..4494ddc
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/iptv.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/lcdproc.png b/skins/metrixhd/themes/default/menuicons/pluginicons/lcdproc.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/lcdproc.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/mailbox.png b/skins/metrixhd/themes/default/menuicons/pluginicons/mailbox.png
new file mode 100644
index 0000000..1bc76e8
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/mailbox.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/makemkv.png b/skins/metrixhd/themes/default/menuicons/pluginicons/makemkv.png
new file mode 100644
index 0000000..41cddf1
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/makemkv.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/markad.png b/skins/metrixhd/themes/default/menuicons/pluginicons/markad.png
new file mode 100644
index 0000000..b3defaf
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/markad.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/mlist.png b/skins/metrixhd/themes/default/menuicons/pluginicons/mlist.png
new file mode 100644
index 0000000..19c367f
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/mlist.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/music.png b/skins/metrixhd/themes/default/menuicons/pluginicons/music.png
new file mode 100644
index 0000000..abb012e
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/music.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/noepg.png b/skins/metrixhd/themes/default/menuicons/pluginicons/noepg.png
new file mode 100644
index 0000000..eb9410d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/noepg.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/nordlichtsepg.png b/skins/metrixhd/themes/default/menuicons/pluginicons/nordlichtsepg.png
new file mode 100644
index 0000000..3ee3fa2
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/nordlichtsepg.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/osdteletext.png b/skins/metrixhd/themes/default/menuicons/pluginicons/osdteletext.png
new file mode 100644
index 0000000..664e770
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/osdteletext.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/peer.png b/skins/metrixhd/themes/default/menuicons/pluginicons/peer.png
new file mode 100644
index 0000000..998d568
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/peer.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/play.png b/skins/metrixhd/themes/default/menuicons/pluginicons/play.png
new file mode 100644
index 0000000..2848fc6
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/play.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/pvrinput.png b/skins/metrixhd/themes/default/menuicons/pluginicons/pvrinput.png
new file mode 100644
index 0000000..724f698
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/pvrinput.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/quickepgsearch.png b/skins/metrixhd/themes/default/menuicons/pluginicons/quickepgsearch.png
new file mode 100644
index 0000000..76a31f4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/quickepgsearch.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/radio.png b/skins/metrixhd/themes/default/menuicons/pluginicons/radio.png
new file mode 100644
index 0000000..193b7d4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/radio.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/remote.png b/skins/metrixhd/themes/default/menuicons/pluginicons/remote.png
new file mode 100644
index 0000000..7f46b1b
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/remote.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/remotetimers.png b/skins/metrixhd/themes/default/menuicons/pluginicons/remotetimers.png
new file mode 100644
index 0000000..fae3b79
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/remotetimers.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/rssreader.png b/skins/metrixhd/themes/default/menuicons/pluginicons/rssreader.png
new file mode 100644
index 0000000..db538f0
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/rssreader.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/sc.png b/skins/metrixhd/themes/default/menuicons/pluginicons/sc.png
new file mode 100644
index 0000000..2472d6c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/sc.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/scraper2vdr.png b/skins/metrixhd/themes/default/menuicons/pluginicons/scraper2vdr.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/scraper2vdr.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/screenshot.png b/skins/metrixhd/themes/default/menuicons/pluginicons/screenshot.png
new file mode 100644
index 0000000..be9b4d5
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/screenshot.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/seduatmo.png b/skins/metrixhd/themes/default/menuicons/pluginicons/seduatmo.png
new file mode 100644
index 0000000..4b5292f
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/seduatmo.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/skyselectfeeds.png b/skins/metrixhd/themes/default/menuicons/pluginicons/skyselectfeeds.png
new file mode 100644
index 0000000..d81a024
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/skyselectfeeds.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/sleeptimer.png b/skins/metrixhd/themes/default/menuicons/pluginicons/sleeptimer.png
new file mode 100644
index 0000000..cd4956f
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/sleeptimer.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/softhddevice.png b/skins/metrixhd/themes/default/menuicons/pluginicons/softhddevice.png
new file mode 100644
index 0000000..df13f2c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/softhddevice.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/streamdev-server.png b/skins/metrixhd/themes/default/menuicons/pluginicons/streamdev-server.png
new file mode 100644
index 0000000..e89ed8b
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/streamdev-server.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/systeminfo.png b/skins/metrixhd/themes/default/menuicons/pluginicons/systeminfo.png
new file mode 100644
index 0000000..b14763f
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/systeminfo.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/targavfd.png b/skins/metrixhd/themes/default/menuicons/pluginicons/targavfd.png
new file mode 100644
index 0000000..e91b111
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/targavfd.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/trayopenng.png b/skins/metrixhd/themes/default/menuicons/pluginicons/trayopenng.png
new file mode 100644
index 0000000..6ebd17d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/trayopenng.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/tvguide.png b/skins/metrixhd/themes/default/menuicons/pluginicons/tvguide.png
new file mode 100644
index 0000000..968a37c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/tvguide.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/tvm2vdr.png b/skins/metrixhd/themes/default/menuicons/pluginicons/tvm2vdr.png
new file mode 100644
index 0000000..47f9a91
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/tvm2vdr.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/tvscraper.png b/skins/metrixhd/themes/default/menuicons/pluginicons/tvscraper.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/tvscraper.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/undelete.png b/skins/metrixhd/themes/default/menuicons/pluginicons/undelete.png
new file mode 100644
index 0000000..a53d50a
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/undelete.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/weatherforecast.png b/skins/metrixhd/themes/default/menuicons/pluginicons/weatherforecast.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/weatherforecast.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/weatherng.png b/skins/metrixhd/themes/default/menuicons/pluginicons/weatherng.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/weatherng.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/xmltv2vdr.png b/skins/metrixhd/themes/default/menuicons/pluginicons/xmltv2vdr.png
new file mode 100644
index 0000000..ea73c74
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/xmltv2vdr.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/pluginicons/yaepghg.png b/skins/metrixhd/themes/default/menuicons/pluginicons/yaepghg.png
new file mode 100644
index 0000000..53ce443
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/pluginicons/yaepghg.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/CAM.png b/skins/metrixhd/themes/default/menuicons/standardicons/CAM.png
new file mode 100644
index 0000000..a394877
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/CAM.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Channels.png b/skins/metrixhd/themes/default/menuicons/standardicons/Channels.png
new file mode 100644
index 0000000..ba2ba78
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Channels.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Commands.png b/skins/metrixhd/themes/default/menuicons/standardicons/Commands.png
new file mode 100644
index 0000000..c6a83ef
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Commands.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/DVB.png b/skins/metrixhd/themes/default/menuicons/standardicons/DVB.png
new file mode 100644
index 0000000..3789145
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/DVB.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/EPG.png b/skins/metrixhd/themes/default/menuicons/standardicons/EPG.png
new file mode 100644
index 0000000..e868b90
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/EPG.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/LNB.png b/skins/metrixhd/themes/default/menuicons/standardicons/LNB.png
new file mode 100644
index 0000000..896dd99
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/LNB.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Miscellaneous.png b/skins/metrixhd/themes/default/menuicons/standardicons/Miscellaneous.png
new file mode 100644
index 0000000..2a41c4d
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Miscellaneous.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/OSD.png b/skins/metrixhd/themes/default/menuicons/standardicons/OSD.png
new file mode 100644
index 0000000..8f571c6
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/OSD.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Plugins.png b/skins/metrixhd/themes/default/menuicons/standardicons/Plugins.png
new file mode 100644
index 0000000..3fcba70
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Plugins.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Recording.png b/skins/metrixhd/themes/default/menuicons/standardicons/Recording.png
new file mode 100644
index 0000000..741b1af
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Recording.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Recordings.png b/skins/metrixhd/themes/default/menuicons/standardicons/Recordings.png
new file mode 100644
index 0000000..79aeeb7
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Recordings.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Replay.png b/skins/metrixhd/themes/default/menuicons/standardicons/Replay.png
new file mode 100644
index 0000000..621596c
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Replay.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Restart.png b/skins/metrixhd/themes/default/menuicons/standardicons/Restart.png
new file mode 100644
index 0000000..aa23cd4
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Restart.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Schedule.png b/skins/metrixhd/themes/default/menuicons/standardicons/Schedule.png
new file mode 100644
index 0000000..3a98cac
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Schedule.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Setup.png b/skins/metrixhd/themes/default/menuicons/standardicons/Setup.png
new file mode 100644
index 0000000..d121148
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Setup.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/StopRecording.png b/skins/metrixhd/themes/default/menuicons/standardicons/StopRecording.png
new file mode 100644
index 0000000..ed83fbb
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/StopRecording.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/StopReplay.png b/skins/metrixhd/themes/default/menuicons/standardicons/StopReplay.png
new file mode 100644
index 0000000..9192760
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/StopReplay.png differ
diff --git a/skins/metrixhd/themes/default/menuicons/standardicons/Timers.png b/skins/metrixhd/themes/default/menuicons/standardicons/Timers.png
new file mode 100644
index 0000000..b866c36
Binary files /dev/null and b/skins/metrixhd/themes/default/menuicons/standardicons/Timers.png differ
diff --git a/skins/metrixhd/themes/default/theme.xml b/skins/metrixhd/themes/default/theme.xml
new file mode 100644
index 0000000..9c65d2a
--- /dev/null
+++ b/skins/metrixhd/themes/default/theme.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+        <color name="clrRed">FFFF0000</color>
+        <color name="clrGreen">FF5FE200</color>
+        <color name="clrYellow">FFE2DA00</color>
+        <color name="clrBlue">FF007FE2</color>
+        <color name="clrTransBlack">C0000000</color>
+        <color name="clrSemiTransBlack">D0000000</color>
+        <color name="clrBlueLight">FF1E8BD7</color>
+        <color name="clrTransBlueLight">C01E8BD7</color>
+        <color name="clrTransWhite">C0FFFFFF</color>
+        <color name="clrWhite">FFFFFFFF</color>
+        <color name="clrDarkGray">FF14141E</color>
+        <color name="clrTransparent">00000000</color>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+        <var type="string" name="stringglobal">hützligrütz</var>
+        <var type="double" name="pi">3.14</var>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+        <font name="light">VDROpen Sans Light:Light</font>
+        <font name="semibold">VDROpen Sans Semibold:Semibold</font>
+    </fonts>
+</globals>
diff --git a/skins/metrixhd/xmlfiles/displayaudiotracks.xml b/skins/metrixhd/xmlfiles/displayaudiotracks.xml
new file mode 100644
index 0000000..8c5af98
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displayaudiotracks.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayaudiotracks SYSTEM "../../../dtd/displayaudiotracks.dtd">
+
+<displayaudiotracks x="25%" y="0" width="50%" height="100%" fadetime="{fadetime}">
+    <!-- Available Variables background:
+    {numtracks}                     number of displayed tracks 
+    -->
+    <background>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10 + {areaheight} / 10 * {numtracks}" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+    <!-- Available Variables header:
+    {numtracks}                     number of displayed tracks 
+    {title}                         title of menu 
+    -->
+    <header>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10" layer="2">
+            <drawtext x="10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage condition="{isstereo}" imagetype="icon" path="ico_stereo" x="{areawidth} - {areaheight}*0.9" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+            <drawimage condition="{isac3}" imagetype="icon" path="ico_ac3" x="{areawidth} - {areaheight}*0.9" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+        </area>
+    </header>
+
+     <!-- Available Variables header:
+    {numelements}                 number of displayed tracks 
+    -->
+    <menuitems x="0" y="{areaheight} - {numelements} * {areaheight} / 10" orientation="vertical" width="100%" height="{numelements} * {areaheight} / 10" align="top" numlistelements="{numelements}">
+        <!-- Available Variables auidotrack listelement:
+        {current}                 true if item is currently selected 
+        {title}                   title of auio track 
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="98%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <area x="1%" width="98%" layer="3">
+                <drawtext x="10" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{title}" />
+            </area>
+        </listelement>
+    </menuitems>
+
+</displayaudiotracks>
diff --git a/skins/metrixhd/xmlfiles/displaychannel.xml b/skins/metrixhd/xmlfiles/displaychannel.xml
new file mode 100644
index 0000000..3c63a18
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaychannel.xml
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaychannel SYSTEM "../../../dtd/displaychannel.dtd">
+
+<displaychannel x="0" y="0" width="100%" height="100%" fadetime="{fadetime}">
+    <background>
+        <!-- background infobar -->
+        <area x="0" y="80%" width="100%" height="20%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <!-- background datetime -->
+        <area x="70%" y="0" width="30%" height="13%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="45%" height="100%" color="{clrTransBlueLight}" />
+        </area>
+        <!-- background weather -->
+        <area x="70%" y="15%" width="30%" height="13%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="45%" height="100%" color="{clrTransBlueLight}" />
+        </area>
+        <!-- background channellogo -->
+        <area x="0" y="80%" width="20%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+    </background>
+
+    <!-- Available Variables channelinfo:
+    {channelnumber}                 Number of Channel, with "-" in case of channel switching
+    {channelname}                   Name of current Channel
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {switching}                     true if a number is pressed on the remote to switch to a dedicated channel
+    -->
+    <channelinfo>
+        <area x="22%" y="80%" width="76%" height="7%" layer="2">
+            <fill condition="not{switching}" color="{clrTransparent}" />
+            <drawtext condition="{switching}" x="0" y="-10" font="{light}" fontsize="99%" color="{clrWhite}" text="{channelnumber}: {channelname}" />
+        </area>
+        <area x="0" y="80%" width="20%" height="20%" layer="3">
+            <drawimage cache="true" condition="{channellogoexists}" imagetype="channellogo" path="{channelid}" width="98%" height="98%" align="center" valign="center" />
+            <drawtext condition="not{channellogoexists}" x="5" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="{channelnumber}: {channelname}" />
+        </area>
+    </channelinfo>
+    <!-- Available Variables epginfo:
+    {currenttitle}                     Title of the current Schedule
+    {currentsubtitle}                  Subtitle of the current Schedule
+    {currentstart}                     Start of current Schedule in hh:mm
+    {currentstop}                      End of current Schedule in hh:mm 
+    {currentduration}                  Duration of current Schedule in min
+    {currentdurationhours}             Duration, full hours
+    {currentdurationminutes}           Duration, rest of minutes
+    {currentelapsed}                   Elapsed time of current Schedule in min
+    {currentremaining}                 Remaining time of current Schedule in min
+    {currentrecording}                 true if current Schedule is recorded
+    {hasVPS}                           true if current Schedule has VPS
+    {nexttitle}                        Title of next Schedule
+    {nextsubtitle}                     Subtitle of next Schedule
+    {nextstart}                        Start of next Schedule in hh:mm
+    {nextstop}                         Stop of next Schedule in hh:mm
+    {nextduration}                     Duration of next Schedule in min
+    {nextdurationhours}                Duration, full hours
+    {nextdurationminutes}              Duration, rest of minutes
+    {nextrecording}                    true if next Schedule will be recorded
+    -->
+    <epginfo>
+        <area x="22%" y="80%" width="76%" height="7%" layer="2">
+            <drawtext name="title" x="0" valign="center" font="{light}" fontsize="99%" color="{clrWhite}" text="{currenttitle}" width="{areawidth} - {width(startstop)}"/>
+            <drawtext name="startstop" align="right" y="0" font="{light}" fontsize="60%" color="{clrWhite}" text="{currentstart} - {currentstop}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="60%" color="{clrWhite}" text="+ {currentremaining} min" />
+        </area>
+        <area x="22%" y="87%" width="76%" height="7%" layer="2">
+            <drawtext x="0" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{nexttitle}" width="{areawidth} - {width(startstop)}"/>
+            <drawtext name="startstop" align="right" y="0" font="{light}" fontsize="60%" color="{clrWhite}" text="{nextstart} - {nextstop}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="60%" color="{clrWhite}" text="{nextduration} min" />
+        </area>
+    </epginfo>
+
+    <!-- Available Variables progressbar:
+    {start}                            Start of current Schedule in hh:mm
+    {stop}                             End of current Schedule in hh:mm 
+    {duration}                         Total Duration of current Schedule in seconds
+    {elapsed}                          Elapsed time of current Schedule in seconds
+    {remaining}                        Remaining time of current Schedule in seconds
+    -->
+    <progressbar>
+        <area x="22%" y="87%" width="76%" height="3" layer="2">
+            <drawrectangle x="0" y="1" width="100%" height="1" color="{clrWhite}" />
+            <drawrectangle x="0" y="0" width="{elapsed}/{duration}*{areawidth}" height="3" color="{clrTransBlueLight}" />
+        </area>
+    </progressbar>
+
+    <!-- Available Variables statusinfo:
+    {isRadio}                          true if channel is a radio channel
+    {hasVT}                            true if channel has video text
+    {isStereo}                         true if a stereo audio trac is available
+    {isDolby}                          true if a dolby audio track is available
+    {isEncrypted}                      true if channel is encrypted
+    {isRecording}                      true if currently a recording is running on this channel
+    {newmails}                         true if mailbox plugin is installed and new mails are available
+    -->
+    <statusinfo>
+        <area x="22%" y="94%" width="76%" height="6%" layer="2">
+            <!-- encrypted / decrypted icon -->
+            <drawimage name="enc" condition="{isEncrypted}" imagetype="icon" path="ico_crypt_on" x="{areawidth} - {width(enc)}" valign="center" width="{areaheight}*0.8*1.76" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isEncrypted}" imagetype="icon" path="ico_crypt_off" x="{areawidth} - {width(enc)}" valign="center" width="{areaheight}*0.8*1.76" height="{areaheight}*0.8"/>
+            <!-- dolby icon -->
+            <drawimage name="dolby" condition="{isDolby}" imagetype="icon" path="ico_dolby_on" x="{posx(enc)} - 15 - {width(dolby)}" valign="center" width="{areaheight}*0.8*1.48" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isDolby}" imagetype="icon" path="ico_dolby_off" x="{posx(enc)} - 15 - {width(dolby)}" valign="center" width="{areaheight}*0.8*1.48" height="{areaheight}*0.8"/>
+            <!-- videotext icon -->
+            <drawimage name="txt" condition="{hasVT}" imagetype="icon" path="ico_txt_on" x="{posx(dolby)} - 15 - {width(txt)}" valign="center" width="{areaheight}*0.8*1.3" height="{areaheight}*0.8"/>
+            <drawimage condition="not{hasVT}" imagetype="icon" path="ico_txt_off" x="{posx(dolby)} - 15 - {width(txt)}" valign="center" width="{areaheight}*0.8*1.3" height="{areaheight}*0.8"/>
+            <!-- recording icon -->
+            <drawimage name="rec" condition="{isRecording}" imagetype="icon" path="ico_rec_on" x="{posx(txt)} - 15 - {width(rec)}" valign="center" width="{areaheight}*0.8*1.96" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isRecording}" imagetype="icon" path="ico_rec_off" x="{posx(txt)} - 15 - {width(rec)}" valign="center" width="{areaheight}*0.8*1.96" height="{areaheight}*0.8"/>
+        </area>
+    </statusinfo>
+
+    <!-- Available Variables audioinfo:
+    {numaudiotracks}                   number of available audio tracks for current channel
+    {audiochannel}                     0 if current channel is stereo, 1 for left chanel only, 2 for right channel only
+    {trackdesc}                        description of the current audio track
+    {tracklang}                        language of the current audio track
+    -->
+    <audioinfo>
+    </audioinfo>
+
+    <!-- Available Variables screenresolution:
+    {screenwidth}                      width of currently displayed channel in px
+    {screenheight}                     height of currently displayed channel in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <screenresolution>
+        <area x="22%" y="94%" width="76%" height="6%" layer="2">
+            <!-- widescreen icon -->
+            <drawimage name="widescreen" condition="{isWideScreen}" imagetype="icon" path="ico_widescreen_on" x="{areawidth} - {areaheight}*0.8*1.76 - 15 - {areaheight}*0.8*1.48 - 15 - {areaheight}*0.8*1.3 - 15 - {areaheight}*0.8*1.96 - 15 - {width(widescreen)}" valign="center" width="{areaheight}*0.8*1.87" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isWideScreen}" imagetype="icon" path="ico_widescreen_off" x="{areawidth} - {areaheight}*0.8*1.76 - 15 - {areaheight}*0.8*1.48 - 15 - {areaheight}*0.8*1.3 - 15 - {areaheight}*0.8*1.96 - 15 - {width(widescreen)}" valign="center" width="{areaheight}*0.8*1.87" height="{areaheight}*0.8"/>
+            <!-- hd/sd icon -->
+            <drawimage name="hd" condition="{isHD}" imagetype="icon" path="ico_hd_on" x="{posx(widescreen)} - 15 - {width(hd)}" valign="center" width="{areaheight}*0.8*2.04" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isHD}" imagetype="icon" path="ico_hd_off" x="{posx(widescreen)} - 15 - {width(hd)}" valign="center" width="{areaheight}*0.8*2.04" height="{areaheight}*0.8"/>
+            <!-- screenresolution text -->
+            <drawtext name="reslabel" x="{posx(hd)} - 30 - {width(reslabel)}" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="{screenwidth}x{screenheight}" />
+        </area>
+    </screenresolution>
+
+    <!-- Available Variables dvbdeviceinfo:
+    {prevAvailable}                     true if previous Channel Group is avaialble
+    {nextAvailable}                     true if next Channel Group is avaialble
+    {group}                             Name of current Channel Group
+    {nextgroup}                         Name of next Channel Group
+    {prevgroup}                         Name of prev Channel Group
+    {sepexists}                         true if a channel separator logo exists
+    {seppath}                           path for separator logo to use in imagetype "seplogo"
+    -->
+    <channelgroup>
+        <area x="0" y="80%" width="20%" height="20%" layer="2">
+            <drawimage condition="{sepexists}" imagetype="seplogo" path="{seppath}" width="98%" height="98%" align="center" valign="center" />
+            <drawimage condition="not{sepexists}" imagetype="icon" path="ico_channelsep" align="center" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+        </area>
+        <area x="22%" y="85%" width="76%" height="10%" layer="2">
+            <drawtext x="0" width="30%" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{prevgroup}" />
+            <drawtext x="30%" width="40%" valign="center" font="{semibold}" fontsize="80%" color="{clrWhite}" text="{group}" />
+            <drawtext align="right" width="30%" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{nextgroup}" />
+        </area>             
+    </channelgroup>
+
+    <!-- Available Variables signalquality:
+    {signalstrength}                    STR value of currently displayed channel
+    {signalquality}                     SNR value of currently displayed channel
+    -->
+    <signalquality>
+        <area x="22%" y="94%" width="76%" height="6%" layer="3">
+            <drawtext x="0" valign="center" font="{light}" fontsize="70%" color="{clrWhite}" text="STR: {signalstrength}% SNR: {signalquality}%" />
+        </area>
+    </signalquality>
+
+    <!-- background of signalmeter, will only be drawn if signalquality was deleted -->
+    <signalqualityback>
+    </signalqualityback>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+        <area condition="{showdevices}" x="70%" y="30%" width="30%" height="{areaheight}/12 * {numdevices}" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="{showdevices}" x="70%" y="30%" width="30%" height="{areaheight}/12 * {numdevices}" layer="2">
+            <loop name="devices" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight} / {numdevices}" overflow="cut">
+                <drawtext name="label" x="5" y="0" font="{light}" fontsize="{rowheight}*0.35" color="{clrWhite}" text="{devices[num]}: {devices[type]}" />
+                <drawtext condition="{devices[hascam]}" x="{width(label)} + 15" y="0" font="{light}" fontsize="{rowheight}*0.35" color="{clrWhite}" text="(CAM {devices[cam]})" />
+                <drawtext condition="{devices[recording]} ++ {devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.35" color="{clrRed}" text="LiveTV, Recording ({devices[channelname]}) " />
+                <drawtext condition="{devices[recording]} ++ not{devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.35" color="{clrRed}" text="Recording ({devices[channelname]}) " />
+                <drawtext condition="not{devices[recording]} ++ {devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.35" color="{clrWhite}" text="LiveTV ({devices[channelname]}) " />
+                <drawrectangle condition="{devices[istuned]}" x="5" y="{rowheight}/3 + 5" width="{areawidth} * {devices[signalstrength]} / 100 - 10 * {devices[signalstrength]} / 100" height="{rowheight}/3 - 10" color="{clrTransWhite}" />
+                <drawrectangle condition="{devices[istuned]}" x="5" y="2*{rowheight}/3 + 5" width="{areawidth} * {devices[signalquality]} / 100 - 10 * {devices[signalquality]} / 100" height="{rowheight}/3 - 10" color="{clrTransWhite}" />
+                <drawtext condition="not{devices[istuned]}" align="center" y="{rowheight}/2" font="{light}" fontsize="{rowheight}*0.40" color="{clrWhite}" text="not tuned" />
+            </loop>
+        </area>
+    </devices>
+
+    <!-- Available Variables currentweather:
+    {timestamp}                 timestamp of forecast in dd.mm hh:mm
+    {temperature}               current temperature in °C
+    {apparenttemperature}       apparent (feeled) temperature
+    {mintemperature}            minimum temperature this day
+    {maxtemperature}            maximum temperature this day
+    {summary}                   short weather summary
+    {icon}                      weather icon 
+    {precipitationintensity}    precipitation intensity in l/m2
+    {precipitationprobability}  precipitation probability in %
+    {precipitationtype}         precipitation type
+    {humidity}                  humidity in %
+    {windspeed}                 windspeed in km/h
+    {windbearing}               wind bearing in °
+    {windbearingstring}         wind bearing (N, NE, ...)
+    {visibility}                visibility in km
+    {cloudcover}                cloud cover in %
+    {pressure}                  pressure in HPo
+    {ozone}                     ozone value in DU
+    -->
+    <currentweather>
+        <area x="70%" y="15%" width="13%" height="13%" layer="2">
+            <drawimage imagetype="icon" path="{icon}" align="center" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+        </area>
+        <area x="85%" y="15%" width="13%" height="13%" layer="2">
+            <drawtext x="0" y="0" font="{light}" fontsize="25%" color="{clrWhite}" text="{mintemperature}°C" />
+            <drawtext x="0" y="75%" font="{light}" fontsize="25%" color="{clrWhite}" text="{maxtemperature}°C" />
+        </area>
+        <area x="85%" y="15%" width="13%" height="13%" layer="3">
+            <drawtext align="right" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasPoster}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{isbanner}" x="0" y="0" width="{areaheight}*0.13*{mediawidth}/{mediaheight}" height="13%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center"  width="{areawidth}" height="{areaheight}"/>
+        </area>
+        <area condition="not{isbanner}" x="0" y="0" width="{areaheight}*0.5*{mediawidth}/{mediaheight}" height="50%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" x="5" y="5" width="{areawidth}-10" height="{areaheight}-10"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="70%" y="0" width="13%" height="13%" layer="2">
+            <drawtext align="right" y="0" font="{light}" fontsize="50%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="48%" font="{light}" fontsize="50%" color="{clrWhite}" text="{day}. {monthnameshort}" />
+        </area>
+        <area x="85%" y="0" width="13%" height="13%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="10%" y="45%" width="80%" height="10%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle condition="{status}" x="20" y="0" width="20" height="100%" color="{clrGreen}" />
+            <drawrectangle condition="{info}" x="20" y="0" width="20" height="100%" color="{clrBlue}" />
+            <drawrectangle condition="{warning}" x="20" y="0" width="20" height="100%" color="{clrYellow}" />
+            <drawrectangle condition="{error}" x="20" y="0" width="20" height="100%" color="{clrRed}" />
+            <drawtext align="center" valign="center" width="{areawidth} - 80" font="{light}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+</displaychannel>
diff --git a/skins/metrixhd/xmlfiles/displaymenu.xml b/skins/metrixhd/xmlfiles/displaymenu.xml
new file mode 100644
index 0000000..d51cfbf
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenu.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymenu SYSTEM "../../../dtd/displaymenu.dtd" [
+<!ENTITY displaymenudefault SYSTEM "displaymenudefault.xml">
+<!ENTITY displaymenumain SYSTEM "displaymenumain.xml">
+<!ENTITY displaymenusetup SYSTEM "displaymenusetup.xml">
+<!ENTITY displaymenuschedules SYSTEM "displaymenuschedules.xml">
+<!ENTITY displaymenutimers SYSTEM "displaymenutimers.xml">
+<!ENTITY displaymenuchannels SYSTEM "displaymenuchannels.xml">
+<!ENTITY displaymenurecordings SYSTEM "displaymenurecordings.xml">
+<!ENTITY displaymenudetailepg SYSTEM "displaymenudetailepg.xml">
+<!ENTITY displaymenudetailrecording SYSTEM "displaymenudetailrecording.xml">
+<!ENTITY displaymenudetailtext SYSTEM "displaymenudetailtext.xml">
+]>
+
+<displaymenu x="3%" y="5%" width="94%" height="90%" fadetime="0">
+    <!-- 
+    The following background, header, datetime and colorbuttons definitions are default
+    implementations. If one or more of these elements are not implemented in the subview, 
+    the default implementations are used. 
+    -->
+    <background>
+        <!-- background left Menu -->
+        <area x="0" y="0" width="63%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <!-- background right detail view -->
+        <area x="63%" y="3%" width="37%" height="94%" layer="1">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <header>
+        <area x="0" y="0" width="41%" height="10%" layer="2">
+            <drawtext condition="not{hasicon}" x="5" width="{areawidth}-10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage condition="{hasicon}" name="menuicon" imagetype="menuicon" path="{icon}" x="5" valign="center" width="{areaheight}*8/10" height="80%"/>
+            <drawtext condition="{hasicon}" x="{areaheight}" valign="center" width="{areawidth}-{areaheight}-10" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="41%" y="0" width="12%" height="10%" layer="2">
+            <drawtext align="right" y="5%" font="{light}" fontsize="50%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="50%" color="{clrWhite}" text="{day}. {monthnameshort}" />
+        </area>
+        <area x="53%" y="0" width="10%" height="10%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+    <!-- Available Variables message:
+    {text}                    message text
+    {status}                  true if message is an status message
+    {info}                    true if message is an info message
+    {warning}                 true if message is an warn message
+    {error}                   true if message is an error message
+    -->
+    <message>
+        <area x="5%" y="75%" width="90%" height="15%" layer="7">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle condition="{status}" x="10" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawrectangle condition="{info}" x="10" y="0" width="10" height="100%" color="{clrBlue}" />
+            <drawrectangle condition="{warning}" x="10" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawrectangle condition="{error}" x="10" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext align="center" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="92%" width="15%" height="8%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="15%" y="92%" width="15%" height="8%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="30%" y="92%" width="15%" height="8%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="45%" y="92%" width="15%" height="8%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+    &displaymenudefault;
+    &displaymenumain;
+    &displaymenusetup;
+    &displaymenuschedules;
+    &displaymenutimers;
+    &displaymenuchannels;
+    &displaymenurecordings;
+    &displaymenudetailepg;
+    &displaymenudetailrecording;
+    &displaymenudetailtext;
+</displaymenu>
diff --git a/skins/metrixhd/xmlfiles/displaymenuchannels.xml b/skins/metrixhd/xmlfiles/displaymenuchannels.xml
new file mode 100644
index 0000000..3e6f771
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenuchannels.xml
@@ -0,0 +1,122 @@
+<menuchannels x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="16">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {number}                  number of the displayed channel
+        {name}                    name of the displayed channel
+        {channelid}               ChannelID as path to display channel logo
+        {transponder}             Transponder of channel
+        {frequency}               Frequency of channel
+        {source}                  Source of channel (S, C, T)
+        {sourcedescription}       Descriptin of source from sources.conf
+        {position}                orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                  true if channel is a ATSC channel
+        {isCable}                 true if channel is cable channel
+        {isSat}                   true if channel is a satellite channel
+        {isTerr}                  true if channel is terrestrical
+        {presenteventtitle}       title of present event on this channel
+        {presenteventstart}       present event start time in hh::mm
+        {presenteventstop}        present event event stop time in hh::mm
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+                <fill condition="{separator}" color="{clrSemiTransBlack}" />
+            </area>
+            <area condition="not{separator}" x="1%" width="6%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <areascroll condition="not{separator}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="52%" layer="3">
+                <drawtext name="menutext" x="20" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{number} {name} - {sourcedescription}, Transp. {transponder}" />
+            </areascroll>
+            <area condition="{separator}" x="7%" width="52%" layer="3">
+                <drawtext x="20" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{name}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {number}                        number of the displayed channel
+        {name}                          name of the displayed channel
+        {channelid}                     ChannelID as path to display channel logo
+        {transponder}                   Transponder of channel
+        {frequency}                     Frequency of channel
+        {source}                        Source of channel (S, C, T)
+        {sourcedescription}             Descriptin of source from sources.conf
+        {position}                      orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                        true if channel is a ATSC channel
+        {isCable}                       true if channel is cable channel
+        {isSat}                         true if channel is a satellite channel
+        {isTerr}                        true if channel is terrestrical
+        {presenteventtitle}             title of present event on this channel
+        {presenteventstart}             present event start time in hh::mm
+        {presenteventstop}              present event stop time in hh::mm
+        {presenteventshorttext}         present event short text
+        {presenteventdescription}       present event description
+        {presenteventday}               present event name of day
+        {presenteventdate}              present event date in dd:mm:yy
+        {presenteventelapsed}           present event elapsed time
+        {presenteventduration}          present event duration
+        {presenteventdurationhours}     duration, full hours
+        {presenteventdurationminutes}   duration, rest of minutes
+        {hasposter}                     true if a scraped poster is available for this elements present evemt
+        {posterwidth}                   width of scraped poster
+        {posterheight}                  height of scraped poster
+        {posterpath}                    absolute path of scraped poster
+        {nexteventtitle}                title of next event on this channel
+        {nexteventstart}                next event start time in hh::mm
+        {nexteventstop}                 next event event stop time in hh::mm
+        {nexteventshorttext}            next event short text
+        {nexteventdescription}          next event description
+        {nexteventday}                  next event name of day
+        {nexteventdate}                 next event date in dd:mm:yy
+        {nexteventduration}             next event duration
+        {nexteventdurationhours}        duration, full hours
+        {nexteventdurationminutes}      duration, rest of minutes
+        {schedule[]}                    array with following 10 schedules
+        {schedule[title]}               title of event
+        {schedule[shorttext]}           shorttext of event
+        {schedule[start]}               start time of event in hh:mm
+        {schedule[stop]}                stop time of event in hh:mm        
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="63%" y="0" width="36%" height="85%" layer="2">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="10" y="0" width="30%" height="10%" />
+                <drawtext name="channame" align="right" y="{height(logo)}/2 - {height(channame)}/2" width="65%" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{name}" />
+                <!-- now -->
+                <drawtext name="now" x="2%" y="{height(logo)}" width="96%" font="{semibold}" fontsize="8%" color="{clrWhite}" text="Now: {presenteventtitle}" />
+                <!--progressbar for now -->
+                <drawtext name="start" x="{areawidth}/4 - {width(start)}" y="{height(logo)} + {height(now)}" font="{light}" fontsize="7%" color="{clrWhite}" text="{presenteventstart}" />
+                <drawtext name="stop" x="{areawidth}*3/4" y="{height(logo)} + {height(now)}" font="{light}" fontsize="7%" color="{clrWhite}" text="{presenteventstop}" />
+                <drawrectangle x="{areawidth}/4+10" y="{height(logo)} + {height(now)} + {height(start)} / 2" width="{areawidth}/2 - 20" height="1" color="{clrWhite}" />
+                <drawrectangle x="{areawidth}/4+10" y="{height(logo)} + {height(now)} + {height(start)} / 2 - 2" width="{areawidth}/2 * {presenteventelapsed} / {presenteventduration} - 20 * {presenteventelapsed} / {presenteventduration}" height="5" color="{clrWhite}" />
+                <!-- shorttext and description -->
+                <drawtextbox name="nowshort" x="2%" y="{posy(start)} + {height(start)} + 10" width="96%" font="{light}" fontsize="6%" color="{clrWhite}" text="{presenteventshorttext}" />
+                <drawtextbox name="nowdesc" x="2%" y="{posy(nowshort)} + {height(nowshort)}" width="96%" height="36%" font="{light}" fontsize="6%" color="{clrWhite}" text="{presenteventdescription}" />
+                <!-- next -->
+                <drawtext name="next" x="2%" y="{posy(nowdesc)} + {height(nowdesc)}" width="96%" font="{semibold}" fontsize="7%" color="{clrWhite}" text="Next: {nexteventtitle}" />
+                <drawtext name="nexttime" x="2%" y="{posy(next)} + {height(next)}" width="96%" font="{light}" fontsize="6%" color="{clrWhite}" text="{nexteventstart} - {nexteventstop} ({presenteventduration} min)" />
+            </area>
+            <areascroll mode="forthandback" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="2">
+                <drawtext x="10" y="0" font="{semibold}" fontsize="30%" color="{clrWhite}" text="Following Schedules:" />
+                <loop name="schedule" x="0" y="{areaheight}/4 + 5" orientation="vertical">
+                    <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="30%" color="{clrWhite}" text="{schedule[start]} {schedule[title]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables colorbuttons:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menuchannels>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymenudefault.xml b/skins/metrixhd/xmlfiles/displaymenudefault.xml
new file mode 100644
index 0000000..20ac1ba
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenudefault.xml
@@ -0,0 +1,185 @@
+ <menudefault x="0" y="0" width="100%" height="100%" fadetime="0">
+     <background>
+        <!-- background Menu -->
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    -->
+    <header>
+        <area x="0" y="0" width="75%" height="10%" layer="2">
+            <drawtext condition="not{hasicon}" x="5" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage condition="{hasicon}" name="icon" imagetype="menuicon" path="{icon}" x="5" valign="center" width="{areaheight}*8/10" height="80%"/>
+            <drawtext condition="{hasicon}" x="{areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="80%" y="0" width="10%" height="10%" layer="2">
+            <drawtext align="right" y="0%" font="{light}" fontsize="50%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="50%" color="{clrWhite}" text="{day}. {monthname}" />
+        </area>
+        <area x="90%" y="0" width="10%" height="10%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="25%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="50%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="75%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+
+    <scrollbar>
+        <area x="96%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    <!-- IMPORTANT: menuitemwidth and determinatefont have to be defined here. menuitemwidth defines the total width of the 
+    default menu items, determinatefont the function which sets the actual font to use. With that it is possible to determinate
+    the correct column widths -->
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" menuitemwidth="94%" determinatefont="column1" numlistelements="16">
+        <!-- Available Variables default menu listelement:
+        {nummenuitem}               number of item in list, starts with 1
+        {column1}                   text of column1
+        {column2}                   text of column2
+        {column3}                   text of column3
+        {column4}                   text of column4
+        {column5}                   text of column5
+        {column6}                   text of column6
+        {column2set}                true if column2 is used
+        {column3set}                true if column3 is used
+        {column4set}                true if column4 is used
+        {column5set}                true if column5 is used
+        {column6set}                true if column6 is used
+        {column2x}                  proposed x value of column2
+        {column3x}                  proposed x value of column3
+        {column4x}                  proposed x value of column4
+        {column5x}                  proposed x value of column5
+        {column6x}                  proposed x value of column6
+        {column1width}              proposed width of column1
+        {column2width}              proposed width of column2
+        {column3width}              proposed width of column3
+        {column4width}              proposed width of column4
+        {column5width}              proposed width of column5
+        {column6width}              proposed width of column6
+        {columnscroll}              number of column which should have scrollable text
+        {current}                   true if column is currently selected 
+        {separator}                 true if column is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="95%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+
+            <areascroll scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
+                <drawtext name="column1" x="{column1x}" width="{column1width}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column1}" />
+            </areascroll>
+            <area x="1%" width="100%" layer="3">
+                <drawtext condition="{column2set}" x="{column2x}" valign="center" font="{light}" fontsize="90%" width="{column2width}" color="{clrWhite}" text="{column2}" />
+                <drawtext condition="{column3set}" x="{column3x}" valign="center" font="{light}" fontsize="90%" width="{column3width}" color="{clrWhite}" text="{column3}" />
+                <drawtext condition="{column4set}" x="{column4x}" valign="center" font="{light}" fontsize="90%" width="{column4width}" color="{clrWhite}" text="{column4}" />
+                <drawtext condition="{column5set}" x="{column5x}" valign="center" font="{light}" fontsize="90%" width="{column5width}" color="{clrWhite}" text="{column5}" />
+                <drawtext condition="{column6set}" x="{column6x}" valign="center" font="{light}" fontsize="90%" width="{column6width}" color="{clrWhite}" text="{column6}" />
+            </area>
+            <!--
+            <areascroll condition="not{separator}++eq({columnscroll},1)" scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
+                <drawtext name="column1" x="{column1x}" width="{column1width}" valign="center" font="{vdrOsd}" fontsize="90%" color="{clrWhite}" text="{column1}" />
+            </areascroll>
+            <area condition="not{separator}++eq({columnscroll},1)" x="1%" width="100%" layer="3">
+                <drawtext condition="{column2set}" x="{column2x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column2}" />
+                <drawtext condition="{column3set}" x="{column3x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column3}" />
+                <drawtext condition="{column4set}" x="{column4x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column4}" />
+                <drawtext condition="{column5set}" x="{column5x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column5}" />
+                <drawtext condition="{column6set}" x="{column6x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column6}" />
+            </area>
+            <areascroll condition="not{separator}++gt({columnscroll},1)" scrollelement="column2" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="{column2x}" width="{column2width}" layer="3">
+                <drawtext name="column2" x="0" width="{column2width}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column2}" />
+            </areascroll>
+            <area condition="not{separator}++gt({columnscroll},1)" x="1%" width="100%" layer="3">
+                <drawtext condition="{column1set}" x="{column1x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column1}" />
+                <drawtext condition="{column3set}" x="{column3x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column3}" />
+                <drawtext condition="{column4set}" x="{column4x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column4}" />
+                <drawtext condition="{column5set}" x="{column5x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column5}" />
+                <drawtext condition="{column6set}" x="{column6x}" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{column6}" />
+            </area>
+            -->
+        </listelement>
+    </menuitems>
+</menudefault>
diff --git a/skins/metrixhd/xmlfiles/displaymenudetailepg.xml b/skins/metrixhd/xmlfiles/displaymenudetailepg.xml
new file mode 100644
index 0000000..39bd991
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenudetailepg.xml
@@ -0,0 +1,349 @@
+<menudetailedepg x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="85%" width="100%" height="2" layer="3">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+    </background>
+    <!-- dummyheader -->
+    <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="25%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="50%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="75%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+    <!-- Available Variables in detailheader elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     day of current event
+    {date}                    date of current event in dd.mm.yy
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channelname}             Channelname of event
+    {channelnumber}           Channelnumber of event
+    {channelid}               ChannelID as path to display channel logo
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {epgpicavailable}         true if a epg picture is available
+    {epgpicpath}              path of epg picture
+    -->
+    <detailheader>
+        <area x="1%" y="0" width="98%" height="20%" layer="3">
+            <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="80%" valign="center" />
+            <drawimage condition="{isseries}++{banneravailable}++not{epgpicavailable}" imagetype="image" path="{bannerpath}" x="{areawidth} - {areawidth}/3 - 10" valign="center" width="{areawidth}/3" height="{areawidth}/3 * {bannerheight} / {bannerwidth}"/>
+            <drawimage condition="{ismovie}++{posteravailable}++not{epgpicavailable}" imagetype="image" path="{posterpath}" x="{areawidth} - {areaheight}*8/10" valign="center" width="{areaheight}*8 / 10 * {posterheight} / {posterwidth}" height="{areaheight}*8 / 10"/>
+            <drawimage condition="{epgpicavailable}" imagetype="image" path="{epgpicpath}" x="{areawidth} - {areaheight}*8/10 * 174 / 130" valign="center" width="{areaheight}*8/10 * 174 / 130" height="{areaheight}*8 / 10"/>
+
+            <drawtext name="title" x="{width(logo)} + 20" valign="center" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{title}" />
+            <drawtext name="datetime" x="{width(logo)} + 20" y="{posy(title)} - {height(datetime)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+            <drawtext name="shorttext" x="{width(logo)} + 20" y="{posy(title)} + {height(title)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+    </detailheader>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in tab elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {description}             description of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     Day of event as three letter abrivation
+    {date}                    Date of event
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channelid}               ChannelID as path to display channel logo
+    {hasreruns}               true if reruns of this event are found
+    {reruns[]}                array with reruns
+    {reruns[title]}           title of rerun
+    {reruns[shorttext]}       shorttext of rerun
+    {reruns[date]}            date of rerun in dd:mm
+    {reruns[day]}             short dayname of rerun
+    {reruns[start]}           start time of rerun in hh:mm
+    {reruns[stop]}            stop time of rerun in hh:mm
+    {reruns[channelname]}     name of channel on which rerun occurs
+    {reruns[channelnumber]}   number of channel on which rerun occurs
+    {reruns[channelid]}       id of channel on which rerun occurs to display channel logo
+    {reruns[channellogoexists]} true if channel logo exists
+    {epgpic1avaialble}        true if first epg picture is available
+    {epgpic2avaialble}        true if first epg picture is available
+    {epgpic3avaialble}        true if first epg picture is available
+    {epgpic1path}             path of first epg picture
+    {epgpic2path}             path of second epg picture
+    {epgpic3path}             path of third epg picture
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+
+    <!-- TAB EPGINFO -->
+    <tab name="EPG Info" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.75" y="0" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.75" y="0" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="0" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="0" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+    </tab>
+    <!-- TAB RERUNS -->
+    <tab condition="{hasreruns}" name="{tr(reruns)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" name="title" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" />
+        <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical">
+            <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" />
+            <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="-5" font="{light}" fontsize="10%" color="{clrWhite}" text="{reruns[channelname]}" />
+            <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]}  {reruns[shorttext]}" />
+            <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]}  {reruns[shorttext]}" />
+        </loop>
+    </tab>
+    <!-- TAB ACTORS -->
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{semibold}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <!-- TAB TVDBINFO -->
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstaired [...]
+    </tab>
+    <!-- TAB SERIESGALERY -->
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <!-- TAB MOVIEDBINFO -->
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}
||{tr(revenue)}: {movierevenue}

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runtime)} [...]
+    </tab>
+    <!-- TAB MOVIEGALERY -->
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>
+
+    <!-- Available Variables tablabels:
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="0" y="85%" width="98%" height="5%" layer="3">
+            <loop name="tabs" x="0" y="0" orientation="horizontal">
+                <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" />
+                <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="  {tabs[title]}  " />
+            </loop>
+        </area>
+    </tablabels>
+</menudetailedepg>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymenudetailrecording.xml b/skins/metrixhd/xmlfiles/displaymenudetailrecording.xml
new file mode 100644
index 0000000..47f096d
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenudetailrecording.xml
@@ -0,0 +1,326 @@
+<menudetailedrecording x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="85%" width="100%" height="2" layer="3">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+    </background>
+    <!-- dummyheader -->
+    <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="25%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="50%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="75%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+    <!-- Available Variables in detailheader elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {recimgavailable}         true if a recording image is available in the recording path
+    {recimgpath}              path of rec image
+    -->
+    <detailheader>
+        <area x="1%" y="0" width="98%" height="20%" layer="3">
+            <drawimage condition="{isseries}++{banneravailable}++not{recimgavailable}" imagetype="image" path="{bannerpath}" x="{areawidth} - {areawidth}/3 - 10" valign="center" width="{areawidth}/3" height="{areawidth}/3 * {bannerheight} / {bannerwidth}"/>
+            <drawimage condition="{ismovie}++{posteravailable}++not{recimgavailable}" imagetype="image" path="{posterpath}" x="{areawidth} - {areaheight}*8/10" valign="center" width="{areaheight}*8 / 10 * {posterheight} / {posterwidth}" height="{areaheight}*8 / 10"/>
+            <drawimage condition="{recimgavailable}" imagetype="image" path="{recimgpath}" x="{areawidth} - {areaheight}*8/10 * 174 / 130" valign="center" width="{areaheight}*8/10 * 174 / 130" height="{areaheight}*8 / 10"/>
+
+            <drawtext name="title" x="20" valign="center" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{epgname}" />
+            <drawtext name="datetime" x="20" y="{posy(title)} - {height(datetime)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+            <drawtext name="shorttext" x="20" y="{posy(title)} + {height(title)}" font="{light}" fontsize="25%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+    </detailheader>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in tab elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+
+    {recordingsize}           size of recording (automatically in GB / MB)
+    {recordingsizecutted}     size of cutted recording (automatically in GB / MB)
+    {recordinglength}         length of recording (in hh::mm:ss)
+    {recordinglengthcutted}   length of cutted recording (in hh::mm:ss)
+    {recordingbitrate}        bitrate of recording (in MBit/s)
+    {recordingformat}         format of recording (TS / PS)
+    {searchtimer}             name of accordign searchtimer (if available)
+
+    {recimg1avaialble}        true if first recording image is available
+    {recimg2avaialble}        true if first recording image is available
+    {recimg3avaialble}        true if first recording image is available
+    {recimg1path}             path of first recording image
+    {recimg2path}             path of second recording image
+    {recimg3path}             path of third recording image
+    
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <tab name="Info" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.7" y="0" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.7" y="0" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="0" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="0" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{description}" />
+    </tab>
+    <tab name="{tr(recinfo)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" name="title" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(recinfo)}" />
+        <drawtextbox x="0" y="{height(title)} + 20" width="96%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(recsize)}: {recordingsize}
{tr(recsizecutted)}: {recordingsizecutted}
{tr(reclength)}: {recordinglength}
{tr(reclengthcutted)}: {recordinglengthcutted}
{tr(bitrate)}: {recordingbitrate}
{tr(format)}: {recordingformat}
{tr(searchtimer)}: {searchtimer}
" />
+    </tab>
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{light}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstaired [...]
+    </tab>
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}$
||{tr(revenue)}: {movierevenue}$

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runtime [...]
+    </tab>
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>
+
+    <!-- Available Variables tablabels:
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="0" y="85%" width="98%" height="5%" layer="3">
+            <loop name="tabs" x="0" y="0" orientation="horizontal">
+                <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" />
+                <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" />
+                <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="  {tabs[title]}  " />
+            </loop>
+        </area>
+    </tablabels>
+</menudetailedrecording>
diff --git a/skins/metrixhd/xmlfiles/displaymenudetailtext.xml b/skins/metrixhd/xmlfiles/displaymenudetailtext.xml
new file mode 100644
index 0000000..5fd8997
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenudetailtext.xml
@@ -0,0 +1,99 @@
+<menudetailedtext x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+    <header>
+        <area x="0" y="0" width="75%" height="10%" layer="2">
+            <drawtext x="5" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <datetime>
+        <area x="75%" y="0" width="12%" height="10%" layer="2">
+            <drawtext align="right" y="15%" font="{light}" fontsize="30%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="30%" color="{clrWhite}" text="{day}. {monthname}" />
+        </area>
+        <area x="87%" y="0" width="13%" height="10%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="25%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="50%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="75%" y="92%" width="25%" height="8%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+    <scrollbar>
+        <area x="98%" y="10%" width="2%" height="80%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in tab elements:
+    {text}                    detailed text
+    -->
+    <tab name="text" x="2%" y="10%" width="94%" height="80%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="5%" color="{clrWhite}" text="{text}" />
+    </tab>
+</menudetailedtext>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymenumain.xml b/skins/metrixhd/xmlfiles/displaymenumain.xml
new file mode 100644
index 0000000..ef588a6
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenumain.xml
@@ -0,0 +1,322 @@
+<menumain x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- 
+    static content of main menu, is only drawn once at main menu startup
+    -->
+    <background>
+        <!-- main menu background -->
+        <area x="0" y="0" width="71%" height="70%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <!-- datetime background -->
+        <area x="75%" y="0" width="25%" height="10%" layer="2">
+            <drawrectangle x="0" y="0" width="53%" height="100%" color="{clrTransBlueLight}" />
+            <drawrectangle x="53%" y="0" width="47%" height="100%" color="{clrTransBlack}" />
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    -->
+    <header>
+        <area x="0" y="0" width="70%" height="7%" layer="2">
+            <drawtext x="10" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{title} {vdrversion}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name  
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="75%" y="0" width="13%" height="10%" layer="3">
+            <drawtext align="right" y="0%" font="{light}" fontsize="55%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="55%" color="{clrWhite}" text="{day}. {monthnameshort}" />
+        </area>
+        <area x="88%" y="0" width="12%" height="10%" layer="3">
+            <drawtext align="center" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area x="0" y="63%" width="18%" height="7%" layer="2">
+            <drawtext condition="{red1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red1}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green1}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow1}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue1}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue1}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="18%" y="63%" width="17%" height="7%" layer="2">
+            <drawtext condition="{red2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red2}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green2}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow2}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue2}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue2}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="35%" y="63%" width="18%" height="7%" layer="2">
+            <drawtext condition="{red3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red3}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green3}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow3}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue3}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue3}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+        <area x="53%" y="63%" width="17%" height="7%" layer="2">
+            <drawtext condition="{red4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle condition="{red4}" x="0" y="0" width="10" height="100%" color="{clrRed}" />
+            <drawtext condition="{green4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle condition="{green4}" x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+            <drawtext condition="{yellow4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle condition="{yellow4}" x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+            <drawtext condition="{blue4}" x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle condition="{blue4}" x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+    <!-- Available Variables timers:
+    {numtimers}                  number of active timers (max. 15 timers will be displayed)
+    {numtimerconflicts}          number of current timer conflicts
+
+    {timers[]}                   array with active timers (local and remote if remotetimers plugin is in use)
+    {timers[title]}              title of timer
+    {timers[datetime]}           date and time of timer
+    {timers[recording]}          true if timer is recording currently
+    {timers[channelname]}        name of channel for which timer is created
+    {timers[channelnumber]}      number of channel
+    {timers[channelid]}          ChannelID of channel
+    {timers[channellogoexists]}  true if channel logo exists
+    -->
+    <timers>
+        <area x="0" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area condition="not{numtimerconflicts}" x="0" y="75%" width="{areawidth}/8 - 5" height="25%" layer="2">
+            <drawtext align="center" y="15%" font="{light}" fontsize="50%" color="{clrWhite}" text="{numtimers}" />
+            <drawtext condition="eq({numtimers}, 0)||gt({numtimers}, 1)" name="timersheader" align="center" y="60%" font="{light}" fontsize="20%" color="{clrWhite}" text="{tr(activetimers)}" />
+            <drawtext condition="eq({numtimers}, 1)" name="timersheader" align="center" y="60%" font="{light}" fontsize="20%" color="{clrWhite}" text="{tr(activetimer)}" />
+        </area>
+        <area condition="{numtimerconflicts}" x="0" y="75%" width="{areawidth}/8 - 5" height="25%" layer="2">
+            <drawtext align="center" y="0" font="{light}" fontsize="50%" color="{clrWhite}" text="{numtimers}" />
+            <drawtext name="timersheader" align="center" y="45%" font="{light}" fontsize="20%" color="{clrWhite}" text="{tr(activetimers)}" />
+            <drawtext align="center" y="65%" font="{semibold}" fontsize="20%" color="{clrRed}" text="{numtimerconflicts} {tr(conflicts)}!" />
+        </area>
+        
+        <area condition="gt({numtimers}, 0)" x="{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 1)" x="2*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 2)" x="3*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 3)" x="4*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 4)" x="5*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 5)" x="6*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area condition="gt({numtimers}, 6)" x="7*{areawidth}/8" y="75%" width="{areawidth}/8 - 5" height="25%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area x="{areawidth}/8" y="75%" width="{areawidth}*0.875" height="25%" layer="2">
+            <loop name="timers" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/7" rowheight="{areaheight}" overflow="cut">
+                <drawrectangle condition="{timers[recording]}" x="0" y="0" width="{columnwidth}-5" height="{rowheight}" color="{clrRed}" />
+                <drawimage  cache="true" name="logo" imagetype="channellogo" path="{timers[channelid]}" width="{columnwidth}-15" height="40%" align="center" y="10" />
+                <drawtextbox x="5" y="{height(logo)} + 10" width="{columnwidth}-10" align="center" maxlines="2" font="{light}" fontsize="15%" color="{clrWhite}" text="{timers[title]}" />
+                <drawtext align="center" y="75%" font="{light}" fontsize="20%" color="{clrWhite}" text="{timers[datetime]}" />
+            </loop>
+        </area>
+    </timers>
+
+    <!-- Available Variables discusage:
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <discusage>
+        <area x="75%" y="26%" width="25%" height="10%" layer="1">
+            <fill condition="not{discalert}" color="{clrTransBlack}"/>
+            <fill condition="{discalert}" color="{clrRed}"/>
+        </area>
+        <area x="75%" y="26%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="icon" path="ico_discusage" x="1%" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+            <drawtext x="{areaheight}+10" y="0" font="{light}" fontsize="55%" color="{clrWhite}" text="{tr(disc)}: {freepercent}% {tr(free)}" />
+            <drawtext x="{areaheight}+10" y="45%" font="{light}" fontsize="55%" color="{clrWhite}" text="{freetime} {tr(hours)}" />
+        </area>
+    </discusage>
+
+    <!-- Available Variables currentweather:
+    {timestamp}                 timestamp of forecast in dd.mm hh:mm
+    {temperature}               current temperature in °C
+    {apparenttemperature}       apparent (feeled) temperature
+    {mintemperature}            minimum daily temperature in °C
+    {maxtemperature}            maximum daily temperature in °C
+    {summary}                   short weather summary
+    {icon}                      weather icon 
+    {precipitationintensity}    precipitation intensity in l/m2
+    {precipitationprobability}  precipitation probability in %
+    {precipitationtype}         precipitation type
+    {humidity}                  humidity in %
+    {windspeed}                 windspeed in km/h
+    {windbearing}               wind bearing in °
+    {windbearingstring}         wind bearing (N, NE, ...)
+    {visibility}                visibility in km
+    {cloudcover}                cloud cover in %
+    {pressure}                  pressure in HPo
+    {ozone}                     ozone value in DU
+    -->
+    <currentweather>
+        <area x="75%" y="13%" width="25%" height="10%" layer="2">
+            <drawrectangle x="0" y="0" width="53%" height="100%" color="{clrTransBlueLight}" />
+            <drawrectangle x="53%" y="0" width="47%" height="100%" color="{clrTransBlack}" />
+        </area>
+        <area x="75%" y="13%" width="12%" height="10%" layer="2">
+            <drawimage imagetype="icon" path="{icon}" align="center" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+        </area>
+        <area x="89%" y="13%" width="10%" height="10%" layer="2">
+            <drawtext x="0" y="0" font="{light}" fontsize="25%" color="{clrWhite}" text="{mintemperature}°C" />
+            <drawtext x="0" y="75%" font="{light}" fontsize="25%" color="{clrWhite}" text="{maxtemperature}°C" />
+        </area>
+        <area x="89%" y="13%" width="10%" height="10%" layer="3">
+            <drawtext align="right" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+        <area x="75%" y="48%" width="25%" height="{areaheight}/12 * {numdevices}" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area x="75%" y="48%" width="25%" height="{areaheight}/12 * {numdevices}" layer="2">
+            <loop name="devices" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight} / {numdevices}" overflow="cut">
+                <drawtext name="label" x="5" y="0" font="{light}" fontsize="{rowheight}*0.4" color="{clrWhite}" text="{devices[num]}: {devices[type]}" />
+                <drawtext condition="{devices[hascam]}" x="{width(label)} + 15" y="0" font="{light}" fontsize="{rowheight}*0.40" color="{clrWhite}" text="(CAM {devices[cam]})" />
+                <drawtext condition="{devices[recording]} ++ {devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.40" color="{clrRed}" text="LiveTV, Recording ({devices[channelname]}) " />
+                <drawtext condition="{devices[recording]} ++ not{devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.40" color="{clrRed}" text="Recording ({devices[channelname]}) " />
+                <drawtext condition="not{devices[recording]} ++ {devices[livetv]}" align="right" y="0" font="{light}" fontsize="{rowheight}*0.40" color="{clrWhite}" text="LiveTV ({devices[channelname]}) " />
+                <drawrectangle condition="{devices[istuned]}" x="5" y="{rowheight}/3 + 5" width="{areawidth} * {devices[signalstrength]} / 100 - 10 * {devices[signalstrength]} / 100" height="{rowheight}/3 - 10" color="{clrTransWhite}" />
+                <drawrectangle condition="{devices[istuned]}" x="5" y="2*{rowheight}/3 + 5" width="{areawidth} * {devices[signalquality]} / 100 - 10 * {devices[signalquality]} / 100" height="{rowheight}/3 - 10" color="{clrTransWhite}" />
+                <drawtext condition="not{devices[istuned]}" align="center" y="{rowheight}/2" font="{light}" fontsize="{rowheight}*0.40" color="{clrWhite}" text="not tuned" />
+            </loop>
+        </area>
+    </devices>
+
+    <!-- Available Variables systemload:
+    {load}                      current system load
+    -->
+    <systemload>
+        <area x="75%" y="40%" width="25%" height="5%" layer="1">
+            <fill color="{clrTransBlack}"/>
+        </area>
+        <area x="75%" y="40%" width="25%" height="5%" layer="2">
+            <drawtext x="5" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="System Load: {load}" />
+        </area>
+    </systemload>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+
+    <menuitems x="0" y="7%" orientation="vertical" width="70%" height="56%" align="center" numlistelements="8">
+        <!-- Available Variables main menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="60%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="0" width="60%" layer="3">
+                <drawtext name="menutext" x="20" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{number} {label}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+            <area x="61%" y="22%" width="36%" height="52%" layer="2">
+                <fill color="{clrTransBlueLight}" />
+            </area>
+            <area x="61%" y="23%" width="36%" height="50%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" align="center" valign="center" width="{areaheight} - 10" height="{areaheight} - 10"/>
+            </area>
+        </currentelement>
+    </menuitems>
+    
+    <scrollbar>
+        <area x="68%" y="7%" width="2%" height="56%" layer="2">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menumain>
diff --git a/skins/metrixhd/xmlfiles/displaymenurecordings.xml b/skins/metrixhd/xmlfiles/displaymenurecordings.xml
new file mode 100644
index 0000000..f0bf9aa
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenurecordings.xml
@@ -0,0 +1,101 @@
+<menurecordings x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="16">
+        <!-- Available Variables recordings menu listelement:
+        {nummenuitem}           number of item in list, starts with 1
+        {name}                  Name of recording
+        {date}                  Date of recording (day dd.mm.yyyy)
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes
+        {current}               true if item is currently selected
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposterthumbnail}    true if a scraped poster thumbnail is available for recording
+        {thumbnailbwidth}       width of scraped poster thumbnail
+        {thumbnailheight}       height of scraped poster thumbnail
+        {thumbnailpath}         absolute path of scraped poster thumbnail
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+                <fill condition="{separator}" color="{clrSemiTransBlack}" />
+            </area>
+            <!-- recording folder -->
+            <area condition="{folder}" x="1%" width="58%" layer="2">
+                <drawimage name="foldericon" imagetype="icon" path="ico_recfolder" x="10" width="0.9*{areaheight} * 92 / 136" height="0.9*{areaheight}" valign="center" />
+                <drawtext x="{width(foldericon)} + 20" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{name} ({numrecordingsfolder}, {newrecordingsfolder} new)" />
+            </area>
+            <!-- recording item -->
+            <area condition="not{folder}" x="1%" width="58%" layer="2">
+                <drawtext x="10" valign="center" font="{light}" fontsize="85%" color="{clrWhite}" text="{printf('%02d.%02d.%d', daynumeric, month, year)} {time}" />
+                <drawtext x="35%" width="60%" valign="center" font="{light}" fontsize="85%" color="{clrWhite}" text="{name}" />
+                <drawimage condition="{new}" name="new" imagetype="icon" path="ico_recnew" x="{areawidth} - {areaheight}" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+                <drawimage condition="{new}++{cutted}" imagetype="icon" path="ico_cutted" x="{areawidth} - 2*{areaheight}" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+                <drawimage condition="not{new}++{cutted}" imagetype="icon" path="ico_cutted" x="{areawidth} - {areaheight}" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {name}                  Real Name of recording (Name of Recording Folder)
+        {epgname}               Name of recording (Name from EPG)
+        {shorttext}             Short Text of recording
+        {description}           Descrption of recording        
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposter}             true if a scraped poster is available for recording
+        {posterwidth}           width of scraped poster
+        {posterheight}          height of scraped poster
+        {posterpath}            absolute path of scraped poster
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="63%" y="0" width="36%" height="100%" layer="2">
+                <!-- header -->
+                <drawtext name="title" x="1%" y="0" width="98%" font="{semibold}" fontsize="8%" color="{clrWhite}" text="{epgname}" />
+                <drawtext name="shorttext" x="1%" y="{height(title)}" width="98%" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{shorttext}" />
+                <drawtext name="datetime" x="1%" y="{posy(shorttext)} + {height(shorttext)}" font="{light}" fontsize="5%" color="{clrWhite}" text="{date} {time}, {duration} min" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="1%" y="{posy(datetime)} + {height(datetime)} + 20" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="1%" y="{posy(poster)}" width="98%" height="{areaheight} - {posy(poster)}" float="topleft" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 10" font="{light}" fontsize="6%" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="1%" y="{posy(poster)}" width="98%" height="{areaheight} - {posy(poster)}" font="{light}" fontsize="6%" color="{clrWhite}" text="{description}" />
+            </area>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables colorbuttons:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menurecordings>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymenuschedules.xml b/skins/metrixhd/xmlfiles/displaymenuschedules.xml
new file mode 100644
index 0000000..58300c6
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenuschedules.xml
@@ -0,0 +1,215 @@
+<menuschedules x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    {channelnumber}                 Number of Channel of current event
+    {channelname}                   Name of current Channel of current event
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {whatson}                       true if menu "What's on" is displayed
+    {whatsonnow}                    true if menu "What's on now" is displayed
+    {whatsonnext}                   true if menu "What's on next" is displayed
+    {whatsonfavorites}              true if EPGSearch Favorites menu is displayed
+    -->
+    <header>
+        <area x="0" y="0" width="38%" height="10%" layer="2">
+            <drawimage condition="{whatsonnow}||{whatsonnext}||{whatsonfavorites}" name="menuicon" imagetype="menuicon" path="{icon}" x="5" valign="center" width="{areaheight}*8/10" height="80%"/>
+            <drawtext condition="{whatsonnow}||{whatsonnext}||{whatsonfavorites}" x="{width(menuicon)} + 15" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage name="logo" condition="{whatson}" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="100%" align="left" valign="center" />
+            <drawtext condition="{whatson}" x="{width(logo)}+20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{channelnumber} - {channelname}" />
+        </area>
+    </header>
+
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="16">
+        <!-- Available Variables schedules menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event as three letter abrivation
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {hasVPS}                  true if event has VPS information
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+                <fill condition="{separator}" color="{clrSemiTransBlack}" />
+            </area>
+            <!-- WHATSON -->
+            <areascroll condition="not{separator}++{whatson}++not{running}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="58%" layer="3">
+                <drawtext name="menutext" x="20" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{start} {title}" />
+            </areascroll>
+            <areascroll condition="not{separator}++{whatson}++{running}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="48%" layer="3">
+                <drawtext name="menutext" x="20" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{start} {title}" />
+            </areascroll>
+            <area condition="not{separator}++{whatson}" x="1%" width="58%" layer="3">
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.9*{areaheight} - 10" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.5*{areaheight} - 10" width="0.5*{areaheight}" height="0.5*{areaheight}" valign="center" />
+                <drawrectangle condition="{running}" x="{areawidth}*0.85 - 10" y="{areaheight}/3" width="{areawidth}*0.15" height="{areaheight}/3" color="{clrWhite}" />
+                <drawrectangle condition="{running}" x="{areawidth}*0.85 - 8" y="{areaheight}/3 + 2" width="{areawidth}*0.15 - 4" height="{areaheight}/3 - 4" color="{clrTransparent}" />
+                <drawrectangle condition="{running}" x="{areawidth}*0.85 - 6" y="{areaheight}/3 + 4" width="{areawidth}*0.15 * {elapsed} / {duration} - 8" height="{areaheight}/3 - 8" color="{clrWhite}" />
+            </area>
+            <!-- WHATSONNOW -->
+            <area condition="not{separator}++{whatsonnow}" x="1%" width="6%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnow}++{running}" x="8%" width="7%" layer="3">
+                <drawrectangle condition="{current}" x="0" y="{areaheight}/3" width="{areawidth}" height="{areaheight}/3" color="{clrWhite}" />
+                <drawrectangle condition="not{current}" x="0" y="{areaheight}/3" width="{areawidth}" height="{areaheight}/3" color="{clrTransBlueLight}" />
+                <drawrectangle x="2" y="{areaheight}/3 + 2" width="{areawidth} - 4" height="{areaheight}/3 - 4" color="{clrTransparent}" />
+                <drawrectangle x="4" y="{areaheight}/3 + 4" width="{areawidth} * {elapsed} / {duration} - 8" height="{areaheight}/3 - 8" color="{clrWhite}" />
+            </area>
+            <area condition="not{separator}++{whatsonnow}++{timerfull}" x="53%" width="6%" layer="4">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.9*{areaheight} - 10" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnow}++{timerpartitial}" x="53%" width="6%" layer="5">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.5*{areaheight} - 10" width="0.5*{areaheight}" height="0.5*{areaheight}" valign="center" />
+            </area>
+            <areascroll condition="not{separator}++{whatsonnow}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="15%" width="44%" layer="4">
+                <drawtext name="menutext" x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{start} {title}" />
+            </areascroll>
+            <!-- WHATSONNEXT -->
+            <area condition="not{separator}++{whatsonnext}" x="1%" width="6%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnext}++{timerfull}" x="53%" width="6%" layer="4">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.9*{areaheight} - 10" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnext}++{timerpartitial}" x="53%" width="6%" layer="5">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.5*{areaheight} - 10" width="0.5*{areaheight}" height="0.5*{areaheight}" valign="center" />
+            </area>
+            <areascroll condition="not{separator}++{whatsonnext}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="52%" layer="4">
+                <drawtext name="menutext" x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{start} {title}" />
+            </areascroll>
+            <!-- WHATSONFAVORITES -->
+            <area condition="not{separator}++{whatsonfavorites}" x="1%" width="6%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonfavorites}++{timerfull}" x="53%" width="6%" layer="4">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.9*{areaheight} - 10" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonfavorites}++{timerpartitial}" x="53%" width="6%" layer="5">
+                <drawimage imagetype="icon" path="ico_activetimer" x="{areawidth} - 0.5*{areaheight} - 10" width="0.5*{areaheight}" height="0.5*{areaheight}" valign="center" />
+            </area>
+            <areascroll condition="not{separator}++{whatsonfavorites}" scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="52%" layer="4">
+                <drawtext name="menutext" x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{start} {title}" />
+            </areascroll>
+            <!-- Separator -->
+            <area condition="{separator}" x="0" width="68%" layer="3">
+                <drawtext x="20" valign="center" font="{light}" fontsize="95%" color="{clrBlueLight}" text="{title}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables schedules menu currentelement:
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {description}             detailed description of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {hasposter}               true if a scraped poster is available for this element
+        {posterwidth}             width of scraped poster
+        {posterheight}            height of scraped poster
+        {posterpath}              absolute path of scraped poster
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {schedule[]}              array with next 10 schedules, only for whatsonnow and whatsonnext
+        {schedule[title]}         title of event
+        {schedule[shorttext]}     shorttext of event
+        {schedule[start]}         start time of event in hh:mm
+        {schedule[stop]}          stop time of event in hh:mm
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area condition="{whatson}" x="63%" y="0" width="36%" height="100%" layer="2">
+                <!-- title -->
+                <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{title}" />
+                <!-- progress bar if event is running -->
+                <drawtext condition="{running}" name="start" x="{areawidth}/4 - {width(start)}" y="{areaheight}/16 + 20" font="{light}" fontsize="{areaheight}/18" color="{clrWhite}" text="{start}" />
+                <drawtext condition="{running}" name="stop" x="{areawidth}*3/4" y="{areaheight}/16 + 20" font="{light}" fontsize="{areaheight}/18" color="{clrWhite}" text="{stop}" />
+                <drawrectangle condition="{running}" x="{areawidth}/4+10" y="{areaheight}/16 + 20 + {areaheight}/36" width="{areawidth}/2 - 20" height="1" color="{clrWhite}" />
+                <drawrectangle condition="{running}" x="{areawidth}/4+10" y="{areaheight}/16 + 20 + {areaheight}/36 -2" width="{areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration}" height="5" color="{clrWhite}" />
+                <!-- start and stop if event is not running -->
+                <drawtext condition="not{running}" x="10" y="{areaheight}/18 + 20" font="{light}" fontsize="{areaheight}/20" color="{clrWhite}" text="{start} - {stop} ({duration} min)" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="10" y="{posy(start)} + {height(start)} + 20" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topleft" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{light}" fontsize="{areaheight}/20" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{light}" fontsize="{areaheight}/20" color="{clrWhite}" text="{description}" />
+            </area>
+            <area condition="{whatsonnow}||{whatsonnext}" x="63%" y="0" width="36%" height="85%" layer="2">
+                <!-- title -->
+                <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="10%" color="{clrWhite}" text="{title}" />
+                <!-- progress bar if event is running -->
+                <drawtext condition="{running}" name="start" x="{areawidth}/4 - {width(start)}" y="{areaheight}/16 + 15" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{start}" />
+                <drawtext condition="{running}" name="stop" x="{areawidth}*3/4" y="{areaheight}/16 + 15" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{stop}" />
+                <drawrectangle condition="{running}" x="{areawidth}/4+10" y="{areaheight}/16 + 15 + {areaheight}/30" width="{areawidth}/2 - 20" height="1" color="{clrWhite}" />
+                <drawrectangle condition="{running}" x="{areawidth}/4+10" y="{areaheight}/16 + 15 + {areaheight}/30 -2" width="{areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration}" height="5" color="{clrWhite}" />
+                <!-- start and stop if event is not running -->
+                <drawtext condition="not{running}" x="10" y="{areaheight}/18 + 15" font="{light}" fontsize="{areaheight}/20" color="{clrWhite}" text="{start} - {stop} ({duration} min)" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="10" y="{posy(start)} + {height(start)} + 10" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topleft" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 10" font="{light}" fontsize="{areaheight}/18" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{light}" fontsize="{areaheight}/18" color="{clrWhite}" text="{description}" />
+            </area>
+            <areascroll condition="{whatsonnow}||{whatsonnext}" mode="forthandback" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="2">
+                <drawtext x="10" y="0" font="{semibold}" fontsize="30%" color="{clrWhite}" text="Next Schedules:" />
+                <loop name="schedule" x="0" y="{areaheight}/4 + 5" orientation="vertical">
+                    <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="30%" color="{clrWhite}" text="{schedule[start]} {schedule[title]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables scrollbar:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menuschedules>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymenusetup.xml b/skins/metrixhd/xmlfiles/displaymenusetup.xml
new file mode 100644
index 0000000..d2fc400
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenusetup.xml
@@ -0,0 +1,110 @@
+<menusetup x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- 
+    static content of main menu, is only drawn once at main menu startup
+    -->
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="84%" y="0" width="16%" height="7%" layer="2">
+            <drawrectangle x="0" y="0" width="52%" height="100%" color="{clrTransBlueLight}" />
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {icon}                    icon path
+    -->
+    <header>
+        <area x="0" y="0" width="70%" height="7%" layer="2">
+            <drawimage name="menuicon" imagetype="menuicon" path="{icon}" x="5" valign="center" width="{areaheight}*8/10" height="80%"/>
+            <drawtext x="{areaheight}" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="84%" y="0" width="8%" height="7%" layer="3">
+            <drawtext align="right" y="0%" font="{light}" fontsize="55%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="45%" font="{light}" fontsize="55%" color="{clrWhite}" text="{day}. {monthname}" />
+        </area>
+        <area x="92%" y="0" width="8%" height="7%" layer="3">
+            <drawtext align="center" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables colorbuttons:
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button 
+    -->
+    <colorbuttons>
+        <area x="0" y="93%" width="25%" height="7%" layer="2">
+            <drawtext x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{red}" />
+            <drawrectangle x="0" y="0" width="10" height="100%" color="{clrRed}" />
+        </area>
+        <area x="25%" y="93%" width="25%" height="7%" layer="2">
+            <drawtext x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{green}" />
+            <drawrectangle x="0" y="0" width="10" height="100%" color="{clrGreen}" />
+        </area>
+        <area x="50%" y="93%" width="25%" height="7%" layer="2">
+            <drawtext x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{yellow}" />
+            <drawrectangle x="0" y="0" width="10" height="100%" color="{clrYellow}" />
+        </area>
+        <area x="75%" y="93%" width="25%" height="7%" layer="2">
+            <drawtext x="20" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{blue}" />
+            <drawrectangle x="0" y="0" width="10" height="100%" color="{clrBlue}" />
+        </area>
+    </colorbuttons>
+
+    <menuitems x="0" y="7%" orientation="vertical" width="98%" height="86%" align="center" numlistelements="10">
+        <!-- Available Variables setup menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="60%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="0" width="60%" layer="3">
+                <drawtext name="menutext" x="20" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{number} {label}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+            <area x="61%" y="30%" width="37%" height="36%" layer="2">
+                <fill color="{clrTransBlueLight}" />
+            </area>
+            <area x="61%" y="30%" width="37%" height="36%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" align="center" valign="center" width="{areaheight} - 10" height="{areaheight} - 10"/>
+            </area>
+        </currentelement>
+    </menuitems>
+    
+    <scrollbar>
+        <area x="98%" y="7%" width="2%" height="86%" layer="2">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menusetup>
diff --git a/skins/metrixhd/xmlfiles/displaymenutimers.xml b/skins/metrixhd/xmlfiles/displaymenutimers.xml
new file mode 100644
index 0000000..607de90
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymenutimers.xml
@@ -0,0 +1,97 @@
+<menutimers x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="16">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}       number of item in list, starts with 1
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)
+        {channelname}       Name of channel which is set for the timer
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {current}           true if item is currently selected
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="58%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <area x="1%" width="58%" layer="2">
+                <drawimage condition="{flagactive}" name="active" imagetype="icon" path="ico_timer_active" x="0" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+                <drawimage condition="not{flagactive}" name="active" imagetype="icon" path="ico_timer_inactive" x="0" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+                <drawimage condition="{flagrecording}" name="active" imagetype="icon" path="ico_timer_recording" x="0" width="0.9*{areaheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <areascroll scrollelement="timertext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="5%" width="54%" layer="3">
+                <drawtext name="timertext" x="10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{dayname} {day}. {timerstart} - {timerstop}: {title}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)
+        {channelname}       Name of channel which is set for the timer
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {eventshorttext}    Short Text corresponding event
+        {eventdescription}  Description corresponding event
+        {hasposter}         true if a scraped poster is available for event
+        {posterwidth}       width of scraped poster
+        {posterheight}      height of scraped poster
+        {posterpath}        absolute path of scraped poster
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <currentelement delay="500" fadetime="0">
+            <area x="63%" y="0" width="36%" height="15%" layer="2">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="10" y="0" width="30%" height="100%" />
+                <drawtext name="channum" x="{width(logo)} + 20" y="{areaheight}/6" width="{areawidth} - {width(logo)} - 30" font="{light}" fontsize="40%" color="{clrWhite}" text="Channel No. {channelnumber}" />
+                <drawtext name="channame" x="{width(logo)} + 20" y="{areaheight}/3 + {areaheight}/6" width="{areawidth} - {width(logo)} - 30" font="{semibold}" fontsize="40%" color="{clrWhite}" text="{channelname}" />
+            </area>
+            <area x="63%" y="15%" width="36%" height="70%" layer="2">
+                <!-- title -->
+                <drawtext name="title" align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="{areaheight}/10" color="{clrWhite}" text="{eventtitle}" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="10" y="{posy(title)} + {height(title)} + 10" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topleft" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{light}" fontsize="{areaheight}/14" color="{clrWhite}" text="{eventdescription}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{light}" fontsize="{areaheight}/14" color="{clrWhite}" text="{eventdescription}" />
+            </area>
+        </currentelement>
+    </menuitems>
+    <!-- Available Variables colorbuttons:
+    {height}                  height in one-tenth of a percent of total height
+    {offset}                  offset from top in one-tenth of a percent of total height
+    -->
+    <scrollbar>
+        <area x="60%" y="10%" width="2%" height="82%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+</menutimers>
\ No newline at end of file
diff --git a/skins/metrixhd/xmlfiles/displaymessage.xml b/skins/metrixhd/xmlfiles/displaymessage.xml
new file mode 100644
index 0000000..0ff98b2
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displaymessage.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymessage SYSTEM "../../../dtd/displaymessage.dtd">
+
+<displaymessage x="5%" y="80%" width="90%" height="15%" fadetime="{fadetime}">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="0" y="0" width="100%" height="100%" layer="2">
+            <drawrectangle condition="{status}" x="20" y="0" width="20" height="100%" color="{clrGreen}" />
+            <drawrectangle condition="{info}" x="20" y="0" width="20" height="100%" color="{clrBlue}" />
+            <drawrectangle condition="{warning}" x="20" y="0" width="20" height="100%" color="{clrYellow}" />
+            <drawrectangle condition="{error}" x="20" y="0" width="20" height="100%" color="{clrRed}" />
+            <drawtext align="center" valign="center" width="{areawidth} - 80" font="{light}" fontsize="50%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+</displaymessage>
diff --git a/skins/metrixhd/xmlfiles/displayreplay.xml b/skins/metrixhd/xmlfiles/displayreplay.xml
new file mode 100644
index 0000000..8853fad
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displayreplay.xml
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayreplay SYSTEM "../../../dtd/displayreplay.dtd">
+
+<displayreplay x="0" y="0" width="100%" height="100%" fadetime="{fadetime}">
+    <background>
+        <!-- background infobar -->
+        <area x="0" y="80%" width="100%" height="20%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <!-- background datetime -->
+        <area x="70%" y="0" width="30%" height="13%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="45%" height="100%" color="{clrTransBlueLight}" />
+        </area>
+    </background>
+
+    <backgroundmodeonly>
+        <!-- background small infobar -->
+        <area x="25%" y="85%" width="50%" height="10%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </backgroundmodeonly>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="70%" y="0" width="13%" height="13%" layer="2">
+            <drawtext align="right" y="0" font="{light}" fontsize="50%" color="{clrWhite}" text="{dayname}" />
+            <drawtext align="right" y="48%" font="{light}" fontsize="50%" color="{clrWhite}" text="{day}. {monthnameshort}" />
+        </area>
+        <area x="85%" y="0" width="13%" height="13%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasPoster}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{isbanner}" x="0" y="0" width="{areaheight}*0.13*{mediawidth}/{mediaheight}" height="13%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center"  width="{areawidth}" height="{areaheight}"/>
+        </area>
+        <area condition="not{isbanner}" x="0" y="0" width="{areaheight}*0.5*{mediawidth}/{mediaheight}" height="50%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" x="5" y="5" width="{areawidth}-10" height="{areaheight}-10"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables rectitle:
+    {rectitle}                     Title of Recording
+    {recsubtitle}                  Subtitle of the Recording
+    {recdate}                      Date Recording in dd.mm.yy
+    {rectime}                      Time of Recording in hh:mm
+    -->
+    <rectitle>
+        <area x="1%" y="80%" width="69%" height="8%" layer="2">
+            <drawtext x="0" name="title" valign="center" width="{areawidth}" font="{semibold}" fontsize="85%" color="{clrBlueLight}" text="{rectitle}" />
+            <drawtext x="{width(title)}+10" valign="center" width="{areawidth}-{width(title)}-10" font="{light}" fontsize="85%" color="{clrWhite}" text="{recsubtitle}" />
+        </area>
+    </rectitle>
+
+    <!-- Available Variables recinfo:
+    {screenwidth}                      width of currently displayed recording in px
+    {screenheight}                     height of currently displayed recording in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <recinfo>
+        <area x="70%" y="80%" width="29%" height="8%" layer="2">
+           <!-- widescreen icon -->
+            <drawimage name="widescreen" condition="{isWideScreen}" imagetype="icon" path="ico_widescreen_on" x="{areawidth} - {width(widescreen)}" valign="center" width="{areaheight}*0.8*1.87" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isWideScreen}" imagetype="icon" path="ico_widescreen_off" x="{areawidth} - {width(widescreen)}" valign="center" width="{areaheight}*0.8*1.87" height="{areaheight}*0.8"/>
+            <!-- hd/sd icon -->
+            <drawimage name="hd" condition="{isHD}" imagetype="icon" path="ico_hd_on" x="{posx(widescreen)} - 15 - {width(hd)}" valign="center" width="{areaheight}*0.8*2.04" height="{areaheight}*0.8"/>
+            <drawimage condition="not{isHD}" imagetype="icon" path="ico_hd_off" x="{posx(widescreen)} - 15 - {width(hd)}" valign="center" width="{areaheight}*0.8*2.04" height="{areaheight}*0.8"/>
+            <!-- screenresolution text -->
+            <drawtext name="reslabel" x="{posx(hd)} - 30 - {width(reslabel)}" valign="center" font="{light}" fontsize="60%" color="{clrWhite}" text="{screenwidth}x{screenheight}" />
+        </area>
+    </recinfo>
+
+    <!-- Available Variables currenttime:
+    {reccurrent}                   Current Time in hh:mm:ss
+    -->
+    <currenttime>
+        <area x="1%" y="92%" width="30%" height="7%" layer="2">
+            <drawtext x="0" valign="center" font="{light}" fontsize="100%" color="{clrTransBlueLight}" text="{reccurrent}" />
+        </area>
+    </currenttime>
+
+    <!-- Available Variables totaltime:
+    {rectotal}                   Total Time in hh:mm:ss
+    -->
+    <totaltime>
+        <area x="69%" y="92%" width="30%" height="7%" layer="2">
+            <drawtext align="right" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{rectotal}" />
+        </area>
+    </totaltime>
+
+    <!-- Available Variables progressbar:
+    {current}                   current frame of recording
+    {total}                     total frames of recording
+    -->
+    <progressbar>
+        <area x="5%" y="89%" width="90%" height="3%" layer="2">
+            <fill color="{clrDarkGray}" />
+            <drawrectangle x="0" y="0" width="{current}/{total}*{areawidth}" height="100%" color="{clrTransBlueLight}" />
+        </area>
+    </progressbar>
+
+    <!-- Available Variables cutmarks:
+    {marks[]}                   array of available marks
+    {marks[position]}           frame of current mark
+    {marks[endposition]}        frame where startmark ends
+    {marks[total]}              total number of frames
+    {marks[active]}             true if current replay position hits exactly the mark
+    {marks[startmark]}          true if mark is start mark
+    -->
+    <cutmarks>
+        <area x="5%" y="89%" width="90%" height="3%" layer="3">
+            <loop name="marks" x="0" y="0" orientation="absolute">
+                <!-- draw mark -->
+                <drawrectangle condition="not{marks[active]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="1" height="100%" color="{clrWhite}" />
+                <drawrectangle condition="not{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="5" height="1" color="{clrWhite}" />
+                <drawrectangle condition="not{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="{areaheight}-1" width="5" height="1" color="{clrWhite}" />
+                <drawrectangle condition="not{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="0" width="5" height="1" color="{clrWhite}" />
+                <drawrectangle condition="not{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="{areaheight}-1" width="5" height="1" color="{clrWhite}" />
+                <!-- draw active mark -->
+                <drawrectangle condition="{marks[active]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="1" height="100%" color="{clrRed}" />
+                <drawrectangle condition="{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="5" height="1" color="{clrRed}" />
+                <drawrectangle condition="{marks[active]} ++ {marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="{areaheight}-1" width="5" height="1" color="{clrRed}" />
+                <drawrectangle condition="{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="0" width="5" height="1" color="{clrRed}" />
+                <drawrectangle condition="{marks[active]} ++ not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="{areaheight}-1" width="5" height="1" color="{clrRed}" />
+                <!-- draw bar to next mark if mark is startmark-->                
+                <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="30%" width="{marks[endposition]}/{marks[total]}*{areawidth} - {marks[position]}/{marks[total]}*{areawidth}" height="40%" color="{clrWhite}" />
+            </loop>
+        </area>
+    </cutmarks>
+
+    <!-- Available Variables controlicons and controliconsmodeonly:
+    {play}              true if recording is played currently
+    {pause}             true if recording is paused
+    {forward}           true if fast forwarding 
+    {forward1x}         true if fast forwarding 1x (with 3 trickspeeds)
+    {forward2x}         true if fast forwarding 2x (with 3 trickspeeds)
+    {forward3x}         true if fast forwarding 3x (with 3 trickspeeds)
+    {rewind}            true if rewinding 
+    {rewind1x}          true if rewinding 1x (with 3 trickspeeds)
+    {rewind2x}          true if rewinding 2x (with 3 trickspeeds)
+    {rewind3x}          true if rewinding 3x (with 3 trickspeeds)
+    -->
+    <controlicons>
+        <area x="30%" y="93%" width="40%" height="7%" layer="3">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_rew_off" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_rew" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_rew_1x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_rew_2x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_rew_3x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_off" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_off" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_ff_off" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_ff" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_ff_1x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_ff_2x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_ff_3x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </controlicons>
+
+    <controliconsmodeonly>
+        <area x="25%" y="85%" width="50%" height="10%" layer="3">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_rew_off" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_rew" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_rew_1x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_rew_2x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_rew_3x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_off" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_off" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_ff_off" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_ff" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_ff_1x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_ff_2x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_ff_3x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </controliconsmodeonly>
+
+    <!-- Available Variables jump:
+    {jump}                      time to jump to in hh:mm
+    -->
+    <jump>
+        <area x="35%" y="45%" width="30%" height="10%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="35%" y="45%" width="30%" height="10%" layer="2">
+            <drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{jump}" />
+        </area>
+    </jump>
+
+    <!-- Available Variables onpause and onpausemodeonly:
+    {name}                    title of recording
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb    
+    -->
+    <onpause delay="60" fadetime="{fadeTime}">
+        <area x="0" y="0" width="100%" height="100%" layer="7">
+            <fill color="{clrSemiTransBlack}" />
+        </area>
+    </onpause>
+
+    <onpausemodeonly delay="20" fadetime="{fadeTime}">
+        <area x="0" y="0" width="100%" height="100%" layer="7">
+            <fill color="{clrSemiTransBlack}" />
+        </area>
+        <area x="0" y="0" width="100%" height="100%" layer="6">
+            <drawtext align="center" valign="center" font="{semibold}" fontsize="25%" color="{clrWhite}" text="{tr(pause)}" />
+            <drawimage condition="{isseries}" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesbanner1height} / {seriesbanner1width}"/>
+            <drawimage condition="{ismovie}" imagetype="image" path="{posterpath}" x="10" y="10" width="{areaheight} * 0.4  * {posterwidth} / {posterheight}" height="{areaheight} * 0.4"/>
+        </area>
+    </onpausemodeonly>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="10%" y="45%" width="80%" height="10%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle condition="{status}" x="20" y="0" width="20" height="100%" color="{clrGreen}" />
+            <drawrectangle condition="{info}" x="20" y="0" width="20" height="100%" color="{clrBlue}" />
+            <drawrectangle condition="{warning}" x="20" y="0" width="20" height="100%" color="{clrYellow}" />
+            <drawrectangle condition="{error}" x="20" y="0" width="20" height="100%" color="{clrRed}" />
+            <drawtext align="center" valign="center" width="{areawidth} - 80" font="{light}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+</displayreplay>
diff --git a/skins/metrixhd/xmlfiles/displayvolume.xml b/skins/metrixhd/xmlfiles/displayvolume.xml
new file mode 100644
index 0000000..604f7e5
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/displayvolume.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayvolume SYSTEM "../../../dtd/displayvolume.dtd">
+
+<displayvolume x="20%" y="75%" width="60%" height="20%" fadetime="{fadetime}">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+    <!-- Available Variables volume:
+    {volume}                            current volume, range from 0 to 255
+    {volpercent}                        current volume in %
+    {maxvolume}                         maximal volume
+    {mute}                              true if volume is muted
+    -->
+    <volume>
+        <area x="0" y="0" width="100%" height="50%" layer="2">
+            <drawtext x="10" valign="center" font="{light}" fontsize="100%" color="{clrWhite}" text="{tr(volume)}: {volpercent}%" />
+            <drawimage condition="not{mute}" imagetype="icon" path="ico_volume" x="{areawidth} - {areaheight} - 5" y="5" width="{areaheight}-5" height="{areaheight}-5"/>
+            <drawimage condition="{mute}" imagetype="icon" path="ico_mute" x="{areawidth} - {areaheight} - 5" y="5" width="{areaheight}-5" height="{areaheight}-5"/>
+        </area>
+        <area x="5%" y="60%" width="90%" height="30%" layer="2">
+            <fill color="{clrDarkGray}" />
+            <drawrectangle x="0" y="0" width="{volume}/{maxvolume}*{areawidth}" height="100%" color="{clrTransBlueLight}" />
+        </area>        
+    </volume>
+
+</displayvolume>
diff --git a/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecast.xml b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecast.xml
new file mode 100644
index 0000000..e4f4960
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecast.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <!-- background left Menu -->
+        <area x="0" y="0" width="50%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <!-- background right detail view -->
+        <area x="50%" y="3%" width="50%" height="94%" layer="1">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    -->
+    <header>
+        <area x="0" y="0" width="50%" height="10%" layer="2">
+            <drawtext condition="not{hasicon}" x="5" width="{areawidth}-10" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage condition="{hasicon}" name="menuicon" imagetype="menuicon" path="{icon}" x="5" valign="center" width="{areaheight}*8/10" height="80%"/>
+            <drawtext condition="{hasicon}" x="{areaheight}" valign="center" width="{areawidth}-{areaheight}-10" font="{light}" fontsize="80%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+
+    <colorbuttons>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </colorbuttons>
+
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="10">
+        <!-- Available Variables:
+        {current}
+        {menuitemtext}                      "Current Weather", "Next 48 hours" or "Next 7 days"
+        {iscurrent}                         true if item is "Current Weather"
+        {ishourly}                          true if item is "Next 48 hours"
+        {isdaily}                           true if item is "Next 7 days"
+        {city}                              configured city to display weather for
+        {latitude}                          latitude
+        {longitude}                         longitude
+        
+        If {iscurrent} is true, the following tokens are set:
+        {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+        {temperature}                       current temperature in °C
+        {apparenttemperature}               apparent (felt) temperature in °C
+        {summary}                           short summary of current weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+        {precipitationintensity}            precipitation intensity in l/qm    
+        {precipitationprobability}          precipitation probability in %
+        {precipitationtype}                 precipitation type (snow, ...)
+        {humidity}                          humidity in %
+        {windspeed}                         wind speed in km/h
+        {windbearing}                       wind bearing in degrees
+        {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+        {visibility}                        visibility in km
+        {cloudcover}                        cloud cover in %
+        {pressure}                          pressure in HPa
+        {ozone}                             Ozone in DU (Dobson Unit)
+
+        If {ishourly} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {hourly[]}                          array with up to 48 hourly forecasts
+        {hourly[num]}                       number of forecast, starting at 1
+        {hourly[timestamp]}                 timestamp in hh:mm
+        {hourly[temperature]}               temperature in °C
+        {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+        {hourly[summary]}                   short summary
+        {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+        {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+        {hourly[precipitationprobability]}  precipitation probability in %
+        {hourly[precipitationtype]}         precipitation type (snow, ...)
+        {hourly[humidity]}                  humidity in %
+        {hourly[windspeed]}                 wind speed in km/h
+        {hourly[windbearing]}               wind bearing in degrees
+        {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+        {hourly[visibility]}                visibility in km
+        {hourly[cloudcover]}                cloud cover in %
+        {hourly[pressure]}                  pressure in HPa
+        {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+
+        If {isdaily} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {daily[day]}                        day of forecast in dd.mm
+        {daily[dayname]}                    three letter abbrivated day name
+        {daily[temperaturemin]}             minimum temperature at this day in °C
+        {daily[temperaturemintime]}         time of minimum temperature
+        {daily[temperaturemax]}             maximum temperature at this day in °C
+        {daily[temperaturemaxtime]}         time of maximum temperature
+        {daily[summary]}                    short summary
+        {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+        {daily[precipitationintensity]}     precipitation intensity in l/qm    
+        {daily[precipitationprobability]}   precipitation probability in %
+        {daily[precipitationtype]}          precipitation type (snow, ...)
+        {daily[humidity]}                   humidity in %
+        {daily[windspeed]}                  wind speed in km/h
+        {daily[windbearing]}                wind bearing in degrees
+        {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+        {daily[visibility]}                 visibility in km
+        {daily[cloudcover]}                 cloud cover in %
+        {daily[pressure]}                   pressure in HPa
+        {daily[ozone]}                      Ozone in DU (Dobson Unit)
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="46%" layer="2">
+                <fill condition="not{current}" color="{clrTransparent}" />
+                <fill condition="{current}" color="{clrTransBlueLight}" />
+            </area>
+            <area x="1%" width="46%" layer="3">
+                <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{menuitemtext}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- All Tokens from listelement are available -->
+        <currentelement delay="100" fadetime="0">
+            <area condition="{iscurrent}" x="51%" y="0" width="48%" height="100%" layer="3">
+                <drawimage name="weathericon" imagetype="icon" path="{icon}" x="2%" y="0" width="{areawidth}*0.3" height="{areawidth}*0.3"/>
+                <drawtext align="right" y="0" font="{semibold}" fontsize="8%" color="{clrWhite}" text="{city}" />
+                <drawtext align="right" y="7%" font="{light}" fontsize="8%" color="{clrWhite}" text="{timestamp}" />
+                <drawtext align="right" y="13%" font="{light}" fontsize="18%" color="{clrWhite}" text="{temperature}°C" />
+                <drawtext align="right" y="28%" font="{light}" fontsize="8%" color="{clrWhite}" text="{summary}" />
+                <drawtext x="0" y="40%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature} °C" />
+                <drawtext x="0" y="46%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %" />
+                <drawtext x="0" y="52%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+                <drawtext x="0" y="58%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %" />
+                <drawtext x="0" y="64%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h" />
+                <drawtext x="0" y="70%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(windbearing)}: {windbearingstring}  ({windbearing} °)" />
+                <drawtext x="0" y="76%" font="{light}" fontsize="6%" color="{clrWhite}" text="{tr(cloudcover)}: {cloudcover} %" />
+            </area>
+            <area condition="{ishourly}" x="51%" y="0" width="48%" height="100%" layer="3">
+                <loop name="hourly" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/12" overflow="cut">
+                    <drawtext x="0" font="{semibold}" fontsize="7%" valign="center" color="{clrWhite}" text="{hourly[timestamp]}" />
+                    <drawimage imagetype="icon" path="{hourly[icon]}" x="18%" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+                    <drawtext x="30%" font="{light}" fontsize="7%" valign="center" color="{clrWhite}" text="{hourly[temperature]}°C" />
+                    <drawtext x="48%" font="{light}" fontsize="5%" valign="center" width="52%" color="{clrWhite}" text="{hourly[summary]}" />
+                    <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+                </loop>
+            </area>
+            <area condition="{isdaily}" x="51%" y="0" width="48%" height="100%" layer="3">
+                <loop name="daily" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/7" overflow="cut">
+                    <drawtext x="0" font="{semibold}" fontsize="{rowheight}/2" y="5" color="{clrWhite}" text="{daily[dayname]} {daily[day]}" />
+                    <drawtext x="35%" font="{light}" fontsize="{rowheight}/2" y="5" color="{clrWhite}" text="{daily[temperaturemin]}°C - {daily[temperaturemax]}°C" />
+                    <drawtext x="0" font="{light}" fontsize="{rowheight}*0.3" width="{columnwidth} - {rowheight}*0.7" y="{rowheight}*0.6" color="{clrWhite}" text="{daily[summary]}" />
+                    <drawimage imagetype="icon" path="{daily[icon]}" x="{columnwidth} - {rowheight}*0.7" valign="center" width="{rowheight}*0.7" height="{rowheight}*0.7"/>
+                    <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+                </loop>
+            </area>
+        </currentelement>
+    </menuitems>
+</menuplugin>
diff --git a/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
new file mode 100644
index 0000000..4932759
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+     <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+
+    <colorbuttons>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </colorbuttons>
+
+   <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader and tab:
+    {menuheader}                        "Current Weather"
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+    {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+    {temperature}                       current temperature in °C
+    {apparenttemperature}               apparent (felt) temperature in °C
+    {temperaturemin}                    minimum temperature the day in °C
+    {temperaturemax}                    maximum temperature the day in °C
+    {summary}                           short summary of current weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {precipitationintensity}            precipitation intensity in l/qm    
+    {precipitationprobability}          precipitation probability in %
+    {precipitationtype}                 precipitation type (snow, ...)
+    {humidity}                          humidity in %
+    {windspeed}                         wind speed in km/h
+    {windbearing}                       wind bearing in degrees
+    {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+    {visibility}                        visibility in km
+    {cloudcover}                        cloud cover in %
+    {pressure}                          pressure in HPa
+    {ozone}                             Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="3">
+            <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="{menuheader}" />
+        </area>
+        <area x="{areawidth} - {areaheight}*0.2" y="0" width="{areaheight}*0.2" height="20%" layer="4">
+            <drawimage imagetype="icon" path="{icon}" align="center" valign="center" width="90%" height="90%"/>
+        </area>
+        <area x="{areawidth} - {areaheight}*0.6" y="0" width="{areaheight}*0.35" height="20%" layer="4">
+            <drawtext align="right" valign="center" font="{light}" fontsize="90%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext x="0" y="0" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{tr(conditions)} {tr(for)} {city} ({latitude}, {longitude}):" />
+        <drawtext x="0" y="10%" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{summary}" />
+        <drawtext x="0" y="25%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(temp)}: {temperature}°C" />
+        <drawtext x="0" y="35%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature}°C" />
+        <drawtext x="0" y="45%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(todaymin)}: {mintemperature}°C, {tr(todaymax)}: {maxtemperature}°C" />
+        <drawtext x="0" y="55%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %" />
+        <drawtext x="0" y="65%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+        <drawtext x="0" y="75%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %" />
+        <drawtext x="0" y="85%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h aus {windbearingstring}" />
+        <drawtext x="0" y="95%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(visibility)}: {visibility} km" />
+        <drawtext x="0" y="105%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(cloudcover)}: {cloudcover} %" />
+        <drawtext x="0" y="115%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(pressure)}: {pressure} HPa" />
+        <drawtext x="0" y="125%" font="{light}" fontsize="10%" color="{clrWhite}" text="{tr(ozone)}: {ozone} DU" />
+    </tab>
+</menuplugin>
diff --git a/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
new file mode 100644
index 0000000..10b588c
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+     <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+
+    <colorbuttons>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </colorbuttons>
+
+   <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {daily[day]}                        day of forecast in dd.mm
+    {daily[dayname]}                    three letter abbrivated day name
+    {daily[temperaturemin]}             minimum temperature at this day in °C
+    {daily[temperaturemintime]}         time of minimum temperature
+    {daily[temperaturemax]}             maximum temperature at this day in °C
+    {daily[temperaturemaxtime]}         time of maximum temperature
+    {daily[summary]}                    short summary
+    {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+    {daily[precipitationintensity]}     precipitation intensity in l/qm    
+    {daily[precipitationprobability]}   precipitation probability in %
+    {daily[precipitationtype]}          precipitation type (snow, ...)
+    {daily[humidity]}                   humidity in %
+    {daily[windspeed]}                  wind speed in km/h
+    {daily[windbearing]}                wind bearing in degrees
+    {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+    {daily[visibility]}                 visibility in km
+    {daily[cloudcover]}                 cloud cover in %
+    {daily[pressure]}                   pressure in HPa
+    {daily[ozone]}                      Ozone in DU (Dobson Unit)
+    -->
+
+    <detailheader>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="3">
+            <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="{menuheader}" />
+        </area>
+        <area x="{areawidth} - {areaheight}*0.2" y="0" width="{areaheight}*0.2" height="20%" layer="4">
+            <drawimage imagetype="icon" path="{icon}" align="center" valign="center" width="90%" height="90%"/>
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+       <drawtextbox name="summary" x="0" y="5%" width="{areawidth}" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{summary}" />
+       <drawrectangle x="0" y="{height(summary)}" width="{areawidth}" height="1" color="{clrWhite}" />
+       <loop name="daily" x="0" y="{height(summary)}" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/5">
+            <drawtext x="0" font="{semibold}" fontsize="9%" valign="center" color="{clrWhite}" text="{daily[dayname]} {daily[day]}" />
+            <drawimage imagetype="icon" path="{daily[icon]}" x="2*{rowheight}" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+            <drawtext x="3.5*{rowheight}" font="{light}" fontsize="{rowheight}*0.3" y="0" color="{clrWhite}" text="{daily[temperaturemin]}°C - {daily[temperaturemax]}°C   ({tr(max)} {daily[temperaturemaxtime]}, {tr(min)} {daily[temperaturemintime]})" />
+            <drawtext x="3.5*{rowheight}" font="{light}" fontsize="{rowheight}/4" y="{rowheight}*0.25" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{daily[summary]}" />
+            <drawtext x="3.5*{rowheight}" font="{light}" fontsize="{rowheight}/4" y="{rowheight}*0.5" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{tr(precipitationprobability)} {daily[precipitationprobability]}%, {daily[precipitationintensity]} l/qm, {tr(windspeed)} {daily[windspeed]} km/h {tr(from)} {daily[windbearingstring]}" />
+            <drawtext x="3.5*{rowheight}" font="{light}" fontsize="{rowheight}/4" y="{rowheight}*0.75" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{tr(cloudcover)} {daily[cloudcover]}%, {tr(visibility)} {daily[visibility]} km, {tr(pressure)} {daily[pressure]} HPa, {tr(ozone)} {daily[ozone]} DU" />
+            <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
new file mode 100644
index 0000000..c21c62a
--- /dev/null
+++ b/skins/metrixhd/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+     <header>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </header>
+
+    <datetime>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </datetime>
+
+    <colorbuttons>
+        <area x="0" y="0" width="1" height="1" layer="1">
+            <fill color="{clrTransparent}" />
+        </area>
+    </colorbuttons>
+
+   <scrollbar>
+        <area x="98%" y="20%" width="2%" height="65%" layer="3">
+            <fill color="{clrWhite}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" />
+        </area>
+    </scrollbar>
+    
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {hourly[]}                          array with up to 48 hourly forecasts
+    {hourly[num]}                       number of forecast, starting at 1
+    {hourly[timestamp]}                 timestamp in hh:mm
+    {hourly[temperature]}               temperature in °C
+    {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+    {hourly[summary]}                   short summary
+    {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+    {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+    {hourly[precipitationprobability]}  precipitation probability in %
+    {hourly[precipitationtype]}         precipitation type (snow, ...)
+    {hourly[humidity]}                  humidity in %
+    {hourly[windspeed]}                 wind speed in km/h
+    {hourly[windbearing]}               wind bearing in degrees
+    {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+    {hourly[visibility]}                visibility in km
+    {hourly[cloudcover]}                cloud cover in %
+    {hourly[pressure]}                  pressure in HPa
+    {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="0" y="0" width="100%" height="20%" layer="2">
+            <fill color="{clrTransBlueLight}" />
+        </area>
+        <area x="0" y="0" width="100%" height="20%" layer="3">
+            <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="{menuheader}" />
+        </area>
+        <area x="{areawidth} - {areaheight}*0.2" y="0" width="{areaheight}*0.2" height="20%" layer="4">
+            <drawimage imagetype="icon" path="{icon}" align="center" valign="center" width="70%" height="70%"/>
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox name="summary" x="0" y="5%" width="{areawidth}" font="{semibold}" fontsize="10%" color="{clrWhite}" text="{summary}" />
+        <drawrectangle x="0" y="{height(summary)}" width="{areawidth}" height="1" color="{clrWhite}" />
+        <loop name="hourly" x="0" y="{height(summary)}" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/5">
+            <drawtext x="0" font="{semibold}" fontsize="9%" valign="center" color="{clrWhite}" text="{hourly[timestamp]}" />
+            <drawimage imagetype="icon" path="{hourly[icon]}" x="{rowheight}" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+            <drawtext name="temp" x="2*{rowheight} + 0.75*{rowheight} - {width(temp)}/2" font="{light}" fontsize="13%" y="0" color="{clrWhite}" text="{hourly[temperature]}°C" />
+            <drawtext name="felt" x="2*{rowheight} + 0.75*{rowheight} - {width(felt)}/2" font="{light}" fontsize="6%" y="{rowheight}*0.6" color="{clrWhite}" text="{tr(felt)} {hourly[apparenttemperature]}°C" />
+            <drawtext x="4*{rowheight}" font="{light}" fontsize="{rowheight}/3" y="0" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{hourly[summary]}" />
+            <drawtext x="4*{rowheight}" font="{light}" fontsize="{rowheight}/3" y="{rowheight}/3" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{tr(precipitationprobability)} {hourly[precipitationprobability]}%, {hourly[precipitationintensity]} l/qm" />
+            <drawtext x="4*{rowheight}" font="{light}" fontsize="{rowheight}/3" y="{rowheight}*2/3" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{tr(windspeed)} {hourly[windspeed]} km/h {tr(from)} {hourly[windbearingstring]}" />
+            <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skins/nopacity/globals.xml b/skins/nopacity/globals.xml
new file mode 100644
index 0000000..0a6e473
--- /dev/null
+++ b/skins/nopacity/globals.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+        <token name="tr(free)">
+            <trans lang="en_EN">free</trans>
+            <trans lang="de_DE">frei</trans>
+        </token>
+        <token name="tr(transponder)">
+            <trans lang="en_EN">Transponder</trans>
+            <trans lang="de_DE">Transponder</trans>
+        </token>
+        <token name="tr(now)">
+            <trans lang="en_EN">Now</trans>
+            <trans lang="de_DE">Jetzt</trans>
+        </token>
+        <token name="tr(next)">
+            <trans lang="en_EN">Next</trans>
+            <trans lang="de_DE">Nachfolgend</trans>
+        </token>
+        <token name="tr(nextschedules)">
+            <trans lang="en_EN">Next Schedules</trans>
+            <trans lang="de_DE">Nachfolgende Sendungen</trans>
+        </token>
+        <token name="tr(reruns)">
+            <trans lang="en_EN">Reruns</trans>
+            <trans lang="de_DE">Wiederholungen</trans>
+        </token>
+        <token name="tr(rerunsof)">
+            <trans lang="en_EN">Reruns of</trans>
+            <trans lang="de_DE">Wiederholungen von</trans>
+        </token>
+        <token name="tr(actors)">
+            <trans lang="en_EN">Actors</trans>
+            <trans lang="de_DE">Schauspieler</trans>
+        </token>
+        <token name="tr(episode)">
+            <trans lang="en_EN">Episode</trans>
+            <trans lang="de_DE">Folge</trans>
+        </token>
+        <token name="tr(season)">
+            <trans lang="en_EN">Season</trans>
+            <trans lang="de_DE">Staffel</trans>
+        </token>
+        <token name="tr(gueststars)">
+            <trans lang="en_EN">Guest Stars</trans>
+            <trans lang="de_DE">Gaststars</trans>
+        </token>
+        <token name="tr(seriesfirstaired)">
+            <trans lang="en_EN">Series First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Serie</trans>
+        </token>
+        <token name="tr(episodefirstaired)">
+            <trans lang="en_EN">Episode First Aired</trans>
+            <trans lang="de_DE">Erstausstrahlung der Episode</trans>
+        </token>
+        <token name="tr(network)">
+            <trans lang="en_EN">Network</trans>
+            <trans lang="de_DE">TV Station</trans>
+        </token>
+        <token name="tr(genre)">
+            <trans lang="en_EN">Genre</trans>
+            <trans lang="de_DE">Genre</trans>
+        </token>
+        <token name="tr(status)">
+            <trans lang="en_EN">Status</trans>
+            <trans lang="de_DE">Status</trans>
+        </token>
+        <token name="tr(rating)">
+            <trans lang="en_EN">Rating</trans>
+            <trans lang="de_DE">Bewertung</trans>
+        </token>
+        <token name="tr(episoderating)">
+            <trans lang="en_EN">Episode Rating</trans>
+            <trans lang="de_DE">Bewertung der Folge</trans>
+        </token>
+        <token name="tr(recinfo)">
+            <trans lang="en_EN">Recording Information</trans>
+            <trans lang="de_DE">Aufnahme Informationen</trans>
+        </token>
+        <token name="tr(seriesgalery)">
+            <trans lang="en_EN">Series Galery</trans>
+            <trans lang="de_DE">Serien Galerie</trans>
+        </token>
+        <token name="tr(moviegalery)">
+            <trans lang="en_EN">Movie Galery</trans>
+            <trans lang="de_DE">Spielfilm Galerie</trans>
+        </token>
+        <token name="tr(originaltitle)">
+            <trans lang="en_EN">Original Title</trans>
+            <trans lang="de_DE">Originaltitel</trans>
+        </token>
+        <token name="tr(budget)">
+            <trans lang="en_EN">Budget</trans>
+            <trans lang="de_DE">Budget</trans>
+        </token>
+        <token name="tr(revenue)">
+            <trans lang="en_EN">Revenue</trans>
+            <trans lang="de_DE">Einnahmen</trans>
+        </token>
+        <token name="tr(adult)">
+            <trans lang="en_EN">Adult</trans>
+            <trans lang="de_DE">Nur für Erwachsene</trans>
+        </token>
+        <token name="tr(releasedate)">
+            <trans lang="en_EN">Release Date</trans>
+            <trans lang="de_DE">Erscheinungsdatum</trans>
+        </token>
+        <token name="tr(runtime)">
+            <trans lang="en_EN">Runtime</trans>
+            <trans lang="de_DE">Laufzeit</trans>
+        </token>
+        <token name="tr(popularity)">
+            <trans lang="en_EN">Popularity</trans>
+            <trans lang="de_DE">Popularität</trans>
+        </token>
+        <token name="tr(voteaverage)">
+            <trans lang="en_EN">Vote Average</trans>
+            <trans lang="de_DE">Durchschnittliche Wertung</trans>
+        </token>
+        <token name="tr(homepage)">
+            <trans lang="en_EN">Homepage</trans>
+            <trans lang="de_DE">Homepage</trans>
+        </token>
+        <token name="tr(recsize)">
+            <trans lang="en_EN">Recording size</trans>
+            <trans lang="de_DE">Größe der Aufnahme</trans>
+        </token>
+        <token name="tr(recsizecutted)">
+            <trans lang="en_EN">Cutted Recording Size</trans>
+            <trans lang="de_DE">Größe der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(reclength)">
+            <trans lang="en_EN">Recording Length</trans>
+            <trans lang="de_DE">Länge der Aufnahme</trans>
+        </token>
+        <token name="tr(reclengthcutted)">
+            <trans lang="en_EN">Cutted Recording Length</trans>
+            <trans lang="de_DE">Länge der geschnittenen Aufnahme</trans>
+        </token>
+        <token name="tr(bitrate)">
+            <trans lang="en_EN">Bit Rate</trans>
+            <trans lang="de_DE">Bitrate</trans>
+        </token>
+        <token name="tr(format)">
+            <trans lang="en_EN">Format</trans>
+            <trans lang="de_DE">Format</trans>
+        </token>
+        <token name="tr(searchtimer)">
+            <trans lang="en_EN">Searchtimer</trans>
+            <trans lang="de_DE">Suchtimer</trans>
+        </token>
+        <token name="tr(volume)">
+            <trans lang="en_EN">Volume</trans>
+            <trans lang="de_DE">Lautstärke</trans>
+        </token>
+        <token name="tr(pause)">
+            <trans lang="en_EN">Pause</trans>
+            <trans lang="de_DE">Pause</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(todaymin)">
+            <trans lang="en_EN">minimum today</trans>
+            <trans lang="de_DE">heutiges Minimum</trans>
+        </token>
+        <token name="tr(todaymax)">
+            <trans lang="en_EN">maximum today</trans>
+            <trans lang="de_DE">heutiges Maximum</trans>
+        </token>
+        <token name="tr(precipitationprobability)">
+            <trans lang="en_EN">Precipitation Prob.</trans>
+            <trans lang="de_DE">Regenwahrsch.</trans>
+        </token>
+        <token name="tr(precipitationintensity)">
+            <trans lang="en_EN">Precipitation Intensity</trans>
+            <trans lang="de_DE">Regenmenge</trans>
+        </token>
+        <token name="tr(humidity)">
+            <trans lang="en_EN">Humidity</trans>
+            <trans lang="de_DE">Luftfeuchtigkeit</trans>
+        </token>
+        <token name="tr(apparenttemp)">
+            <trans lang="en_EN">Felt Temperature</trans>
+            <trans lang="de_DE">Gefühlte Temperatur</trans>
+        </token>
+        <token name="tr(windbearing)">
+            <trans lang="en_EN">Wind Bearing</trans>
+            <trans lang="de_DE">Windrichtung</trans>
+        </token>
+        <token name="tr(windspeed)">
+            <trans lang="en_EN">Wind Speed</trans>
+            <trans lang="de_DE">Windgeschwindigkeit</trans>
+        </token>
+        <token name="tr(cloudcover)">
+            <trans lang="en_EN">Cloud Cover</trans>
+            <trans lang="de_DE">Bewölkung</trans>
+        </token>
+        <token name="tr(pressure)">
+            <trans lang="en_EN">Pressure</trans>
+            <trans lang="de_DE">Luftdruck</trans>
+        </token>
+        <token name="tr(ozone)">
+            <trans lang="en_EN">Ozone</trans>
+            <trans lang="de_DE">Ozon</trans>
+        </token>
+        <token name="tr(visibility)">
+            <trans lang="en_EN">visibility</trans>
+            <trans lang="de_DE">Sicht</trans>
+        </token>
+        <token name="tr(conditions)">
+            <trans lang="en_EN">Weather Conditions</trans>
+            <trans lang="de_DE">Wetterlage</trans>
+        </token>
+        <token name="tr(from)">
+            <trans lang="en_EN">from</trans>
+            <trans lang="de_DE">aus</trans>
+        </token>
+        <token name="tr(felt)">
+            <trans lang="en_EN">felt</trans>
+            <trans lang="de_DE">gefühlt</trans>
+        </token>
+        <token name="tr(min)">
+            <trans lang="en_EN">min</trans>
+            <trans lang="de_DE">min</trans>
+        </token>
+        <token name="tr(max)">
+            <trans lang="en_EN">max</trans>
+            <trans lang="de_DE">max</trans>
+        </token>
+       <token name="tr(for)">
+            <trans lang="en_EN">for</trans>
+            <trans lang="de_DE">für</trans>
+        </token>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+    </fonts>
+</globals>
diff --git a/skins/nopacity/setup.xml b/skins/nopacity/setup.xml
new file mode 100644
index 0000000..6482021
--- /dev/null
+++ b/skins/nopacity/setup.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE setup SYSTEM "../../dtd/setup.dtd">
+
+<setup>
+    <menu>
+        <parameter type="bool" name="showposter" displaytext="{tr(showpostertext)}">1</parameter>
+        <parameter type="bool" name="showweather" displaytext="{tr(showweather)}">1</parameter>
+        <parameter type="int" name="fadeTime" min="0" max="1000" displaytext="{tr(fadeText)}">300</parameter>
+        <parameter type="int" name="transparency" min="0" max="30" displaytext="{tr(transparency)}">20</parameter>
+    </menu>
+
+    <translations>
+        <token name="tr(showpostertext)">
+            <trans lang="en_EN">Show Poster when switching channel</trans>
+            <trans lang="de_DE">Poster beim Umschalten anzeigen</trans>
+        </token>       
+        <token name="tr(showweather)">
+            <trans lang="en_EN">Show Weather in infobar</trans>
+            <trans lang="de_DE">Wetter in Infobar anzeigen</trans>
+        </token>
+        <token name="tr(fadeText)">
+            <trans lang="en_EN">Fade time in ms</trans>
+            <trans lang="de_DE">Einblendzeit in ms</trans>
+        </token>
+        <token name="tr(transparency)">
+            <trans lang="en_EN">Transpareny channel, replay and volume</trans>
+            <trans lang="de_DE">Transparenz bei Kanal,Wiedergabe und Lautstärke</trans>
+        </token>
+    </translations>
+</setup>
diff --git a/skins/nopacity/themes/darkred/icons/clear-day.png b/skins/nopacity/themes/darkred/icons/clear-day.png
new file mode 100644
index 0000000..2b06a14
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/clear-day.png differ
diff --git a/skins/nopacity/themes/darkred/icons/clear-night.png b/skins/nopacity/themes/darkred/icons/clear-night.png
new file mode 100644
index 0000000..9bbe49f
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/clear-night.png differ
diff --git a/skins/nopacity/themes/darkred/icons/cloudy.png b/skins/nopacity/themes/darkred/icons/cloudy.png
new file mode 100644
index 0000000..9870c7f
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/cloudy.png differ
diff --git a/skins/nopacity/themes/darkred/icons/fog.png b/skins/nopacity/themes/darkred/icons/fog.png
new file mode 100644
index 0000000..9bc88d2
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/fog.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ac3.png b/skins/nopacity/themes/darkred/icons/ico_ac3.png
new file mode 100644
index 0000000..5b8614a
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ac3.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_activetimer.png b/skins/nopacity/themes/darkred/icons/ico_activetimer.png
new file mode 100644
index 0000000..af4c33c
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_activetimer.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_arrow_left_channelsep.png b/skins/nopacity/themes/darkred/icons/ico_arrow_left_channelsep.png
new file mode 100644
index 0000000..2c83c46
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_arrow_left_channelsep.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_arrow_right_channelsep.png b/skins/nopacity/themes/darkred/icons/ico_arrow_right_channelsep.png
new file mode 100644
index 0000000..6ae7e00
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_arrow_right_channelsep.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_channelsep.png b/skins/nopacity/themes/darkred/icons/ico_channelsep.png
new file mode 100644
index 0000000..bf51238
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_channelsep.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_cutted.png b/skins/nopacity/themes/darkred/icons/ico_cutted.png
new file mode 100644
index 0000000..b90c9c1
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_cutted.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_daydelimiter.png b/skins/nopacity/themes/darkred/icons/ico_daydelimiter.png
new file mode 100644
index 0000000..7ae6053
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_daydelimiter.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_discusage.png b/skins/nopacity/themes/darkred/icons/ico_discusage.png
new file mode 100644
index 0000000..de1dfbb
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_discusage.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_dolbyoff.png b/skins/nopacity/themes/darkred/icons/ico_dolbyoff.png
new file mode 100644
index 0000000..895bd94
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_dolbyoff.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_dolbyon.png b/skins/nopacity/themes/darkred/icons/ico_dolbyon.png
new file mode 100644
index 0000000..555b409
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_dolbyon.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_encrypted.png b/skins/nopacity/themes/darkred/icons/ico_encrypted.png
new file mode 100644
index 0000000..8c7c351
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_encrypted.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ff.png b/skins/nopacity/themes/darkred/icons/ico_ff.png
new file mode 100644
index 0000000..b12409d
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ff.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ff_1x.png b/skins/nopacity/themes/darkred/icons/ico_ff_1x.png
new file mode 100644
index 0000000..f4ef710
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ff_1x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ff_2x.png b/skins/nopacity/themes/darkred/icons/ico_ff_2x.png
new file mode 100644
index 0000000..344a243
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ff_2x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ff_3x.png b/skins/nopacity/themes/darkred/icons/ico_ff_3x.png
new file mode 100644
index 0000000..05d29e8
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ff_3x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_ff_off.png b/skins/nopacity/themes/darkred/icons/ico_ff_off.png
new file mode 100644
index 0000000..cb551c2
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_ff_off.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_fta.png b/skins/nopacity/themes/darkred/icons/ico_fta.png
new file mode 100644
index 0000000..5e5a1c4
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_fta.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_hd1080i.png b/skins/nopacity/themes/darkred/icons/ico_hd1080i.png
new file mode 100644
index 0000000..8a44156
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_hd1080i.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_hd720p.png b/skins/nopacity/themes/darkred/icons/ico_hd720p.png
new file mode 100644
index 0000000..2fa9baf
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_hd720p.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_mute.png b/skins/nopacity/themes/darkred/icons/ico_mute.png
new file mode 100644
index 0000000..4eefc75
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_mute.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_pause.png b/skins/nopacity/themes/darkred/icons/ico_pause.png
new file mode 100644
index 0000000..fc9ce48
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_pause.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_pause_off.png b/skins/nopacity/themes/darkred/icons/ico_pause_off.png
new file mode 100644
index 0000000..f9a9d94
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_pause_off.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_play.png b/skins/nopacity/themes/darkred/icons/ico_play.png
new file mode 100644
index 0000000..0fa1c5a
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_play.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_play_off.png b/skins/nopacity/themes/darkred/icons/ico_play_off.png
new file mode 100644
index 0000000..7fb820a
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_play_off.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_recfolder.png b/skins/nopacity/themes/darkred/icons/ico_recfolder.png
new file mode 100644
index 0000000..e3df65b
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_recfolder.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_recnew.png b/skins/nopacity/themes/darkred/icons/ico_recnew.png
new file mode 100644
index 0000000..b9166ba
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_recnew.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_recoff.png b/skins/nopacity/themes/darkred/icons/ico_recoff.png
new file mode 100644
index 0000000..f7355aa
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_recoff.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_recon.png b/skins/nopacity/themes/darkred/icons/ico_recon.png
new file mode 100644
index 0000000..9dd4d10
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_recon.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_rew.png b/skins/nopacity/themes/darkred/icons/ico_rew.png
new file mode 100644
index 0000000..134da85
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_rew.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_rew_1x.png b/skins/nopacity/themes/darkred/icons/ico_rew_1x.png
new file mode 100644
index 0000000..ffb79b1
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_rew_1x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_rew_2x.png b/skins/nopacity/themes/darkred/icons/ico_rew_2x.png
new file mode 100644
index 0000000..00bbedd
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_rew_2x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_rew_3x.png b/skins/nopacity/themes/darkred/icons/ico_rew_3x.png
new file mode 100644
index 0000000..b683ed3
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_rew_3x.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_rew_off.png b/skins/nopacity/themes/darkred/icons/ico_rew_off.png
new file mode 100644
index 0000000..ce18386
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_rew_off.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_sd576i.png b/skins/nopacity/themes/darkred/icons/ico_sd576i.png
new file mode 100644
index 0000000..2e313aa
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_sd576i.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_stereo.png b/skins/nopacity/themes/darkred/icons/ico_stereo.png
new file mode 100644
index 0000000..7f3610d
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_stereo.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_stereooff.png b/skins/nopacity/themes/darkred/icons/ico_stereooff.png
new file mode 100644
index 0000000..abb2c80
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_stereooff.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_stereoon.png b/skins/nopacity/themes/darkred/icons/ico_stereoon.png
new file mode 100644
index 0000000..21c1b60
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_stereoon.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_timer_active.png b/skins/nopacity/themes/darkred/icons/ico_timer_active.png
new file mode 100644
index 0000000..28c2f81
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_timer_active.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_timer_inactive.png b/skins/nopacity/themes/darkred/icons/ico_timer_inactive.png
new file mode 100644
index 0000000..c4b1860
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_timer_inactive.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_timer_recording.png b/skins/nopacity/themes/darkred/icons/ico_timer_recording.png
new file mode 100644
index 0000000..86dc66b
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_timer_recording.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_txtoff.png b/skins/nopacity/themes/darkred/icons/ico_txtoff.png
new file mode 100644
index 0000000..e928a56
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_txtoff.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_txton.png b/skins/nopacity/themes/darkred/icons/ico_txton.png
new file mode 100644
index 0000000..0361835
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_txton.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_vdrlogo.png b/skins/nopacity/themes/darkred/icons/ico_vdrlogo.png
new file mode 100644
index 0000000..200cea7
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_vdrlogo.png differ
diff --git a/skins/nopacity/themes/darkred/icons/ico_volume.png b/skins/nopacity/themes/darkred/icons/ico_volume.png
new file mode 100644
index 0000000..3a72514
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/ico_volume.png differ
diff --git a/skins/nopacity/themes/darkred/icons/partly-cloudy-day.png b/skins/nopacity/themes/darkred/icons/partly-cloudy-day.png
new file mode 100644
index 0000000..b6df179
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/partly-cloudy-day.png differ
diff --git a/skins/nopacity/themes/darkred/icons/partly-cloudy-night.png b/skins/nopacity/themes/darkred/icons/partly-cloudy-night.png
new file mode 100644
index 0000000..aa358fb
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/partly-cloudy-night.png differ
diff --git a/skins/nopacity/themes/darkred/icons/rain.png b/skins/nopacity/themes/darkred/icons/rain.png
new file mode 100644
index 0000000..8275003
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/rain.png differ
diff --git a/skins/nopacity/themes/darkred/icons/sleet.png b/skins/nopacity/themes/darkred/icons/sleet.png
new file mode 100644
index 0000000..1d99ae0
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/sleet.png differ
diff --git a/skins/nopacity/themes/darkred/icons/snow.png b/skins/nopacity/themes/darkred/icons/snow.png
new file mode 100644
index 0000000..939e22f
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/snow.png differ
diff --git a/skins/nopacity/themes/darkred/icons/wind.png b/skins/nopacity/themes/darkred/icons/wind.png
new file mode 100644
index 0000000..d92ec15
Binary files /dev/null and b/skins/nopacity/themes/darkred/icons/wind.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Applikationen.png b/skins/nopacity/themes/darkred/menuicons/customicons/Applikationen.png
new file mode 100644
index 0000000..3c3b616
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Applikationen.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Audio.png b/skins/nopacity/themes/darkred/menuicons/customicons/Audio.png
new file mode 100644
index 0000000..ff387fe
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Audio.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Aufnahmen-Liste aktualisieren.png b/skins/nopacity/themes/darkred/menuicons/customicons/Aufnahmen-Liste aktualisieren.png
new file mode 100644
index 0000000..3cdddc9
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Aufnahmen-Liste aktualisieren.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Dienstprogramme.png b/skins/nopacity/themes/darkred/menuicons/customicons/Dienstprogramme.png
new file mode 100644
index 0000000..793aba6
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Dienstprogramme.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/FireFox.png b/skins/nopacity/themes/darkred/menuicons/customicons/FireFox.png
new file mode 100644
index 0000000..192fadc
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/FireFox.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Info.png b/skins/nopacity/themes/darkred/menuicons/customicons/Info.png
new file mode 100644
index 0000000..6737431
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Info.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Internet.png b/skins/nopacity/themes/darkred/menuicons/customicons/Internet.png
new file mode 100644
index 0000000..f3db150
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Internet.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Medien.png b/skins/nopacity/themes/darkred/menuicons/customicons/Medien.png
new file mode 100644
index 0000000..0ce2360
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Medien.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Rechner neu starten.png b/skins/nopacity/themes/darkred/menuicons/customicons/Rechner neu starten.png
new file mode 100644
index 0000000..5783ccf
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Rechner neu starten.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Remote wakeup.png b/skins/nopacity/themes/darkred/menuicons/customicons/Remote wakeup.png
new file mode 100644
index 0000000..1cd2f6e
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Remote wakeup.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Spiele.png b/skins/nopacity/themes/darkred/menuicons/customicons/Spiele.png
new file mode 100644
index 0000000..8e07161
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Spiele.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/System herunterfahren.png b/skins/nopacity/themes/darkred/menuicons/customicons/System herunterfahren.png
new file mode 100644
index 0000000..e0234df
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/System herunterfahren.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/System.png b/skins/nopacity/themes/darkred/menuicons/customicons/System.png
new file mode 100644
index 0000000..81d100e
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/System.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Tools.png b/skins/nopacity/themes/darkred/menuicons/customicons/Tools.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Tools.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Tunderbird.png b/skins/nopacity/themes/darkred/menuicons/customicons/Tunderbird.png
new file mode 100644
index 0000000..5ae27e0
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Tunderbird.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/USB Massenspeicher sicher entfernen.png b/skins/nopacity/themes/darkred/menuicons/customicons/USB Massenspeicher sicher entfernen.png
new file mode 100644
index 0000000..cd7b81c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/USB Massenspeicher sicher entfernen.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/VDR neu starten.png b/skins/nopacity/themes/darkred/menuicons/customicons/VDR neu starten.png
new file mode 100644
index 0000000..14904ca
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/VDR neu starten.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Video.png b/skins/nopacity/themes/darkred/menuicons/customicons/Video.png
new file mode 100644
index 0000000..490ca4b
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Video.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Web.png b/skins/nopacity/themes/darkred/menuicons/customicons/Web.png
new file mode 100644
index 0000000..20260e3
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Web.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/XBMC.png b/skins/nopacity/themes/darkred/menuicons/customicons/XBMC.png
new file mode 100644
index 0000000..c7c4c04
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/XBMC.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/Xterm.png b/skins/nopacity/themes/darkred/menuicons/customicons/Xterm.png
new file mode 100644
index 0000000..fa75282
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/Xterm.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/audiovideo.png b/skins/nopacity/themes/darkred/menuicons/customicons/audiovideo.png
new file mode 100644
index 0000000..726538d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/audiovideo.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/markad_status.png b/skins/nopacity/themes/darkred/menuicons/customicons/markad_status.png
new file mode 100644
index 0000000..4fdc7a4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/markad_status.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/schneiden_abbrechen.png b/skins/nopacity/themes/darkred/menuicons/customicons/schneiden_abbrechen.png
new file mode 100644
index 0000000..b2e0bd3
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/schneiden_abbrechen.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/tux.png b/skins/nopacity/themes/darkred/menuicons/customicons/tux.png
new file mode 100644
index 0000000..c5b4742
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/tux.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/usb.png b/skins/nopacity/themes/darkred/menuicons/customicons/usb.png
new file mode 100644
index 0000000..c4db1d4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/usb.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/vdrlogo.png b/skins/nopacity/themes/darkred/menuicons/customicons/vdrlogo.png
new file mode 100644
index 0000000..037a191
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/vdrlogo.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/customicons/yaicon_blue.png b/skins/nopacity/themes/darkred/menuicons/customicons/yaicon_blue.png
new file mode 100644
index 0000000..2c49273
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/customicons/yaicon_blue.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/admin.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/admin.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/admin.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/arghdirector.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/arghdirector.png
new file mode 100644
index 0000000..bbd221a
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/arghdirector.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/autostart.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/autostart.png
new file mode 100644
index 0000000..6fdb1bb
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/autostart.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/avahi4vdr.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/avahi4vdr.png
new file mode 100644
index 0000000..044e71d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/avahi4vdr.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/avards.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/avards.png
new file mode 100644
index 0000000..cf8d037
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/avards.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/block.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/block.png
new file mode 100644
index 0000000..86127c2
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/block.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/burn.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/burn.png
new file mode 100644
index 0000000..305d7ff
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/burn.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/cdplayer.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/cdplayer.png
new file mode 100644
index 0000000..89a6c19
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/cdplayer.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/chanman.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/chanman.png
new file mode 100644
index 0000000..a73e83c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/chanman.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/check.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/check.png
new file mode 100644
index 0000000..d487a24
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/check.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/conflictcheckonly.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/conflictcheckonly.png
new file mode 100644
index 0000000..7f832bd
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/conflictcheckonly.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/ddci.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/ddci.png
new file mode 100644
index 0000000..4ad459c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/ddci.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/devstatus.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/devstatus.png
new file mode 100644
index 0000000..96c0ec1
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/devstatus.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/dummydevice.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/dummydevice.png
new file mode 100644
index 0000000..11fd707
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/dummydevice.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/duplicates.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/duplicates.png
new file mode 100644
index 0000000..dc1be57
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/duplicates.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbapi.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbapi.png
new file mode 100644
index 0000000..b966461
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbapi.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbhddevice.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbhddevice.png
new file mode 100644
index 0000000..b874297
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbhddevice.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbsddevice.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbsddevice.png
new file mode 100644
index 0000000..106184e
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/dvbsddevice.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/dynamite.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/dynamite.png
new file mode 100644
index 0000000..28ea35a
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/dynamite.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/eepg.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/eepg.png
new file mode 100644
index 0000000..3938b96
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/eepg.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/epg2vdr.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/epg2vdr.png
new file mode 100644
index 0000000..ac8757e
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/epg2vdr.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearch.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearch.png
new file mode 100644
index 0000000..5eab415
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearch.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearchonly.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearchonly.png
new file mode 100644
index 0000000..b5186e7
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsearchonly.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsync.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsync.png
new file mode 100644
index 0000000..5c14009
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/epgsync.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/externalplayer.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/externalplayer.png
new file mode 100644
index 0000000..2bd67db
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/externalplayer.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/extrecmenu.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/extrecmenu.png
new file mode 100644
index 0000000..6f613f1
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/extrecmenu.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/favorites.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/favorites.png
new file mode 100644
index 0000000..409c852
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/favorites.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/femon.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/femon.png
new file mode 100644
index 0000000..e87b711
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/femon.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/fepg.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/fepg.png
new file mode 100644
index 0000000..65023ed
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/fepg.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/filebrowser.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/filebrowser.png
new file mode 100644
index 0000000..d3f90e0
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/filebrowser.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/fritzbox.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/fritzbox.png
new file mode 100644
index 0000000..7bfc229
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/fritzbox.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/graphlcd.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/graphlcd.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/graphlcd.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/graphtft.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/graphtft.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/graphtft.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/image.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/image.png
new file mode 100644
index 0000000..33644e0
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/image.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/imonlcd.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/imonlcd.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/imonlcd.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/iptv.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/iptv.png
new file mode 100644
index 0000000..4494ddc
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/iptv.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/lcdproc.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/lcdproc.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/lcdproc.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/mailbox.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/mailbox.png
new file mode 100644
index 0000000..1bc76e8
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/mailbox.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/makemkv.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/makemkv.png
new file mode 100644
index 0000000..41cddf1
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/makemkv.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/markad.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/markad.png
new file mode 100644
index 0000000..b3defaf
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/markad.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/mlist.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/mlist.png
new file mode 100644
index 0000000..19c367f
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/mlist.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/music.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/music.png
new file mode 100644
index 0000000..abb012e
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/music.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/noepg.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/noepg.png
new file mode 100644
index 0000000..eb9410d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/noepg.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/nordlichtsepg.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/nordlichtsepg.png
new file mode 100644
index 0000000..3ee3fa2
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/nordlichtsepg.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/osdteletext.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/osdteletext.png
new file mode 100644
index 0000000..664e770
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/osdteletext.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/peer.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/peer.png
new file mode 100644
index 0000000..998d568
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/peer.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/play.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/play.png
new file mode 100644
index 0000000..2848fc6
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/play.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/pvrinput.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/pvrinput.png
new file mode 100644
index 0000000..724f698
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/pvrinput.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/quickepgsearch.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/quickepgsearch.png
new file mode 100644
index 0000000..76a31f4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/quickepgsearch.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/radio.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/radio.png
new file mode 100644
index 0000000..193b7d4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/radio.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/remote.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/remote.png
new file mode 100644
index 0000000..7f46b1b
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/remote.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/remotetimers.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/remotetimers.png
new file mode 100644
index 0000000..fae3b79
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/remotetimers.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/rssreader.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/rssreader.png
new file mode 100644
index 0000000..db538f0
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/rssreader.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/sc.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/sc.png
new file mode 100644
index 0000000..2472d6c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/sc.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/screenshot.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/screenshot.png
new file mode 100644
index 0000000..be9b4d5
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/screenshot.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/seduatmo.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/seduatmo.png
new file mode 100644
index 0000000..4b5292f
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/seduatmo.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/skyselectfeeds.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/skyselectfeeds.png
new file mode 100644
index 0000000..d81a024
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/skyselectfeeds.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/sleeptimer.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/sleeptimer.png
new file mode 100644
index 0000000..cd4956f
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/sleeptimer.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/softhddevice.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/softhddevice.png
new file mode 100644
index 0000000..df13f2c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/softhddevice.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/streamdev-server.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/streamdev-server.png
new file mode 100644
index 0000000..e89ed8b
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/streamdev-server.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/systeminfo.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/systeminfo.png
new file mode 100644
index 0000000..b14763f
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/systeminfo.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/targavfd.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/targavfd.png
new file mode 100644
index 0000000..e91b111
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/targavfd.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/trayopenng.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/trayopenng.png
new file mode 100644
index 0000000..6ebd17d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/trayopenng.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/tvguide.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvguide.png
new file mode 100644
index 0000000..968a37c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvguide.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/tvm2vdr.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvm2vdr.png
new file mode 100644
index 0000000..47f9a91
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvm2vdr.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/tvscraper.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvscraper.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/tvscraper.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/undelete.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/undelete.png
new file mode 100644
index 0000000..a53d50a
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/undelete.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherforecast.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherforecast.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherforecast.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherng.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherng.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/weatherng.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/xmltv2vdr.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/xmltv2vdr.png
new file mode 100644
index 0000000..ea73c74
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/xmltv2vdr.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/pluginicons/yaepghg.png b/skins/nopacity/themes/darkred/menuicons/pluginicons/yaepghg.png
new file mode 100644
index 0000000..53ce443
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/pluginicons/yaepghg.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/CAM.png b/skins/nopacity/themes/darkred/menuicons/standardicons/CAM.png
new file mode 100644
index 0000000..a394877
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/CAM.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Channels.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Channels.png
new file mode 100644
index 0000000..ba2ba78
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Channels.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Commands.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Commands.png
new file mode 100644
index 0000000..c6a83ef
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Commands.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/DVB.png b/skins/nopacity/themes/darkred/menuicons/standardicons/DVB.png
new file mode 100644
index 0000000..3789145
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/DVB.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/EPG.png b/skins/nopacity/themes/darkred/menuicons/standardicons/EPG.png
new file mode 100644
index 0000000..e868b90
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/EPG.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/LNB.png b/skins/nopacity/themes/darkred/menuicons/standardicons/LNB.png
new file mode 100644
index 0000000..896dd99
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/LNB.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Miscellaneous.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Miscellaneous.png
new file mode 100644
index 0000000..2a41c4d
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Miscellaneous.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/OSD.png b/skins/nopacity/themes/darkred/menuicons/standardicons/OSD.png
new file mode 100644
index 0000000..8f571c6
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/OSD.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Plugins.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Plugins.png
new file mode 100644
index 0000000..3fcba70
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Plugins.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Recording.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Recording.png
new file mode 100644
index 0000000..741b1af
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Recording.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Recordings.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Recordings.png
new file mode 100644
index 0000000..79aeeb7
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Recordings.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Replay.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Replay.png
new file mode 100644
index 0000000..621596c
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Replay.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Restart.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Restart.png
new file mode 100644
index 0000000..aa23cd4
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Restart.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Schedule.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Schedule.png
new file mode 100644
index 0000000..3a98cac
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Schedule.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Setup.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Setup.png
new file mode 100644
index 0000000..d121148
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Setup.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/StopRecording.png b/skins/nopacity/themes/darkred/menuicons/standardicons/StopRecording.png
new file mode 100644
index 0000000..ed83fbb
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/StopRecording.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/StopReplay.png b/skins/nopacity/themes/darkred/menuicons/standardicons/StopReplay.png
new file mode 100644
index 0000000..9192760
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/StopReplay.png differ
diff --git a/skins/nopacity/themes/darkred/menuicons/standardicons/Timers.png b/skins/nopacity/themes/darkred/menuicons/standardicons/Timers.png
new file mode 100644
index 0000000..b866c36
Binary files /dev/null and b/skins/nopacity/themes/darkred/menuicons/standardicons/Timers.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/buttonblue.png b/skins/nopacity/themes/darkred/skinparts/buttonblue.png
new file mode 100644
index 0000000..82dc634
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/buttonblue.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/buttongreen.png b/skins/nopacity/themes/darkred/skinparts/buttongreen.png
new file mode 100644
index 0000000..ce8fe22
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/buttongreen.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/buttonred.png b/skins/nopacity/themes/darkred/skinparts/buttonred.png
new file mode 100644
index 0000000..9660a3e
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/buttonred.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/buttonyellow.png b/skins/nopacity/themes/darkred/skinparts/buttonyellow.png
new file mode 100644
index 0000000..a51ea7a
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/buttonyellow.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/channellogoback.png b/skins/nopacity/themes/darkred/skinparts/channellogoback.png
new file mode 100644
index 0000000..79357af
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/channellogoback.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/discpercent.png b/skins/nopacity/themes/darkred/skinparts/discpercent.png
new file mode 100644
index 0000000..cf32be2
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/discpercent.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/displaychannelback.png b/skins/nopacity/themes/darkred/skinparts/displaychannelback.png
new file mode 100644
index 0000000..672144f
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/displaychannelback.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/displaychanneltop.png b/skins/nopacity/themes/darkred/skinparts/displaychanneltop.png
new file mode 100644
index 0000000..38a99f8
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/displaychanneltop.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/displayreplayback.png b/skins/nopacity/themes/darkred/skinparts/displayreplayback.png
new file mode 100644
index 0000000..923dedb
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/displayreplayback.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/displayvolume.png b/skins/nopacity/themes/darkred/skinparts/displayvolume.png
new file mode 100644
index 0000000..8e81f14
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/displayvolume.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/header_mirroredback.png b/skins/nopacity/themes/darkred/skinparts/header_mirroredback.png
new file mode 100644
index 0000000..42919d9
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/header_mirroredback.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/header_mirroredtop.png b/skins/nopacity/themes/darkred/skinparts/header_mirroredtop.png
new file mode 100644
index 0000000..16053e9
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/header_mirroredtop.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/headerback.png b/skins/nopacity/themes/darkred/skinparts/headerback.png
new file mode 100644
index 0000000..dafff9e
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/headerback.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/headertop.png b/skins/nopacity/themes/darkred/skinparts/headertop.png
new file mode 100644
index 0000000..d6eb813
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/headertop.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/menubutton.png b/skins/nopacity/themes/darkred/skinparts/menubutton.png
new file mode 100644
index 0000000..4afbbbb
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/menubutton.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/menubuttonactive.png b/skins/nopacity/themes/darkred/skinparts/menubuttonactive.png
new file mode 100644
index 0000000..b461791
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/menubuttonactive.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/menubuttondefault.png b/skins/nopacity/themes/darkred/skinparts/menubuttondefault.png
new file mode 100644
index 0000000..9ef37ec
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/menubuttondefault.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/menubuttondefaultactive.png b/skins/nopacity/themes/darkred/skinparts/menubuttondefaultactive.png
new file mode 100644
index 0000000..09ab466
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/menubuttondefaultactive.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/messageError.png b/skins/nopacity/themes/darkred/skinparts/messageError.png
new file mode 100644
index 0000000..e6047f0
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/messageError.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/messageInfo.png b/skins/nopacity/themes/darkred/skinparts/messageInfo.png
new file mode 100644
index 0000000..d335003
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/messageInfo.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/messageStatus.png b/skins/nopacity/themes/darkred/skinparts/messageStatus.png
new file mode 100644
index 0000000..f455b5d
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/messageStatus.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/messageWarning.png b/skins/nopacity/themes/darkred/skinparts/messageWarning.png
new file mode 100644
index 0000000..32e1598
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/messageWarning.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/scrollbar.png b/skins/nopacity/themes/darkred/skinparts/scrollbar.png
new file mode 100644
index 0000000..2243776
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/scrollbar.png differ
diff --git a/skins/nopacity/themes/darkred/skinparts/signal.png b/skins/nopacity/themes/darkred/skinparts/signal.png
new file mode 100644
index 0000000..4f03c7a
Binary files /dev/null and b/skins/nopacity/themes/darkred/skinparts/signal.png differ
diff --git a/skins/nopacity/themes/darkred/theme.xml b/skins/nopacity/themes/darkred/theme.xml
new file mode 100644
index 0000000..56b7df4
--- /dev/null
+++ b/skins/nopacity/themes/darkred/theme.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
+
+<globals>
+    <colors>
+        <color name="clrRed">FFFF0000</color>
+        <color name="clrGreen">FF5FE200</color>
+        <color name="clrYellow">FFE2DA00</color>
+        <color name="clrBlue">FF007FE2</color>
+        <color name="clrWhite">FFFFFFFF</color>
+        <color name="clrTransWhite">99FFFFFF</color>
+        <color name="clrBlack">FF000000</color>
+        <color name="clrProgressbar">FF3D0000</color>
+        <color name="clrScrollbar">FF3D0000</color>
+        <color name="clrBorder">FF2B0000</color>
+        <color name="clrGray">FF858585</color>
+        <color name="clrBackground">B0000000</color>
+        <color name="clrTransBlack">99000000</color>
+        <color name="clrTransBlackDark">DF000000</color>
+        <color name="clrTransRed">99FF0000</color>
+        <color name="clrFontMenuItem">FFFFFFFF</color>
+        <color name="clrFontMenuItemSelected">FFFFFFFF</color>
+        <color name="clrFontInactive">FF858585</color>
+        <color name="clrTransparent">00000000</color>
+    </colors>
+    <variables>
+    </variables>
+</globals>
diff --git a/skins/nopacity/themes/default/icons/clear-day.png b/skins/nopacity/themes/default/icons/clear-day.png
new file mode 100644
index 0000000..2b06a14
Binary files /dev/null and b/skins/nopacity/themes/default/icons/clear-day.png differ
diff --git a/skins/nopacity/themes/default/icons/clear-night.png b/skins/nopacity/themes/default/icons/clear-night.png
new file mode 100644
index 0000000..9bbe49f
Binary files /dev/null and b/skins/nopacity/themes/default/icons/clear-night.png differ
diff --git a/skins/nopacity/themes/default/icons/cloudy.png b/skins/nopacity/themes/default/icons/cloudy.png
new file mode 100644
index 0000000..9870c7f
Binary files /dev/null and b/skins/nopacity/themes/default/icons/cloudy.png differ
diff --git a/skins/nopacity/themes/default/icons/fog.png b/skins/nopacity/themes/default/icons/fog.png
new file mode 100644
index 0000000..9bc88d2
Binary files /dev/null and b/skins/nopacity/themes/default/icons/fog.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ac3.png b/skins/nopacity/themes/default/icons/ico_ac3.png
new file mode 100644
index 0000000..5b8614a
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ac3.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_activetimer.png b/skins/nopacity/themes/default/icons/ico_activetimer.png
new file mode 100644
index 0000000..af4c33c
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_activetimer.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_arrow_left_channelsep.png b/skins/nopacity/themes/default/icons/ico_arrow_left_channelsep.png
new file mode 100644
index 0000000..642cd78
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_arrow_left_channelsep.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_arrow_right_channelsep.png b/skins/nopacity/themes/default/icons/ico_arrow_right_channelsep.png
new file mode 100644
index 0000000..1418671
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_arrow_right_channelsep.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_channelsep.png b/skins/nopacity/themes/default/icons/ico_channelsep.png
new file mode 100644
index 0000000..bf51238
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_channelsep.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_cutted.png b/skins/nopacity/themes/default/icons/ico_cutted.png
new file mode 100644
index 0000000..b90c9c1
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_cutted.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_daydelimiter.png b/skins/nopacity/themes/default/icons/ico_daydelimiter.png
new file mode 100644
index 0000000..7ae6053
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_daydelimiter.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_discusage.png b/skins/nopacity/themes/default/icons/ico_discusage.png
new file mode 100644
index 0000000..f40fcd9
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_discusage.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_dolbyoff.png b/skins/nopacity/themes/default/icons/ico_dolbyoff.png
new file mode 100644
index 0000000..ef4f17c
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_dolbyoff.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_dolbyon.png b/skins/nopacity/themes/default/icons/ico_dolbyon.png
new file mode 100644
index 0000000..1278abe
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_dolbyon.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_encrypted.png b/skins/nopacity/themes/default/icons/ico_encrypted.png
new file mode 100644
index 0000000..2b6345a
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_encrypted.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ff.png b/skins/nopacity/themes/default/icons/ico_ff.png
new file mode 100644
index 0000000..3dea9d3
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ff.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ff_1x.png b/skins/nopacity/themes/default/icons/ico_ff_1x.png
new file mode 100644
index 0000000..599256e
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ff_1x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ff_2x.png b/skins/nopacity/themes/default/icons/ico_ff_2x.png
new file mode 100644
index 0000000..3eec356
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ff_2x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ff_3x.png b/skins/nopacity/themes/default/icons/ico_ff_3x.png
new file mode 100644
index 0000000..f686658
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ff_3x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_ff_off.png b/skins/nopacity/themes/default/icons/ico_ff_off.png
new file mode 100644
index 0000000..cb551c2
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_ff_off.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_fta.png b/skins/nopacity/themes/default/icons/ico_fta.png
new file mode 100644
index 0000000..55e3789
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_fta.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_hd1080i.png b/skins/nopacity/themes/default/icons/ico_hd1080i.png
new file mode 100644
index 0000000..27b85ab
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_hd1080i.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_hd720p.png b/skins/nopacity/themes/default/icons/ico_hd720p.png
new file mode 100644
index 0000000..47317d8
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_hd720p.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_mute.png b/skins/nopacity/themes/default/icons/ico_mute.png
new file mode 100644
index 0000000..4eefc75
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_mute.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_pause.png b/skins/nopacity/themes/default/icons/ico_pause.png
new file mode 100644
index 0000000..cd8cad8
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_pause.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_pause_off.png b/skins/nopacity/themes/default/icons/ico_pause_off.png
new file mode 100644
index 0000000..f9a9d94
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_pause_off.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_play.png b/skins/nopacity/themes/default/icons/ico_play.png
new file mode 100644
index 0000000..4cc0541
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_play.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_play_off.png b/skins/nopacity/themes/default/icons/ico_play_off.png
new file mode 100644
index 0000000..7fb820a
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_play_off.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_recfolder.png b/skins/nopacity/themes/default/icons/ico_recfolder.png
new file mode 100644
index 0000000..e3df65b
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_recfolder.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_recnew.png b/skins/nopacity/themes/default/icons/ico_recnew.png
new file mode 100644
index 0000000..b9166ba
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_recnew.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_recoff.png b/skins/nopacity/themes/default/icons/ico_recoff.png
new file mode 100644
index 0000000..4f59218
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_recoff.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_recon.png b/skins/nopacity/themes/default/icons/ico_recon.png
new file mode 100644
index 0000000..14fe7be
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_recon.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_rew.png b/skins/nopacity/themes/default/icons/ico_rew.png
new file mode 100644
index 0000000..72408d0
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_rew.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_rew_1x.png b/skins/nopacity/themes/default/icons/ico_rew_1x.png
new file mode 100644
index 0000000..333c30d
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_rew_1x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_rew_2x.png b/skins/nopacity/themes/default/icons/ico_rew_2x.png
new file mode 100644
index 0000000..c5d1084
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_rew_2x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_rew_3x.png b/skins/nopacity/themes/default/icons/ico_rew_3x.png
new file mode 100644
index 0000000..6ab7a8d
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_rew_3x.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_rew_off.png b/skins/nopacity/themes/default/icons/ico_rew_off.png
new file mode 100644
index 0000000..ce18386
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_rew_off.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_sd576i.png b/skins/nopacity/themes/default/icons/ico_sd576i.png
new file mode 100644
index 0000000..994a7a2
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_sd576i.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_stereo.png b/skins/nopacity/themes/default/icons/ico_stereo.png
new file mode 100644
index 0000000..7f3610d
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_stereo.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_stereooff.png b/skins/nopacity/themes/default/icons/ico_stereooff.png
new file mode 100644
index 0000000..569a342
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_stereooff.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_stereoon.png b/skins/nopacity/themes/default/icons/ico_stereoon.png
new file mode 100644
index 0000000..eb838b9
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_stereoon.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_timer_active.png b/skins/nopacity/themes/default/icons/ico_timer_active.png
new file mode 100644
index 0000000..28c2f81
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_timer_active.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_timer_inactive.png b/skins/nopacity/themes/default/icons/ico_timer_inactive.png
new file mode 100644
index 0000000..c4b1860
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_timer_inactive.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_timer_recording.png b/skins/nopacity/themes/default/icons/ico_timer_recording.png
new file mode 100644
index 0000000..86dc66b
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_timer_recording.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_txtoff.png b/skins/nopacity/themes/default/icons/ico_txtoff.png
new file mode 100644
index 0000000..3b2eac3
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_txtoff.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_txton.png b/skins/nopacity/themes/default/icons/ico_txton.png
new file mode 100644
index 0000000..148f9ef
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_txton.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_vdrlogo.png b/skins/nopacity/themes/default/icons/ico_vdrlogo.png
new file mode 100644
index 0000000..200cea7
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_vdrlogo.png differ
diff --git a/skins/nopacity/themes/default/icons/ico_volume.png b/skins/nopacity/themes/default/icons/ico_volume.png
new file mode 100644
index 0000000..3a72514
Binary files /dev/null and b/skins/nopacity/themes/default/icons/ico_volume.png differ
diff --git a/skins/nopacity/themes/default/icons/partly-cloudy-day.png b/skins/nopacity/themes/default/icons/partly-cloudy-day.png
new file mode 100644
index 0000000..b6df179
Binary files /dev/null and b/skins/nopacity/themes/default/icons/partly-cloudy-day.png differ
diff --git a/skins/nopacity/themes/default/icons/partly-cloudy-night.png b/skins/nopacity/themes/default/icons/partly-cloudy-night.png
new file mode 100644
index 0000000..aa358fb
Binary files /dev/null and b/skins/nopacity/themes/default/icons/partly-cloudy-night.png differ
diff --git a/skins/nopacity/themes/default/icons/rain.png b/skins/nopacity/themes/default/icons/rain.png
new file mode 100644
index 0000000..8275003
Binary files /dev/null and b/skins/nopacity/themes/default/icons/rain.png differ
diff --git a/skins/nopacity/themes/default/icons/sleet.png b/skins/nopacity/themes/default/icons/sleet.png
new file mode 100644
index 0000000..1d99ae0
Binary files /dev/null and b/skins/nopacity/themes/default/icons/sleet.png differ
diff --git a/skins/nopacity/themes/default/icons/snow.png b/skins/nopacity/themes/default/icons/snow.png
new file mode 100644
index 0000000..939e22f
Binary files /dev/null and b/skins/nopacity/themes/default/icons/snow.png differ
diff --git a/skins/nopacity/themes/default/icons/wind.png b/skins/nopacity/themes/default/icons/wind.png
new file mode 100644
index 0000000..d92ec15
Binary files /dev/null and b/skins/nopacity/themes/default/icons/wind.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Applikationen.png b/skins/nopacity/themes/default/menuicons/customicons/Applikationen.png
new file mode 100644
index 0000000..3c3b616
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Applikationen.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Audio.png b/skins/nopacity/themes/default/menuicons/customicons/Audio.png
new file mode 100644
index 0000000..ff387fe
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Audio.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png b/skins/nopacity/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png
new file mode 100644
index 0000000..3cdddc9
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Aufnahmen-Liste aktualisieren.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Dienstprogramme.png b/skins/nopacity/themes/default/menuicons/customicons/Dienstprogramme.png
new file mode 100644
index 0000000..793aba6
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Dienstprogramme.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/FireFox.png b/skins/nopacity/themes/default/menuicons/customicons/FireFox.png
new file mode 100644
index 0000000..192fadc
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/FireFox.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Info.png b/skins/nopacity/themes/default/menuicons/customicons/Info.png
new file mode 100644
index 0000000..6737431
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Info.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Internet.png b/skins/nopacity/themes/default/menuicons/customicons/Internet.png
new file mode 100644
index 0000000..f3db150
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Internet.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Medien.png b/skins/nopacity/themes/default/menuicons/customicons/Medien.png
new file mode 100644
index 0000000..0ce2360
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Medien.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Rechner neu starten.png b/skins/nopacity/themes/default/menuicons/customicons/Rechner neu starten.png
new file mode 100644
index 0000000..5783ccf
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Rechner neu starten.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Remote wakeup.png b/skins/nopacity/themes/default/menuicons/customicons/Remote wakeup.png
new file mode 100644
index 0000000..1cd2f6e
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Remote wakeup.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Spiele.png b/skins/nopacity/themes/default/menuicons/customicons/Spiele.png
new file mode 100644
index 0000000..8e07161
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Spiele.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/System herunterfahren.png b/skins/nopacity/themes/default/menuicons/customicons/System herunterfahren.png
new file mode 100644
index 0000000..e0234df
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/System herunterfahren.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/System.png b/skins/nopacity/themes/default/menuicons/customicons/System.png
new file mode 100644
index 0000000..81d100e
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/System.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Tools.png b/skins/nopacity/themes/default/menuicons/customicons/Tools.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Tools.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Tunderbird.png b/skins/nopacity/themes/default/menuicons/customicons/Tunderbird.png
new file mode 100644
index 0000000..5ae27e0
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Tunderbird.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png b/skins/nopacity/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png
new file mode 100644
index 0000000..cd7b81c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/USB Massenspeicher sicher entfernen.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/VDR neu starten.png b/skins/nopacity/themes/default/menuicons/customicons/VDR neu starten.png
new file mode 100644
index 0000000..14904ca
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/VDR neu starten.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Video.png b/skins/nopacity/themes/default/menuicons/customicons/Video.png
new file mode 100644
index 0000000..490ca4b
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Video.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Web.png b/skins/nopacity/themes/default/menuicons/customicons/Web.png
new file mode 100644
index 0000000..20260e3
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Web.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/XBMC.png b/skins/nopacity/themes/default/menuicons/customicons/XBMC.png
new file mode 100644
index 0000000..c7c4c04
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/XBMC.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/Xterm.png b/skins/nopacity/themes/default/menuicons/customicons/Xterm.png
new file mode 100644
index 0000000..fa75282
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/Xterm.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/audiovideo.png b/skins/nopacity/themes/default/menuicons/customicons/audiovideo.png
new file mode 100644
index 0000000..726538d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/audiovideo.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/markad_status.png b/skins/nopacity/themes/default/menuicons/customicons/markad_status.png
new file mode 100644
index 0000000..4fdc7a4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/markad_status.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/schneiden_abbrechen.png b/skins/nopacity/themes/default/menuicons/customicons/schneiden_abbrechen.png
new file mode 100644
index 0000000..b2e0bd3
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/schneiden_abbrechen.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/tux.png b/skins/nopacity/themes/default/menuicons/customicons/tux.png
new file mode 100644
index 0000000..c5b4742
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/tux.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/usb.png b/skins/nopacity/themes/default/menuicons/customicons/usb.png
new file mode 100644
index 0000000..c4db1d4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/usb.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/vdrlogo.png b/skins/nopacity/themes/default/menuicons/customicons/vdrlogo.png
new file mode 100644
index 0000000..037a191
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/vdrlogo.png differ
diff --git a/skins/nopacity/themes/default/menuicons/customicons/yaicon_blue.png b/skins/nopacity/themes/default/menuicons/customicons/yaicon_blue.png
new file mode 100644
index 0000000..2c49273
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/customicons/yaicon_blue.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/admin.png b/skins/nopacity/themes/default/menuicons/pluginicons/admin.png
new file mode 100644
index 0000000..cf328ef
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/admin.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/arghdirector.png b/skins/nopacity/themes/default/menuicons/pluginicons/arghdirector.png
new file mode 100644
index 0000000..bbd221a
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/arghdirector.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/autostart.png b/skins/nopacity/themes/default/menuicons/pluginicons/autostart.png
new file mode 100644
index 0000000..6fdb1bb
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/autostart.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/avahi4vdr.png b/skins/nopacity/themes/default/menuicons/pluginicons/avahi4vdr.png
new file mode 100644
index 0000000..044e71d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/avahi4vdr.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/avards.png b/skins/nopacity/themes/default/menuicons/pluginicons/avards.png
new file mode 100644
index 0000000..cf8d037
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/avards.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/block.png b/skins/nopacity/themes/default/menuicons/pluginicons/block.png
new file mode 100644
index 0000000..86127c2
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/block.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/burn.png b/skins/nopacity/themes/default/menuicons/pluginicons/burn.png
new file mode 100644
index 0000000..305d7ff
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/burn.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/cdplayer.png b/skins/nopacity/themes/default/menuicons/pluginicons/cdplayer.png
new file mode 100644
index 0000000..89a6c19
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/cdplayer.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/chanman.png b/skins/nopacity/themes/default/menuicons/pluginicons/chanman.png
new file mode 100644
index 0000000..a73e83c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/chanman.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/check.png b/skins/nopacity/themes/default/menuicons/pluginicons/check.png
new file mode 100644
index 0000000..d487a24
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/check.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/conflictcheckonly.png b/skins/nopacity/themes/default/menuicons/pluginicons/conflictcheckonly.png
new file mode 100644
index 0000000..7f832bd
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/conflictcheckonly.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/ddci.png b/skins/nopacity/themes/default/menuicons/pluginicons/ddci.png
new file mode 100644
index 0000000..4ad459c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/ddci.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/devstatus.png b/skins/nopacity/themes/default/menuicons/pluginicons/devstatus.png
new file mode 100644
index 0000000..96c0ec1
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/devstatus.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/dummydevice.png b/skins/nopacity/themes/default/menuicons/pluginicons/dummydevice.png
new file mode 100644
index 0000000..11fd707
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/dummydevice.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/duplicates.png b/skins/nopacity/themes/default/menuicons/pluginicons/duplicates.png
new file mode 100644
index 0000000..dc1be57
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/duplicates.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/dvbapi.png b/skins/nopacity/themes/default/menuicons/pluginicons/dvbapi.png
new file mode 100644
index 0000000..b966461
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/dvbapi.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/dvbhddevice.png b/skins/nopacity/themes/default/menuicons/pluginicons/dvbhddevice.png
new file mode 100644
index 0000000..b874297
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/dvbhddevice.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/dvbsddevice.png b/skins/nopacity/themes/default/menuicons/pluginicons/dvbsddevice.png
new file mode 100644
index 0000000..106184e
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/dvbsddevice.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/dynamite.png b/skins/nopacity/themes/default/menuicons/pluginicons/dynamite.png
new file mode 100644
index 0000000..28ea35a
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/dynamite.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/eepg.png b/skins/nopacity/themes/default/menuicons/pluginicons/eepg.png
new file mode 100644
index 0000000..3938b96
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/eepg.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/epg2vdr.png b/skins/nopacity/themes/default/menuicons/pluginicons/epg2vdr.png
new file mode 100644
index 0000000..ac8757e
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/epg2vdr.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/epgsearch.png b/skins/nopacity/themes/default/menuicons/pluginicons/epgsearch.png
new file mode 100644
index 0000000..5eab415
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/epgsearch.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/epgsearchonly.png b/skins/nopacity/themes/default/menuicons/pluginicons/epgsearchonly.png
new file mode 100644
index 0000000..b5186e7
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/epgsearchonly.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/epgsync.png b/skins/nopacity/themes/default/menuicons/pluginicons/epgsync.png
new file mode 100644
index 0000000..5c14009
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/epgsync.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/externalplayer.png b/skins/nopacity/themes/default/menuicons/pluginicons/externalplayer.png
new file mode 100644
index 0000000..2bd67db
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/externalplayer.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/extrecmenu.png b/skins/nopacity/themes/default/menuicons/pluginicons/extrecmenu.png
new file mode 100644
index 0000000..6f613f1
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/extrecmenu.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/favorites.png b/skins/nopacity/themes/default/menuicons/pluginicons/favorites.png
new file mode 100644
index 0000000..409c852
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/favorites.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/femon.png b/skins/nopacity/themes/default/menuicons/pluginicons/femon.png
new file mode 100644
index 0000000..e87b711
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/femon.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/fepg.png b/skins/nopacity/themes/default/menuicons/pluginicons/fepg.png
new file mode 100644
index 0000000..65023ed
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/fepg.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/filebrowser.png b/skins/nopacity/themes/default/menuicons/pluginicons/filebrowser.png
new file mode 100644
index 0000000..d3f90e0
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/filebrowser.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/fritzbox.png b/skins/nopacity/themes/default/menuicons/pluginicons/fritzbox.png
new file mode 100644
index 0000000..7bfc229
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/fritzbox.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/graphlcd.png b/skins/nopacity/themes/default/menuicons/pluginicons/graphlcd.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/graphlcd.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/graphtft.png b/skins/nopacity/themes/default/menuicons/pluginicons/graphtft.png
new file mode 100644
index 0000000..39ffd35
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/graphtft.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/image.png b/skins/nopacity/themes/default/menuicons/pluginicons/image.png
new file mode 100644
index 0000000..33644e0
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/image.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/imonlcd.png b/skins/nopacity/themes/default/menuicons/pluginicons/imonlcd.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/imonlcd.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/iptv.png b/skins/nopacity/themes/default/menuicons/pluginicons/iptv.png
new file mode 100644
index 0000000..4494ddc
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/iptv.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/lcdproc.png b/skins/nopacity/themes/default/menuicons/pluginicons/lcdproc.png
new file mode 100644
index 0000000..3d34fc4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/lcdproc.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/mailbox.png b/skins/nopacity/themes/default/menuicons/pluginicons/mailbox.png
new file mode 100644
index 0000000..1bc76e8
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/mailbox.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/makemkv.png b/skins/nopacity/themes/default/menuicons/pluginicons/makemkv.png
new file mode 100644
index 0000000..41cddf1
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/makemkv.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/markad.png b/skins/nopacity/themes/default/menuicons/pluginicons/markad.png
new file mode 100644
index 0000000..b3defaf
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/markad.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/mlist.png b/skins/nopacity/themes/default/menuicons/pluginicons/mlist.png
new file mode 100644
index 0000000..19c367f
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/mlist.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/music.png b/skins/nopacity/themes/default/menuicons/pluginicons/music.png
new file mode 100644
index 0000000..abb012e
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/music.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/noepg.png b/skins/nopacity/themes/default/menuicons/pluginicons/noepg.png
new file mode 100644
index 0000000..eb9410d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/noepg.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/nordlichtsepg.png b/skins/nopacity/themes/default/menuicons/pluginicons/nordlichtsepg.png
new file mode 100644
index 0000000..3ee3fa2
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/nordlichtsepg.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/osdteletext.png b/skins/nopacity/themes/default/menuicons/pluginicons/osdteletext.png
new file mode 100644
index 0000000..664e770
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/osdteletext.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/peer.png b/skins/nopacity/themes/default/menuicons/pluginicons/peer.png
new file mode 100644
index 0000000..998d568
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/peer.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/play.png b/skins/nopacity/themes/default/menuicons/pluginicons/play.png
new file mode 100644
index 0000000..2848fc6
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/play.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/pvrinput.png b/skins/nopacity/themes/default/menuicons/pluginicons/pvrinput.png
new file mode 100644
index 0000000..724f698
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/pvrinput.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/quickepgsearch.png b/skins/nopacity/themes/default/menuicons/pluginicons/quickepgsearch.png
new file mode 100644
index 0000000..76a31f4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/quickepgsearch.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/radio.png b/skins/nopacity/themes/default/menuicons/pluginicons/radio.png
new file mode 100644
index 0000000..193b7d4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/radio.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/remote.png b/skins/nopacity/themes/default/menuicons/pluginicons/remote.png
new file mode 100644
index 0000000..7f46b1b
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/remote.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/remotetimers.png b/skins/nopacity/themes/default/menuicons/pluginicons/remotetimers.png
new file mode 100644
index 0000000..fae3b79
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/remotetimers.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/rssreader.png b/skins/nopacity/themes/default/menuicons/pluginicons/rssreader.png
new file mode 100644
index 0000000..db538f0
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/rssreader.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/sc.png b/skins/nopacity/themes/default/menuicons/pluginicons/sc.png
new file mode 100644
index 0000000..2472d6c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/sc.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/screenshot.png b/skins/nopacity/themes/default/menuicons/pluginicons/screenshot.png
new file mode 100644
index 0000000..be9b4d5
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/screenshot.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/seduatmo.png b/skins/nopacity/themes/default/menuicons/pluginicons/seduatmo.png
new file mode 100644
index 0000000..4b5292f
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/seduatmo.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/skyselectfeeds.png b/skins/nopacity/themes/default/menuicons/pluginicons/skyselectfeeds.png
new file mode 100644
index 0000000..d81a024
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/skyselectfeeds.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/sleeptimer.png b/skins/nopacity/themes/default/menuicons/pluginicons/sleeptimer.png
new file mode 100644
index 0000000..cd4956f
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/sleeptimer.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/softhddevice.png b/skins/nopacity/themes/default/menuicons/pluginicons/softhddevice.png
new file mode 100644
index 0000000..df13f2c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/softhddevice.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/streamdev-server.png b/skins/nopacity/themes/default/menuicons/pluginicons/streamdev-server.png
new file mode 100644
index 0000000..e89ed8b
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/streamdev-server.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/systeminfo.png b/skins/nopacity/themes/default/menuicons/pluginicons/systeminfo.png
new file mode 100644
index 0000000..b14763f
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/systeminfo.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/targavfd.png b/skins/nopacity/themes/default/menuicons/pluginicons/targavfd.png
new file mode 100644
index 0000000..e91b111
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/targavfd.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/trayopenng.png b/skins/nopacity/themes/default/menuicons/pluginicons/trayopenng.png
new file mode 100644
index 0000000..6ebd17d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/trayopenng.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/tvguide.png b/skins/nopacity/themes/default/menuicons/pluginicons/tvguide.png
new file mode 100644
index 0000000..968a37c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/tvguide.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/tvm2vdr.png b/skins/nopacity/themes/default/menuicons/pluginicons/tvm2vdr.png
new file mode 100644
index 0000000..47f9a91
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/tvm2vdr.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/tvscraper.png b/skins/nopacity/themes/default/menuicons/pluginicons/tvscraper.png
new file mode 100644
index 0000000..a106cb5
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/tvscraper.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/undelete.png b/skins/nopacity/themes/default/menuicons/pluginicons/undelete.png
new file mode 100644
index 0000000..a53d50a
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/undelete.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/weatherforecast.png b/skins/nopacity/themes/default/menuicons/pluginicons/weatherforecast.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/weatherforecast.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/weatherng.png b/skins/nopacity/themes/default/menuicons/pluginicons/weatherng.png
new file mode 100644
index 0000000..a88f11d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/weatherng.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/xmltv2vdr.png b/skins/nopacity/themes/default/menuicons/pluginicons/xmltv2vdr.png
new file mode 100644
index 0000000..ea73c74
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/xmltv2vdr.png differ
diff --git a/skins/nopacity/themes/default/menuicons/pluginicons/yaepghg.png b/skins/nopacity/themes/default/menuicons/pluginicons/yaepghg.png
new file mode 100644
index 0000000..53ce443
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/pluginicons/yaepghg.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/CAM.png b/skins/nopacity/themes/default/menuicons/standardicons/CAM.png
new file mode 100644
index 0000000..a394877
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/CAM.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Channels.png b/skins/nopacity/themes/default/menuicons/standardicons/Channels.png
new file mode 100644
index 0000000..ba2ba78
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Channels.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Commands.png b/skins/nopacity/themes/default/menuicons/standardicons/Commands.png
new file mode 100644
index 0000000..c6a83ef
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Commands.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/DVB.png b/skins/nopacity/themes/default/menuicons/standardicons/DVB.png
new file mode 100644
index 0000000..3789145
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/DVB.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/EPG.png b/skins/nopacity/themes/default/menuicons/standardicons/EPG.png
new file mode 100644
index 0000000..e868b90
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/EPG.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/LNB.png b/skins/nopacity/themes/default/menuicons/standardicons/LNB.png
new file mode 100644
index 0000000..896dd99
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/LNB.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Miscellaneous.png b/skins/nopacity/themes/default/menuicons/standardicons/Miscellaneous.png
new file mode 100644
index 0000000..2a41c4d
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Miscellaneous.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/OSD.png b/skins/nopacity/themes/default/menuicons/standardicons/OSD.png
new file mode 100644
index 0000000..8f571c6
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/OSD.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Plugins.png b/skins/nopacity/themes/default/menuicons/standardicons/Plugins.png
new file mode 100644
index 0000000..3fcba70
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Plugins.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Recording.png b/skins/nopacity/themes/default/menuicons/standardicons/Recording.png
new file mode 100644
index 0000000..741b1af
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Recording.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Recordings.png b/skins/nopacity/themes/default/menuicons/standardicons/Recordings.png
new file mode 100644
index 0000000..79aeeb7
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Recordings.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Replay.png b/skins/nopacity/themes/default/menuicons/standardicons/Replay.png
new file mode 100644
index 0000000..621596c
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Replay.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Restart.png b/skins/nopacity/themes/default/menuicons/standardicons/Restart.png
new file mode 100644
index 0000000..aa23cd4
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Restart.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Schedule.png b/skins/nopacity/themes/default/menuicons/standardicons/Schedule.png
new file mode 100644
index 0000000..3a98cac
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Schedule.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Setup.png b/skins/nopacity/themes/default/menuicons/standardicons/Setup.png
new file mode 100644
index 0000000..d121148
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Setup.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/StopRecording.png b/skins/nopacity/themes/default/menuicons/standardicons/StopRecording.png
new file mode 100644
index 0000000..ed83fbb
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/StopRecording.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/StopReplay.png b/skins/nopacity/themes/default/menuicons/standardicons/StopReplay.png
new file mode 100644
index 0000000..9192760
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/StopReplay.png differ
diff --git a/skins/nopacity/themes/default/menuicons/standardicons/Timers.png b/skins/nopacity/themes/default/menuicons/standardicons/Timers.png
new file mode 100644
index 0000000..b866c36
Binary files /dev/null and b/skins/nopacity/themes/default/menuicons/standardicons/Timers.png differ
diff --git a/skins/nopacity/themes/default/skinparts/buttonblue.png b/skins/nopacity/themes/default/skinparts/buttonblue.png
new file mode 100644
index 0000000..d00e4d2
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/buttonblue.png differ
diff --git a/skins/nopacity/themes/default/skinparts/buttongreen.png b/skins/nopacity/themes/default/skinparts/buttongreen.png
new file mode 100644
index 0000000..8c05c08
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/buttongreen.png differ
diff --git a/skins/nopacity/themes/default/skinparts/buttonred.png b/skins/nopacity/themes/default/skinparts/buttonred.png
new file mode 100644
index 0000000..9367c9b
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/buttonred.png differ
diff --git a/skins/nopacity/themes/default/skinparts/buttonyellow.png b/skins/nopacity/themes/default/skinparts/buttonyellow.png
new file mode 100644
index 0000000..aff8758
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/buttonyellow.png differ
diff --git a/skins/nopacity/themes/default/skinparts/channellogoback.png b/skins/nopacity/themes/default/skinparts/channellogoback.png
new file mode 100644
index 0000000..b0e83b1
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/channellogoback.png differ
diff --git a/skins/nopacity/themes/default/skinparts/discpercent.png b/skins/nopacity/themes/default/skinparts/discpercent.png
new file mode 100644
index 0000000..cf32be2
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/discpercent.png differ
diff --git a/skins/nopacity/themes/default/skinparts/displaychannelback.png b/skins/nopacity/themes/default/skinparts/displaychannelback.png
new file mode 100644
index 0000000..1437384
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/displaychannelback.png differ
diff --git a/skins/nopacity/themes/default/skinparts/displaychanneltop.png b/skins/nopacity/themes/default/skinparts/displaychanneltop.png
new file mode 100644
index 0000000..5108435
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/displaychanneltop.png differ
diff --git a/skins/nopacity/themes/default/skinparts/displayreplayback.png b/skins/nopacity/themes/default/skinparts/displayreplayback.png
new file mode 100644
index 0000000..d72931f
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/displayreplayback.png differ
diff --git a/skins/nopacity/themes/default/skinparts/displayreplaytop.png b/skins/nopacity/themes/default/skinparts/displayreplaytop.png
new file mode 100644
index 0000000..064347e
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/displayreplaytop.png differ
diff --git a/skins/nopacity/themes/default/skinparts/displayvolume.png b/skins/nopacity/themes/default/skinparts/displayvolume.png
new file mode 100644
index 0000000..a5c4c66
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/displayvolume.png differ
diff --git a/skins/nopacity/themes/default/skinparts/headertop.png b/skins/nopacity/themes/default/skinparts/headertop.png
new file mode 100644
index 0000000..2bc19a6
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/headertop.png differ
diff --git a/skins/nopacity/themes/default/skinparts/menubutton.png b/skins/nopacity/themes/default/skinparts/menubutton.png
new file mode 100644
index 0000000..0800a5e
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/menubutton.png differ
diff --git a/skins/nopacity/themes/default/skinparts/menubuttonactive.png b/skins/nopacity/themes/default/skinparts/menubuttonactive.png
new file mode 100644
index 0000000..caae104
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/menubuttonactive.png differ
diff --git a/skins/nopacity/themes/default/skinparts/menubuttondefault.png b/skins/nopacity/themes/default/skinparts/menubuttondefault.png
new file mode 100644
index 0000000..76735de
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/menubuttondefault.png differ
diff --git a/skins/nopacity/themes/default/skinparts/menubuttondefaultactive.png b/skins/nopacity/themes/default/skinparts/menubuttondefaultactive.png
new file mode 100644
index 0000000..70c0b8a
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/menubuttondefaultactive.png differ
diff --git a/skins/nopacity/themes/default/skinparts/menubuttontop.png b/skins/nopacity/themes/default/skinparts/menubuttontop.png
new file mode 100644
index 0000000..1b49cfd
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/menubuttontop.png differ
diff --git a/skins/nopacity/themes/default/skinparts/messageError.png b/skins/nopacity/themes/default/skinparts/messageError.png
new file mode 100644
index 0000000..a894992
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/messageError.png differ
diff --git a/skins/nopacity/themes/default/skinparts/messageInfo.png b/skins/nopacity/themes/default/skinparts/messageInfo.png
new file mode 100644
index 0000000..5f8e62a
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/messageInfo.png differ
diff --git a/skins/nopacity/themes/default/skinparts/messageStatus.png b/skins/nopacity/themes/default/skinparts/messageStatus.png
new file mode 100644
index 0000000..f4b83f4
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/messageStatus.png differ
diff --git a/skins/nopacity/themes/default/skinparts/messageWarning.png b/skins/nopacity/themes/default/skinparts/messageWarning.png
new file mode 100644
index 0000000..f073ed5
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/messageWarning.png differ
diff --git a/skins/nopacity/themes/default/skinparts/scrollbar.png b/skins/nopacity/themes/default/skinparts/scrollbar.png
new file mode 100644
index 0000000..f822555
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/scrollbar.png differ
diff --git a/skins/nopacity/themes/default/skinparts/signal.png b/skins/nopacity/themes/default/skinparts/signal.png
new file mode 100644
index 0000000..4f03c7a
Binary files /dev/null and b/skins/nopacity/themes/default/skinparts/signal.png differ
diff --git a/skins/nopacity/themes/default/theme.xml b/skins/nopacity/themes/default/theme.xml
new file mode 100644
index 0000000..82c075c
--- /dev/null
+++ b/skins/nopacity/themes/default/theme.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
+
+<globals>
+    <colors>
+        <color name="clrRed">FFFF0000</color>
+        <color name="clrGreen">FF5FE200</color>
+        <color name="clrYellow">FFE2DA00</color>
+        <color name="clrBlue">FF007FE2</color>
+        <color name="clrWhite">FFFFFFFF</color>
+        <color name="clrTransWhite">99FFFFFF</color>
+        <color name="clrBlack">FF000000</color>
+        <color name="clrProgressbar">FF8EAB21</color>
+        <color name="clrScrollbar">FF8EAB21</color>
+        <color name="clrBorder">FF4C5C11</color>
+        <color name="clrGray">FF858585</color>
+        <color name="clrBackground">B012273F</color>
+        <color name="clrTransBlack">99000000</color>
+        <color name="clrTransBlackDark">CC000000</color>
+        <color name="clrTransRed">99FF0000</color>
+        <color name="clrFontMenuItem">FFFFFFFF</color>
+        <color name="clrFontMenuItemSelected">FF363636</color>
+        <color name="clrFontInactive">FF858585</color>
+        <color name="clrTransparent">00000000</color>
+    </colors>
+    <variables>
+    </variables>
+</globals>
diff --git a/skins/nopacity/xmlfiles/displayaudiotracks.xml b/skins/nopacity/xmlfiles/displayaudiotracks.xml
new file mode 100644
index 0000000..b141439
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displayaudiotracks.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayaudiotracks SYSTEM "../../../dtd/displayaudiotracks.dtd">
+
+<displayaudiotracks x="25%" y="0" width="50%" height="100%" fadetime="{fadeTime}">
+    <!-- Available Variables background:
+    {numtracks}                     number of displayed tracks 
+    -->
+    <background>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10 + {areaheight} / 10 * {numtracks}" layer="1">
+            <fill color="{clrTransBlack}" />
+        </area>
+    </background>
+
+    <!-- Available Variables header:
+    {numtracks}                     number of displayed tracks 
+    {title}                         title of menu 
+    -->
+    <header>
+        <area x="0" y="{areaheight} - {numtracks} * {areaheight} / 10 - {areaheight} / 10" width="100%" height="{areaheight} / 10" layer="2">
+            <drawtext x="10" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage condition="{isstereo}" imagetype="icon" path="ico_stereo" x="{areawidth} - {areaheight}*0.9" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+            <drawimage condition="{isac3}" imagetype="icon" path="ico_ac3" x="{areawidth} - {areaheight}*0.9" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+        </area>
+    </header>
+
+     <!-- Available Variables header:
+    {numelements}                 number of displayed tracks 
+    -->
+    <menuitems x="0" y="{areaheight} - {numelements} * {areaheight} / 10" orientation="vertical" width="100%" height="{numelements} * {areaheight} / 10" align="top" numlistelements="{numelements}">
+        <!-- Available Variables auidotrack listelement:
+        {current}                 true if item is currently selected 
+        {title}                   title of auio track 
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="1%" width="98%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="1%" width="98%" layer="3">
+                <drawtext x="10" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{title}" />
+            </area>
+        </listelement>
+    </menuitems>
+
+</displayaudiotracks>
diff --git a/skins/nopacity/xmlfiles/displaychannel.xml b/skins/nopacity/xmlfiles/displaychannel.xml
new file mode 100644
index 0000000..354e1a7
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaychannel.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaychannel SYSTEM "../../../dtd/displaychannel.dtd">
+
+<displaychannel x="0" y="0" width="100%" height="100%" fadetime="{fadeTime}">
+
+    <background>
+        <area x="1%" y="74%" width="98%" height="25%" layer="1" transparency="{transparency}">
+            <drawimage imagetype="skinpart" path="displaychannelback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="1%" y="74%" width="98%" height="25%" layer="7">
+            <drawimage imagetype="skinpart" path="displaychanneltop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="2%" y="80%" width="14%" height="18%" layer="2">
+            <drawimage imagetype="skinpart" path="channellogoback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <!-- Available Variables channelinfo:
+    {channelnumber}                 Number of Channel, with "-" in case of channel switching
+    {channelname}                   Name of current Channel
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {switching}                     true if a number is pressed on the remote to switch to a dedicated channel
+    -->
+    <channelinfo>
+        <area x="2%" y="80%" width="14%" height="18%" layer="3">
+            <drawimage cache="true" imagetype="channellogo" path="{channelid}" width="94%" height="94%" align="center" valign="center"/>
+        </area>
+        <area x="18%" y="74%" width="42%" height="6%" layer="2">
+            <drawtext x="0" valign="center" font="{vdrOsd}" fontsize="95%" width="100%" color="{clrWhite}" text="{channelnumber}  {channelname}" />
+        </area>
+    </channelinfo>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="78%" y="74%" width="20%" height="6%" layer="2">
+            <drawtext align="right" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrWhite}" text="{daynameshort} {day}.{month} {time}" />
+        </area>
+    </datetime>
+
+    <currentweather>
+        <area condition="{showweather}" x="60%" y="74%" width="18%" height="6%" layer="2">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" x="{areawidth}/2 + {width(temperature)}/2 - {width(weathericon)}/2 + 5" valign="center" width="{areaheight}*0.7" height="{areaheight}*0.7"/>
+            <drawtext name="temperature" x="{areawidth}/2 - {width(temperature)}/2 - {width(weathericon)}/2" valign="center" font="{vdrOsd}" fontsize="70%" color="{clrWhite}" text="{temperature}°C" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables epginfo:
+    {currenttitle}                     Title of the current Schedule
+    {currentsubtitle}                  Subtitle of the current Schedule
+    {currentstart}                     Start of current Schedule in hh:mm
+    {currentstop}                      End of current Schedule in hh:mm 
+    {currentduration}                  Duration of current Schedule in min
+    {currentelapsed}                   Elapsed time of current Schedule in min
+    {currentremaining}                 Remaining time of current Schedule in min
+    {currentrecording}                 true if current Schedule is recorded
+    {nexttitle}                        Title of next Schedule
+    {nextsubtitle}                     Subtitle of next Schedule
+    {nextstart}                        Start of next Schedule in hh:mm
+    {nextstop}                         Stop of next Schedule in hh:mm
+    {nextduration}                     Duration of next Schedule in min
+    {nextrecording}                    true if next Schedule will be recorded
+    -->
+    <epginfo>
+        <area x="18%" y="82%" width="68%" height="6%" layer="2">
+            <drawtext name="starttime" x="0" y="0" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{currentstart}" />
+            <drawtext x="{width(starttime)} + 15" y="0" width="{areawidth} - {width(starttime)} - 15" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{currenttitle}" />
+            <drawtext x="{width(starttime)} + 16" y="55%" width="{areawidth} - {width(starttime)} - 16" font="{vdrOsd}" fontsize="45%" color="{clrWhite}" text="{currentsubtitle}" />
+        </area>
+        <area x="86%" y="82%" width="11%" height="6%" layer="2">
+            <drawtext align="right" y="0" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{currentelapsed}/{currentduration}min" />
+        </area>
+        <area x="18%" y="88%" width="72%" height="6%" layer="2">
+            <drawtext name="starttime" x="0" y="0" font="{vdrOsd}" fontsize="60%" color="{clrGray}" text="{nextstart}" />
+            <drawtext x="{width(starttime)} + 15" y="0" width="{areawidth} - {width(starttime)} - 15" font="{vdrOsd}" fontsize="60%" color="{clrGray}" text="{nexttitle}" />
+            <drawtext x="{width(starttime)} + 16" y="55%" width="{areawidth} - {width(starttime)} - 16" font="{vdrOsd}" fontsize="45%" color="{clrGray}" text="{nextsubtitle}" />
+        </area>
+        <area x="90%" y="88%" width="7%" height="6%" layer="2">
+            <drawtext align="right" y="0" font="{vdrOsd}" fontsize="60%" color="{clrGray}" text="{nextduration}min" />
+        </area>
+    </epginfo>
+
+    <!-- Available Variables progressbar:
+    {start}                            Start of current Schedule in hh:mm
+    {stop}                             End of current Schedule in hh:mm 
+    {duration}                         Total Duration of current Schedule in seconds
+    {elapsed}                          Elapsed time of current Schedule in seconds
+    {remaining}                        Remaining time of current Schedule in seconds
+    -->
+    <progressbar>
+        <area x="17%" y="80%" width="81%" height="2%" layer="2">
+            <drawellipse x="1" y="1" width="{areaheight}-2" height="{areaheight}-2" color="{clrProgressbar}" quadrant="0" />
+            <drawellipse x="1 + {elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight}" y="1" width="{areaheight}-2" height="{areaheight}-2" color="{clrProgressbar}" quadrant="0" />
+            <drawrectangle x="{areaheight}/2" y="1" width="{elapsed}/{duration}*{areawidth} - {elapsed}/{duration}*{areaheight}" height="{areaheight}-2" color="{clrProgressbar}" />
+        </area>
+    </progressbar>
+
+    <progressbarback>
+        <area x="17%" y="80%" width="81%" height="2%" layer="2">
+            <drawellipse x="0" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawellipse x="{areawidth}-{areaheight}" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawrectangle x="{areaheight}/2" y="0" width="{areawidth} - {areaheight}" height="{areaheight}" color="{clrBlack}" />
+        </area>
+    </progressbarback>
+    <!-- Available Variables statusinfo:
+    {isRadio}                          true if channel is a radio channel
+    {hasVT}                            true if channel has video text   
+    {isStereo}                         true if a stereo audio trac is available
+    {isDolby}                          true if a dolby audio track is available
+    {isEncrypted}                      true if channel is encrypted
+    {isRecording}                      true if currently a recording is running on this channel
+    -->
+    <statusinfo>
+        <area x="{areawidth}*0.98 - {areaheight}*0.40 - 25" y="93%" width="{areaheight}*0.25 + 20" height="5%" layer="2">
+            <drawimage condition="{hasVT}" imagetype="icon" path="ico_txton" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="not{hasVT}" imagetype="icon" path="ico_txtoff" x="0" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{isStereo}" imagetype="icon" path="ico_stereoon" x="{areaheight}+5" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="not{isStereo}" imagetype="icon" path="ico_stereooff" x="{areaheight}+5" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{isDolby}" imagetype="icon" path="ico_dolbyon" x="2*{areaheight}+10" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="not{isDolby}" imagetype="icon" path="ico_dolbyoff" x="2*{areaheight}+10" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{isEncrypted}" imagetype="icon" path="ico_encrypted" x="3*{areaheight}+15" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="not{isEncrypted}" imagetype="icon" path="ico_fta" x="3*{areaheight}+15" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{isRecording}" imagetype="icon" path="ico_recon" x="4*{areaheight}+20" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="not{isRecording}" imagetype="icon" path="ico_recoff" x="4*{areaheight}+20" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </statusinfo>
+
+    <!-- Available Variables screenresolution:
+    {screenwidth}                      width of currently displayed channel in px
+    {screenheight}                     height of currently displayed channel in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <screenresolution>
+        <area x="{areawidth}*0.98 - {areaheight}*0.15" y="93%" width="{areaheight}*0.15" height="5%" layer="2">
+            <drawimage imagetype="icon" path="ico_{resolution}" x="0" y="0" width="{areaheight}*3" height="{areaheight}"/>
+        </area>
+    </screenresolution>
+
+    <!-- Available Variables dvbdeviceinfo:
+    {prevAvailable}                     true if previous Channel Group is avaialble
+    {nextAvailable}                     true if next Channel Group is avaialble
+    {group}                             Name of current Channel Group
+    {nextgroup}                         Name of next Channel Group
+    {prevgroup}                         Name of prev Channel Group
+    {sepexists}                         true if a channel separator logo exists
+    {seppath}                           path for separator logo to use in imagetype "seplogo"
+    -->
+    <channelgroup>
+        <area x="2%" y="80%" width="14%" height="18%" layer="2">
+            <drawimage condition="{sepexists}" imagetype="seplogo" path="{seppath}" width="96%" height="96%" align="center" valign="center" />
+            <drawimage condition="not{sepexists}" imagetype="icon" path="ico_channelsep" align="center" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+        </area>
+        <area x="18%" y="82%" width="80%" height="10%" layer="2">
+            <drawtext x="0" width="25%" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{prevgroup}" />
+            <drawtext x="30%" width="40%" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{group}" />
+            <drawtext align="right" width="25%" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrWhite}" text="{nextgroup}" />
+            <drawimage imagetype="icon" path="ico_arrow_left_channelsep" x="25%" valign="center" width="{areawidth}*4/100" height="{areawidth}*4/100"/>
+            <drawimage imagetype="icon" path="ico_arrow_right_channelsep" x="71%" valign="center" width="{areawidth}*4/100" height="{areawidth}*4/100"/>
+        </area>             
+    </channelgroup>
+    <!-- Available Variables signalquality:
+    {signalstrength}                    STR value of currently displayed channel
+    {signalquality}                     SNR value of currently displayed channel
+    -->
+    <signalquality>
+        <area x="17%" y="95%" width="15%" height="4%" layer="3">
+            <drawrectangle x="{areawidth}*{signalstrength}/100" y="0" width="{areawidth} - {areawidth}*{signalstrength}/100" height="45%" color="{clrTransBlack}" />
+            <drawrectangle x="{areawidth}*{signalquality}/100" y="50%" width="{areawidth} - {areawidth}*{signalquality}/100" height="45%" color="{clrTransBlack}" />
+        </area>
+    </signalquality>
+
+    <!-- background of signalmeter, will only be drawn if signalquality was deleted -->
+    <signalqualityback>
+        <area x="17%" y="95%" width="15%" height="4%" layer="2">
+            <drawimage imagetype="skinpart" path="signal" x="0" y="0" width="100%" height="45%"/>
+            <drawimage imagetype="skinpart" path="signal" x="0" y="50%" width="100%" height="45%"/>
+        </area>
+    </signalqualityback>
+
+    <!-- Available Variables scrapercontent:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{showposter}++{isbanner}" x="1%" y="1%" width="{areaheight}*0.13*{mediawidth}/{mediaheight}" height="13%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center"  width="{areawidth}" height="{areaheight}"/>
+        </area>
+        <area condition="{showposter}++not{isbanner}" x="1%" y="1%" width="{areaheight}*0.5*{mediawidth}/{mediaheight}" height="50%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" x="5" y="5" width="{areawidth}-10" height="{areaheight}-10"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="88%" width="90%" height="10%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageStatus" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messageInfo" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageWarning" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messageError" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="88%" width="90%" height="10%" layer="7">
+            <drawtext align="center" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+</displaychannel>
diff --git a/skins/nopacity/xmlfiles/displaymenu.xml b/skins/nopacity/xmlfiles/displaymenu.xml
new file mode 100644
index 0000000..f6040f6
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenu.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymenu SYSTEM "../../../dtd/displaymenu.dtd" [
+<!ENTITY displaymenudefault SYSTEM "displaymenudefault.xml">
+<!ENTITY displaymenumain SYSTEM "displaymenumain.xml">
+<!ENTITY displaymenusetup SYSTEM "displaymenusetup.xml">
+<!ENTITY displaymenuschedules SYSTEM "displaymenuschedules.xml">
+<!ENTITY displaymenutimers SYSTEM "displaymenutimers.xml">
+<!ENTITY displaymenuchannels SYSTEM "displaymenuchannels.xml">
+<!ENTITY displaymenurecordings SYSTEM "displaymenurecordings.xml">
+<!ENTITY displaymenudetailepg SYSTEM "displaymenudetailepg.xml">
+<!ENTITY displaymenudetailrecording SYSTEM "displaymenudetailrecording.xml">
+<!ENTITY displaymenudetailtext SYSTEM "displaymenudetailtext.xml">
+]>
+
+<displaymenu x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- 
+    The following background, header, datetime and colorbuttons definitions are default
+    implementations. If one or more of these elements are not implemented in the subview, 
+    the default implementations are used. 
+    -->
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <!-- top bar -->
+            <drawrectangle x="0" y="0" width="{areawidth}" height="10%" color="{clrBackground}" />
+            <drawrectangle x="30%" y="{areaheight}*0.1 - 1" width="71%" height="1" color="{clrBorder}" />
+            <!-- menu bar -->
+            <drawrectangle x="0" y="10%" width="{areawidth}*29/100" height="81%" color="{clrBackground}" />
+            <drawrectangle x="{areawidth}*29/100 - 1" y="12%" width="1" height="76%" color="{clrBorder}" />
+            <!-- bottom bar -->
+            <drawrectangle x="0" y="90%" width="{areawidth}" height="10%" color="{clrBackground}" />
+            <drawrectangle x="30%" y="{areaheight}*0.9 - 1" width="71%" height="1" color="{clrBorder}" />
+            <!-- upper corner -->
+            <drawellipse x="{areawidth}*29/100" y="{areaheight}/10" width="{areawidth}*2/100" height="{areawidth}*2/100" quadrant="-2" color="{clrBorder}" />
+            <drawellipse x="{areawidth}*29/100 - 1" y="{areaheight}/10 - 1" width="{areawidth}*2/100" height="{areawidth}*2/100" quadrant="-2" color="{clrBackground}" />
+            <!-- lower corner -->
+            <drawellipse x="{areawidth}*29/100" y="{areaheight}*90/100 - {areawidth}*2/100" width="{areawidth}*2/100" height="{areawidth}*2/100" quadrant="-3" color="{clrBorder}" />
+            <drawellipse x="{areawidth}*29/100 - 1" y="{areaheight}*90/100 - {areawidth}*2/100 + 1" width="{areawidth}*2/100" height="{areawidth}*2/100" quadrant="-3" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    -->
+    <header>
+        <area x="1%" y="0" width="64%" height="10%" layer="3">
+            <drawtext x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{title}" />
+        </area>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="65%" y="0" width="34%" height="10%" layer="3">
+            <drawtext align="right" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{daynameshort} {day}.{month} {time}" />
+        </area>
+    </datetime>
+    <!-- Available Variables message:
+    {text}                    message text
+    {status}                  true if message is an status message
+    {info}                    true if message is an info message
+    {warning}                 true if message is an warn message
+    {error}                   true if message is an error message
+    -->
+    <message>
+        <area x="5%" y="80%" width="90%" height="15%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageStatus" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messageInfo" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageWarning" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messageError" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="80%" width="90%" height="15%" layer="7">
+            <drawtext align="center" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+        <area condition="{red1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue1}" x="0" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" />
+        </area>
+
+        <area condition="{red2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue2}" x="25%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" />
+        </area>
+        
+        <area condition="{red3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue3}" x="50%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" />
+        </area>
+        
+        <area condition="{red4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonred" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{red}" />
+        </area>
+        <area condition="{green4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttongreen" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{green}" />
+        </area>
+        <area condition="{yellow4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonyellow" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{yellow}" />
+        </area>
+        <area condition="{blue4}" x="75%" y="90%" width="25%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="buttonblue" align="center" valign="center" width="90%" height="40%"/>
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{blue}" />
+        </area>
+    </colorbuttons>
+    &displaymenudefault;
+    &displaymenumain;
+    &displaymenusetup;
+    &displaymenuschedules;
+    &displaymenutimers;
+    &displaymenuchannels;
+    &displaymenurecordings;
+    &displaymenudetailepg;
+    &displaymenudetailrecording;
+    &displaymenudetailtext;
+</displaymenu>
diff --git a/skins/nopacity/xmlfiles/displaymenuchannels.xml b/skins/nopacity/xmlfiles/displaymenuchannels.xml
new file mode 100644
index 0000000..8a0ff34
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenuchannels.xml
@@ -0,0 +1,127 @@
+<menuchannels x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%">
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="99%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables channels menu listelement:
+        {number}                  number of the displayed channel
+        {name}                    name of the displayed channel
+        {channelid}               ChannelID as path to display channel logo
+        {transponder}             Transponder of channel
+        {frequency}               Frequency of channel
+        {source}                  Source of channel (S, C, T)
+        {sourcedescription}       Descriptin of source from sources.conf
+        {position}                orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                  true if channel is a ATSC channel
+        {isCable}                 true if channel is cable channel
+        {isSat}                   true if channel is a satellite channel
+        {isTerr}                  true if channel is terrestrical
+        {presenteventtitle}       title of present event on this channel
+        {presenteventstart}       present event start time in hh::mm
+        {presenteventstop}        present event event stop time in hh::mm
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <!-- background and foreground-->
+            <area x="0" width="28%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <!-- channel logo -->
+            <area condition="not{separator}" x="5" width="6%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <!-- scrollable channel name -->
+            <areascroll condition="not{separator}++not{current}" scrollelement="channelname" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="20%" layer="3">
+                <drawtext name="channelname" x="0" y="5" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{number} {name}" />
+            </areascroll>
+            <areascroll condition="not{separator}++{current}" scrollelement="channelname" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="20%" layer="3">
+                <drawtext name="channelname" x="0" y="5" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{number} {name}" />
+            </areascroll>
+            <!-- channel information -->
+            <area condition="not{separator}++not{current}" x="7%" width="20%" layer="3">
+                <drawtext x="0" y="60%" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItem}" text="{sourcedescription}, {tr(transponder)} {transponder}" />
+            </area>
+            <area condition="not{separator}++{current}" x="7%" width="20%" layer="3">
+                <drawtext x="0" y="60%" font="{vdrOsd}" fontsize="30%" color="{clrFontMenuItemSelected}" text="{sourcedescription}, {tr(transponder)} {transponder}" />
+            </area>
+            <!-- separator -->
+            <area condition="{separator}" x="0" width="28%" layer="3">
+                <drawimage name="sep" imagetype="icon" path="ico_channelsep" x="10" valign="center" width="{areaheight}-10" height="{areaheight}-10"/>
+                <drawtext x="{width(sep)} + 20" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrFontInactive}" text="{name}" />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {number}                        number of the displayed channel
+        {name}                          name of the displayed channel
+        {channelid}                     ChannelID as path to display channel logo
+        {transponder}                   Transponder of channel
+        {frequency}                     Frequency of channel
+        {source}                        Source of channel (S, C, T)
+        {sourcedescription}             Descriptin of source from sources.conf
+        {position}                      orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                        true if channel is a ATSC channel
+        {isCable}                       true if channel is cable channel
+        {isSat}                         true if channel is a satellite channel
+        {isTerr}                        true if channel is terrestrical
+        {presenteventtitle}             title of present event on this channel
+        {presenteventstart}             present event start time in hh::mm
+        {presenteventstop}              present event stop time in hh::mm
+        {presenteventshorttext}         present event short text
+        {presenteventdescription}       present event description
+        {presenteventday}               present event name of day
+        {presenteventdate}              present event date in dd:mm:yy
+        {presenteventelapsed}           present event elapsed time
+        {presenteventduration}          present event duration
+        {hasposter}                     true if a scraped poster is available for this elements present evemt
+        {posterwidth}                   width of scraped poster
+        {posterheight}                  height of scraped poster
+        {posterpath}                    absolute path of scraped poster
+        {nexteventtitle}                title of next event on this channel
+        {nexteventstart}                next event start time in hh::mm
+        {nexteventstop}                 next event event stop time in hh::mm
+        {nexteventshorttext}            next event short text
+        {nexteventdescription}          next event description
+        {nexteventday}                  next event name of day
+        {nexteventdate}                 next event date in dd:mm:yy
+        {nexteventdate}                 next event duration
+        {schedule[]}                    array with following 10 schedules
+        {schedule[title]}               title of event
+        {schedule[shorttext]}           shorttext of event
+        {schedule[start]}               start time of event in hh:mm
+        {schedule[stop]}                stop time of event in hh:mm        
+        -->
+        <currentelement delay="500" fadetime="300">
+            <area x="32%" y="2%" width="67%" height="96%" layer="2">
+                <fill color="{clrTransBlack}" />
+            </area>
+            <area x="32%" y="2%" width="67%" height="76%" layer="2">
+                <!-- Logo and Header -->
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="1%" y="1%" width="20%" height="15%" />
+                <drawtext name="channelname" x="23%" y="{height(logo)} * 3 / 10" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{number} - {name}" />
+                <drawtext x="23%" y="{posy(channelname)} + {height(channelname)}" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{sourcedescription}, {tr(transponder)} {transponder}" />
+                <!-- NOW -->
+                <drawtext name="headernow" x="1%" y="{posy(logo)} + {height(logo)} + 10" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(now)}: {presenteventstart} - {presenteventstop}" />
+                <drawtext name="titlenow" x="1%" y="{posy(headernow)} + {height(headernow)}" width="48%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{presenteventtitle}" />
+                <drawtextbox x="1%" y="{posy(titlenow)} + {height(titlenow)} + 10" width="48%" height="{areaheight} - {posy(titlenow)} - {height(titlenow)} - 10" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{presenteventshorttext}

{presenteventdescription}" />
+                <!-- NEXT -->
+                <drawtext name="headernext" x="51%" y="{posy(logo)} + {height(logo)} + 10" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(next)}: {nexteventstart} - {nexteventstop}" />
+                <drawtext name="titlenext" x="51%" y="{posy(headernext)} + {height(headernext)}" width="48%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{nexteventtitle}" />
+                <drawtextbox x="51%" y="{posy(titlenext)} + {height(titlenext)} + 10" width="48%" height="{areaheight} - {posy(titlenext)} - {height(titlenext)} - 10" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{nexteventshorttext}

{nexteventdescription}" />
+            </area>
+            <areascroll mode="forthandback" orientation="vertical" delay="1000" scrollspeed="medium" x="32%" y="78%" width="67%" height="20%" layer="2">
+                <drawtext x="10" y="0" font="{semibold}" fontsize="20%" color="{clrWhite}" text="{tr(nextschedules)}:" />
+                <loop name="schedule" x="0" y="{areaheight}/4 + 5" orientation="vertical">
+                    <drawtext x="10" font="{vdrOsd}" width="{areawidth}-20" fontsize="19%" color="{clrWhite}" text="{schedule[start]} {schedule[title]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+</menuchannels>
\ No newline at end of file
diff --git a/skins/nopacity/xmlfiles/displaymenudefault.xml b/skins/nopacity/xmlfiles/displaymenudefault.xml
new file mode 100644
index 0000000..a2d0de3
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenudefault.xml
@@ -0,0 +1,65 @@
+ <menudefault x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="0" scaletvy="0" scaletvwidth="0" scaletvheight="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+
+    <!-- IMPORTANT: menuitemwidth and determinatefont have to be defined here. menuitemwidth defines the total width of the 
+    default menu items, determinatefont the function which sets the actual font to use. With that it is possible to determinate
+    the correct column widths -->
+    <menuitems x="1%" y="10%" orientation="vertical" width="96%" height="80%" align="center" menuitemwidth="96%" determinatefont="column1" numlistelements="16">
+        <!-- Available Variables default menu listelement:
+        {column1}                   text of column1
+        {column2}                   text of column2
+        {column3}                   text of column3
+        {column4}                   text of column4
+        {column5}                   text of column5
+        {column6}                   text of column6
+        {column2set}                true if column2 is used
+        {column3set}                true if column3 is used
+        {column4set}                true if column4 is used
+        {column5set}                true if column5 is used
+        {column6set}                true if column6 is used
+        {column2x}                  proposed x value of column2
+        {column3x}                  proposed x value of column3
+        {column4x}                  proposed x value of column4
+        {column5x}                  proposed x value of column5
+        {column6x}                  proposed x value of column6
+        {column1width}              proposed width of column1
+        {column2width}              proposed width of column2
+        {column3width}              proposed width of column3
+        {column4width}              proposed width of column4
+        {column5width}              proposed width of column5
+        {column6width}              proposed width of column6
+        {current}                   true if column is currently selected 
+        {separator}                 true if column is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="100%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubuttondefault" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttondefaultactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <areascroll scrollelement="column1" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="1%" width="{column1width}" layer="3">
+                <drawtext condition="not{current}" name="column1" x="{column1x}" width="{column1width}" valign="center" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column1}" />
+                <drawtext condition="{current}" name="column1" x="{column1x}" width="{column1width}" valign="center" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column1}" />
+            </areascroll>
+            <area x="1%" width="100%" layer="3">
+                <drawtext condition="{column2set}++not{current}" x="{column2x}" valign="center" width="{column2width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column2}" />
+                <drawtext condition="{column2set}++{current}" x="{column2x}" valign="center" width="{column2width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column2}" />
+                <drawtext condition="{column3set}++not{current}" x="{column3x}" valign="center" width="{column3width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column3}" />
+                <drawtext condition="{column3set}++{current}" x="{column3x}" valign="center" width="{column3width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column3}" />
+                <drawtext condition="{column4set}++not{current}" x="{column4x}" valign="center" width="{column4width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column4}" />
+                <drawtext condition="{column4set}++{current}" x="{column4x}" valign="center" width="{column4width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column4}" />
+                <drawtext condition="{column5set}++not{current}" x="{column5x}" valign="center" width="{column5width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column5}" />
+                <drawtext condition="{column5set}++{current}" x="{column5x}" valign="center" width="{column5width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column5}" />
+                <drawtext condition="{column6set}++not{current}" x="{column6x}" valign="center" width="{column6width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItem}" text="{column6}" />
+                <drawtext condition="{column6set}++{current}" x="{column6x}" valign="center" width="{column6width}" font="{vdrOsd}" fontsize="90%" color="{clrFontMenuItemSelected}" text="{column6}" />
+            </area>
+        </listelement>
+        
+    </menuitems>
+</menudefault>
diff --git a/skins/nopacity/xmlfiles/displaymenudetailepg.xml b/skins/nopacity/xmlfiles/displaymenudetailepg.xml
new file mode 100644
index 0000000..a49ad36
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenudetailepg.xml
@@ -0,0 +1,257 @@
+<menudetailedepg x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="25%" width="2%" height="60%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     day of current event
+    {date}                    date of current event in dd.mm.yy
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {channelid}               ChannelID as path to display channel logo
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {epgpicavailable}         true if a epg picture is available
+    {epgpicpath}              path of epg picture
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="98%" height="15%" layer="2">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="1%" y="10%" width="98%" height="15%" layer="3">
+            <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="80%" valign="center" />
+            
+            <drawimage condition="{isseries}++{banneravailable}++not{epgpicavailable}" imagetype="image" path="{bannerpath}" x="{areawidth} - {areawidth}/3 - 10" valign="center" width="{areawidth}/3" height="{areawidth}/3 * {bannerheight} / {bannerwidth}"/>
+            <drawimage condition="{ismovie}++{posteravailable}++not{epgpicavailable}" imagetype="image" path="{posterpath}" x="{areawidth} - {areaheight}*8/10" valign="center" width="{areaheight}*8 / 10 * {posterheight} / {posterwidth}" height="{areaheight}*8 / 10"/>
+            <drawimage condition="{epgpicavailable}" imagetype="image" path="{epgpicpath}" x="{areawidth} - {areaheight}*8/10 * 174 / 130" valign="center" width="{areaheight}*8/10 * 174 / 130" height="{areaheight}*8 / 10"/>
+
+            <drawtext name="title" x="{width(logo)} + 20" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{title}" />
+            <drawtext name="datetime" x="{width(logo)} + 20" y="{posy(title)} - {height(datetime)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{day} {date} {start} - {stop} ({duration} mins)" />
+            <drawtext name="shorttext" x="{width(logo)} + 20" y="{posy(title)} + {height(title)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+    </detailheader>
+
+    <!-- Available Variables in tab elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {description}             description of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     day of current event
+    {date}                    date of current event in dd.mm.yy
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {channelid}               ChannelID as path to display channel logo
+    {hasreruns}               true if reruns of this event are found
+    {reruns[]}                array with reruns
+    {reruns[title]}           title of rerun
+    {reruns[shorttext]}       shorttext of rerun
+    {reruns[date]}            date of rerun in dd:mm
+    {reruns[day]}             short dayname of rerun
+    {reruns[start]}           start time of rerun in hh:mm
+    {reruns[stop]}            stop time of rerun in hh:mm
+    {reruns[channelname]}     name of channel on which rerun occurs
+    {reruns[channelnumber]}   number of channel on which rerun occurs
+    {reruns[channelid]}       id of channel on which rerun occurs to display channel logo
+    {reruns[channellogoexists]} true if channel logo exists
+    {epgpic1avaialble}        true if first epg picture is available
+    {epgpic2avaialble}        true if first epg picture is available
+    {epgpic3avaialble}        true if first epg picture is available
+    {epgpic1path}             path of first epg picture
+    {epgpic2path}             path of second epg picture
+    {epgpic3path}             path of third epg picture
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- TAB EPGINFO -->
+    <tab name="EPG Info" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="10" width="96%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.75" y="10" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.75" y="10" width="{areawidth}*0.25" height="{areawidth} * 0.25 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="10" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="10" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" />
+    </tab>
+    <!-- TAB RERUNS -->
+    <tab condition="{hasreruns}" name="{tr(reruns)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" name="title" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{tr(rerunsof)} '{title}'" />
+        <loop name="reruns" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="vertical">
+            <drawimage name="logo" condition="{reruns[channellogoexists]}" imagetype="channellogo" path="{reruns[channelid]}" x="0" width="10%" height="10%" />
+            <drawtext name="channelname" condition="not{reruns[channellogoexists]}" x="-5" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{reruns[channelname]}" />
+            <drawtext condition="{reruns[channellogoexists]}" x="{width(logo)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]}  {reruns[shorttext]}" />
+            <drawtext condition="not{reruns[channellogoexists]}" x="{width(channelname)}+20" y="-5" width="{areawidth} - {width(logo)} - 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{reruns[day]} {reruns[date]} {reruns[start]} - {reruns[stop]}: {reruns[title]}  {reruns[shorttext]}" />
+        </loop>
+    </tab>
+    <!-- TAB ACTORS -->
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{vdrOsd}" fontsize="15%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <!-- TAB TVDBINFO -->
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstaire [...]
+    </tab>
+    <!-- TAB SERIESGALERY -->
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <!-- TAB MOVIEDBINFO -->
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}
||{tr(revenue)}: {movierevenue}

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runtime) [...]
+    </tab>
+    <!-- TAB MOVIEGALERY -->
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>
+    <!-- Available Variables tablabels:
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="1%" y="85%" width="98%" height="5%" layer="3">
+            <drawrectangle x="0" y="1" width="100%" height="1" color="{clrBorder}" />
+            <loop name="tabs" x="0" y="0" orientation="horizontal">
+                <drawrectangle condition="{tabs[current]}" x="0" y="1" width="{width(label)}" height="100%" color="{clrBorder}" />
+                <drawrectangle condition="not{tabs[current]}" x="0" y="1" width="{width(label)}" height="100%" color="{clrBorder}" />
+                <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" />
+                <drawtext name="label" x="0" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" text="  {tabs[title]}  " />
+            </loop>
+        </area>
+    </tablabels>
+</menudetailedepg>
\ No newline at end of file
diff --git a/skins/nopacity/xmlfiles/displaymenudetailrecording.xml b/skins/nopacity/xmlfiles/displaymenudetailrecording.xml
new file mode 100644
index 0000000..28469db
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenudetailrecording.xml
@@ -0,0 +1,235 @@
+<menudetailedrecording x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="25%" width="2%" height="60%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current event in hh:mm
+    {duration}                real duration of recording in minutes
+    {durationevent}           duration of according event in minutes
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {recimgavailable}         true if a recording image is available in the recording path
+    {recimgpath}              path of rec image
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="98%" height="15%" layer="2">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="1%" y="10%" width="98%" height="15%" layer="3">
+            <drawimage condition="{isseries}++{banneravailable}++not{recimgavailable}" imagetype="image" path="{bannerpath}" x="{areawidth} - {areawidth}/3 - 10" valign="center" width="{areawidth}/3" height="{areawidth}/3 * {bannerheight} / {bannerwidth}"/>
+            <drawimage condition="{ismovie}++{posteravailable}++not{recimgavailable}" imagetype="image" path="{posterpath}" x="{areawidth} - {areaheight}*8/10" valign="center" width="{areaheight}*8 / 10 * {posterheight} / {posterwidth}" height="{areaheight}*8 / 10"/>
+            <drawimage condition="{recimgavailable}" imagetype="image" path="{recimgpath}" x="{areawidth} - {areaheight}*8/10 * 174 / 130" valign="center" width="{areaheight}*8/10 * 174 / 130" height="{areaheight}*8 / 10"/>
+            <drawtext name="title" x="20" valign="center" font="{vdrOsd}" fontsize="35%" color="{clrWhite}" text="{epgname}" />
+            <drawtext name="datetime" x="20" y="{posy(title)} - {height(datetime)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{date} {time} ({duration} mins)" />
+            <drawtext name="shorttext" x="20" y="{posy(title)} + {height(title)}" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{shorttext}" />
+        </area>
+    </detailheader>
+    <!-- Available Variables in tab elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 Name of recording (Name from EPG)
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {duration}                real duration of recording in minutes
+    {durationevent}           duration of according event in minutes
+
+    {recordingsize}           size of recording (automatically in GB / MB)
+    {recordingsizecutted}     size of cutted recording (automatically in GB / MB)
+    {recordinglength}         length of recording (in hh::mm:ss)
+    {recordinglengthcutted}   length of cutted recording (in hh::mm:ss)
+    {recordingbitrate}        bitrate of recording (in MBit/s)
+    {recordingformat}         format of recording (TS / PS)
+    {searchtimer}             name of accordign searchtimer (if available)
+    
+    {recimg1avaialble}        true if first recording image is available
+    {recimg2avaialble}        true if first recording image is available
+    {recimg3avaialble}        true if first recording image is available
+    {recimg1path}             path of first recording image
+    {recimg2path}             path of second recording image
+    {recimg3path}             path of third recording image
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <!-- just define as many tabs as needed -->
+    <tab name="Info" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox condition="not{isseries}++not{ismovie}" x="0" y="0" width="96%" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{description}" />
+        <drawimage condition="{isseries}" name="seriesposter" imagetype="image" path="{seriesposter1path}" x="{areawidth}*0.7" y="0" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage condition="{ismovie}" name="movieposter" imagetype="image" path="{posterpath}" x="{areawidth}*0.7" y="0" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}" />
+        <drawtextbox condition="{isseries}" x="0" y="0" width="96%" float="topright" floatwidth="{width(seriesposter)} + 10" floatheight="{height(seriesposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" />
+        <drawtextbox condition="{ismovie}" x="0" y="0" width="96%" float="topright" floatwidth="{width(movieposter)} + 10" floatheight="{height(movieposter)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{description}" />
+    </tab>
+    <tab name="{tr(recinfo)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" y="0" name="title" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{tr(recinfo)}" />
+        <drawtextbox x="0" y="{height(title)} + 20" width="96%" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{tr(recsize)}: {recordingsize}
{tr(recsizecutted)}: {recordingsizecutted}
{tr(reclength)}: {recordinglength}
{tr(reclengthcutted)}: {recordinglengthcutted}
{tr(bitrate)}: {recordingbitrate}
{tr(format)}: {recordingformat}
{tr(searchtimer)}: {searchtimer}
" />
+    </tab>
+    <tab condition="{isseries}||{ismovie}" name="{tr(actors)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext align="center" name="title" y="0" font="{vdrOsd}" fontsize="10%" color="{clrWhite}" text="{tr(actors)}" />
+        <loop name="actors" x="0" y="{height(title)} + 10" width="{areawidth}" orientation="horizontal" columnwidth="{areawidth}/5" rowheight="{areawidth}/5*1.8" overflow="linewrap">
+            <drawimage name="thumb" imagetype="image" path="{actors[thumb]}" x="20" y="0" width="{columnwidth}-40" height="{columnwidth} * {actors[thumbheight]} / {actors[thumbwidth]} - 40 * {actors[thumbheight]} / {actors[thumbwidth]}"/>
+            <drawtext align="center" y="{height(thumb)} + 10" width="{columnwidth}" name="actorname" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[name]}" />
+            <drawtext align="center" y="{height(thumb)} + 10 + {height(actorname)}" width="{columnwidth}" font="{vdrOsd}" fontsize="7%" color="{clrWhite}" text="{actors[role]}" />
+        </loop>
+    </tab>
+    <tab condition="{isseries}" name="TvDBInfo" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="episodeimage" imagetype="image" path="{episodeimagepath}" x="{areawidth}*0.7" y="{height(banner)} + 20" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {episodeimageheight} / {episodeimagewidth}"/>
+        <drawimage name="seasonposter" imagetype="image" path="{seasonposterpath}" x="{areawidth}*0.7" y="{height(banner)} + {height(episodeimage)} + 30" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {seasonposterheight} / {seasonposterwidth}"/>
+        <drawtextbox x="0" y="{height(banner)} + 20" width="96%" float="topright" floatwidth="{width(seasonposter)} + 10" floatheight="{height(episodeimage)} + {height(seasonposter)} + 30" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(episode)}: {episodetitle} ({tr(season)} {episodeseason}, {tr(episode)} {episodenumber}) 

{episodeoverview}|

{tr(gueststars)}: {episodegueststars}||

{tr(seriesfirstaired)}: {seriesfirstaired}||
{tr(episodefirstaire [...]
+    </tab>
+    <tab condition="{isseries}" name="{tr(seriesgalery)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="banner1" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner1height} / {seriesbanner1width}"/>
+        <drawimage name="fanart1" imagetype="image" path="{seriesfanart1path}" align="center" y="{posy(banner1)} + {height(banner1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart1height} / {seriesfanart1width}"/>
+        <drawimage name="banner2" imagetype="image" path="{seriesbanner2path}" align="center" y="{posy(fanart1)} + {height(fanart1)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner2height} / {seriesbanner2width}"/>
+        <drawimage name="fanart2" imagetype="image" path="{seriesfanart2path}" align="center" y="{posy(banner2)} + {height(banner2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart2height} / {seriesfanart2width}"/>
+        <drawimage name="banner3" imagetype="image" path="{seriesbanner3path}" align="center" y="{posy(fanart2)} + {height(fanart2)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesbanner3height} / {seriesbanner3width}"/>
+        <drawimage name="fanart3" imagetype="image" path="{seriesfanart3path}" align="center" y="{posy(banner3)} + {height(banner3)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {seriesfanart3height} / {seriesfanart3width}"/>
+        <drawimage name="poster1" imagetype="image" path="{seriesposter1path}" align="center" y="{posy(fanart3)} + {height(fanart3)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter1height} / {seriesposter1width}"/>
+        <drawimage name="poster2" imagetype="image" path="{seriesposter2path}" align="center" y="{posy(poster1)} + {height(poster1)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter2height} / {seriesposter2width}"/>
+        <drawimage name="poster3" imagetype="image" path="{seriesposter3path}" align="center" y="{posy(poster2)} + {height(poster2)} + 20" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesposter3height} / {seriesposter3width}"/>
+    </tab>
+    <tab condition="{ismovie}" name="MovieDBInfo" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="poster" imagetype="image" path="{posterpath}" x="70%" y="10" width="{areawidth}*0.3" height="{areawidth} * 0.3 * {posterheight} / {posterwidth}"/>
+        <drawtextbox x="0" y="10" width="96%" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(originaltitle)}: {movieoriginalTitle}

|{tr(genre)}: {moviegenres}

||{movietagline}

|{movieoverview}

|{tr(budget)}: {moviebudget}$
||{tr(revenue)}: {movierevenue}$

||{tr(adult)}: {movieadult}
||{tr(releasedate)}: {moviereleasedate}
||{tr(runtim [...]
+    </tab>
+    <tab condition="{ismovie}" name="{tr(moviegalery)}" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawimage name="fanart" imagetype="image" path="{fanartpath}" align="center" y="10" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {fanartheight} / {fanartwidth}"/>
+        <drawimage name="poster" imagetype="image" path="{posterpath}" align="center" y="{height(fanart)} + 30" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {posterheight} / {posterwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionfanart" imagetype="image" path="{collectionfanartpath}" align="center" y="{posy(poster)} + {height(poster)} + 20" width="{areawidth}*0.9" height="{areawidth} * 0.9 * {collectionfanartheight} / {collectionfanartwidth}"/>
+        <drawimage condition="{movieiscollection}" name="collectionposter" imagetype="image" path="{collectionposterpath}" align="center" y="{posy(collectionfanart)} + {height(collectionfanart)} + 20" width="{areawidth}*0.6" height="{areawidth} * 0.6 * {collectionposterheight} / {collectionposterwidth}"/>
+    </tab>
+
+    <!-- Available Variables tablabels:
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+        <area x="1%" y="85%" width="98%" height="5%" layer="3">
+            <loop name="tabs" x="0" y="0" orientation="horizontal">
+                <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrBorder}" />
+                <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrBorder}" />
+                <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" />
+                <drawtext name="label" x="0" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" text="  {tabs[title]}  " />
+            </loop>
+        </area>
+    </tablabels>
+
+</menudetailedrecording>
diff --git a/skins/nopacity/xmlfiles/displaymenudetailtext.xml b/skins/nopacity/xmlfiles/displaymenudetailtext.xml
new file mode 100644
index 0000000..dae4e61
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenudetailtext.xml
@@ -0,0 +1,25 @@
+<menudetailedtext x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="11%" width="2%" height="79%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in tab elements:
+    {text}                    detailed text
+    -->
+    <tab name="text" x="2%" y="11%" width="94%" height="79%" layer="2" scrollheight="{areaheight}/4">
+        <drawtextbox x="0" y="0" width="100%" font="{light}" fontsize="5%" color="{clrWhite}" text="{text}" />
+    </tab>
+
+</menudetailedtext>
\ No newline at end of file
diff --git a/skins/nopacity/xmlfiles/displaymenumain.xml b/skins/nopacity/xmlfiles/displaymenumain.xml
new file mode 100644
index 0000000..5af1bc9
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenumain.xml
@@ -0,0 +1,152 @@
+<menumain x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%" >
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    -->
+    <header>
+        <area x="1%" y="0" width="64%" height="10%" layer="3">
+            <drawimage imagetype="icon" path="ico_vdrlogo" x="0" valign="center" width="{areaheight} * 0.9 * 160 / 70" height="{areaheight}*0.9"/>
+            <drawtext x="{areaheight} * 0.9 * 160 / 70 + 10" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{vdrversion}" />
+        </area>
+    </header>
+
+    <!-- Available Variables timers:
+    {numtimers}                  number of active timers (max. 15 timers will be displayed)
+    {numtimerconflicts}          number of current timer conflicts
+    {timer1exists}               true if timer 1 available
+    {timer2exists}               true if timer 2 available
+    ...
+    {timer15exists}              true if timer 15 available
+    {timers[]}                   array with active timers (local and remote if remotetimers plugin is in use)
+    {timers[title]}              title of timer
+    {timers[datetime]}           date and time of timer
+    {timers[recording]}          true if timer is recording currently
+    {timers[channelname]}        name of channel for which timer is created
+    {timers[channelnumber]}      number of channel
+    {timers[channelid]}          ChannelID of channel
+    {timers[channellogoexists]}  true if channel logo exists
+    -->
+    <timers>
+        <area x="85%" y="28%" width="14%" height="60%" layer="1">
+            <drawrectangle condition="gt({numtimers}, 0)" x="0" y="0" width="{areawidth}" height="{areaheight} / 4 * 99 / 100" color="{clrTransBlack}" />
+            <drawrectangle condition="gt({numtimers}, 1)" x="0" y="{areaheight} / 4" width="{areawidth}" height="{areaheight} / 4 * 99 / 100" color="{clrTransBlack}" />
+            <drawrectangle condition="gt({numtimers}, 2)" x="0" y="{areaheight} / 2" width="{areawidth}" height="{areaheight} / 4 * 99 / 100" color="{clrTransBlack}" />
+            <drawrectangle condition="gt({numtimers}, 3)" x="0" y="{areaheight} * 3 / 4" width="{areawidth}" height="{areaheight} / 4 * 99 / 100" color="{clrTransBlack}" />
+        </area>
+        <area x="85%" y="28%" width="14%" height="60%" layer="2">
+            <loop name="timers" x="0" y="0" orientation="vertical" columnwidth="100%" rowheight="{areaheight} / 4" overflow="cut">
+                <drawrectangle condition="{timers[recording]}" x="0" y="0" width="{columnwidth}" height="{rowheight} * 99 / 100" color="{clrTransRed}" />
+                <drawimage  cache="true" name="logo" imagetype="channellogo" path="{timers[channelid]}" width="80%" height="{rowheight} / 2" align="center" y="5" />
+                <drawtextbox x="5" y="{height(logo)}+2" width="{columnwidth}-10" align="center" maxlines="2" font="{vdrOsd}" fontsize="4%" color="{clrWhite}" text="{timers[title]}" />
+                <drawtext name="datetime" align="center" y="{rowheight}*84/100" font="{vdrOsd}" fontsize="4%" color="{clrWhite}" text="{timers[datetime]}" />
+            </loop>
+        </area>
+    </timers>
+
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables discusage:
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <discusage>
+        <area x="89%" y="11%" width="10%" height="16%" layer="1">
+            <fill condition="lt({freepercent}, 6)" color="{clrTransRed}" />
+            <fill condition="gt({freepercent}, 5)" color="{clrBackground}" />
+            <drawimage imagetype="skinpart" path="discpercent" x="0" y="82%" width="{areawidth}" height="18%"/>
+        </area>
+        <area x="89%" y="11%" width="10%" height="16%" layer="2">
+            <drawimage imagetype="icon" path="ico_discusage" align="center" y="2" width="{areawidth}*65/100" height="{areawidth}*65/100"/>
+            <drawtext align="center" y="42%" font="{vdrOsd}" fontsize="18%" color="{clrWhite}" text="{freetime}h {tr(free)}" />
+            <drawrectangle x="{areawidth}*{usedpercent}/100" y="82%" width="{areawidth} - {areawidth}*{usedpercent}/100" height="18%" color="{clrTransBlack}" />
+            <drawtext align="center" y="82%" font="{vdrOsd}" fontsize="19%" color="{clrWhite}" text="{usedpercent}%" />
+        </area>        
+    </discusage>
+
+    <currentweather>
+        <area x="63%" y="11%" width="25%" height="16%" layer="1">
+            <fill color="{clrBackground}"/>
+        </area>
+        <area x="63%" y="11%" width="25%" height="16%" layer="2">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" x="5" valign="center" width="{areaheight}*0.7" height="{areaheight}*0.7"/>
+        </area>
+        <area x="75%" y="11%" width="12%" height="16%" layer="2">
+            <drawtext align="right" valign="center" font="{vdrOsd}" fontsize="40%" color="{clrWhite}" text="{temperature}°C" />
+            <drawtext x="0" y="5" font="{vdrOsd}" fontsize="18%" color="{clrWhite}" text="{mintemperature}°C - {maxtemperature}°C" />
+            <drawtext x="0" y="82%" font="{vdrOsd}" width="100%" fontsize="15%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </currentweather>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+    </devices>
+
+    <!-- Available Variables systemload:
+    {load}                      current system load
+    -->
+    <systemload>
+    </systemload>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="28%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables main menu listelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="100%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="0" width="100%" layer="7">
+                <drawimage imagetype="skinpart" path="menubuttontop" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="0" width="100%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" x="10" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="23%" width="77%" layer="3">
+                <drawtext condition="not{current}" name="menutext" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{number} {label}" />
+                <drawtext condition="{current}" name="menutext" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{number} {label}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+        </currentelement>
+    </menuitems>
+
+</menumain>
diff --git a/skins/nopacity/xmlfiles/displaymenurecordings.xml b/skins/nopacity/xmlfiles/displaymenurecordings.xml
new file mode 100644
index 0000000..53ca60d
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenurecordings.xml
@@ -0,0 +1,94 @@
+<menurecordings x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%">
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="99%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables recordings menu listelement:
+        {name}                  Name of recording
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {duration}              real duration of recording in minutes
+        {durationevent}         duration of corresponding event in minutes
+        {current}               true if item is currently selected
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposterthumbnail}    true if a scraped poster thumbnail is available for recording
+        {thumbnailbwidth}       width of scraped poster thumbnail
+        {thumbnailheight}       height of scraped poster thumbnail
+        {thumbnailpath}         absolute path of scraped poster thumbnail
+        -->
+        <listelement>
+            <!-- background and foreground-->
+            <area x="0" width="28%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <!-- Folders -->
+            <area condition="{folder}" x="1%" width="27%" layer="3">
+                <drawimage name="foldericon" imagetype="icon" path="ico_recfolder" x="0" width="0.9*{areaheight} * 92 / 136" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <areascroll condition="{folder}" scrollelement="foldername" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="5%" width="23%" layer="3">
+                <drawtext condition="not{current}" name="foldername" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{name} ({numrecordingsfolder}, {newrecordingsfolder} new)" />
+                <drawtext condition="{current}" name="foldername" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{name} ({numrecordingsfolder}, {newrecordingsfolder} new)" />
+            </areascroll>
+            <!-- Recording -->
+            <area condition="{hasposterthumbnail}++not{folder}" x="1%" width="4%" layer="3">
+                <drawimage imagetype="image" path="{thumbnailpath}" x="0" width="0.9*{areaheight} * {thumbnailbwidth} / {thumbnailheight}" height="0.9*{areaheight}" valign="center" />
+            </area>
+            <areascroll condition="not{folder}" scrollelement="recname" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="5%" width="23%" layer="3">
+                <drawtext condition="not{current}" name="recname" x="0" y="5" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{name}" />
+                <drawtext condition="{current}" name="recname" x="0" y="5" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{name}" />
+            </areascroll>
+            <area condition="not{folder}" x="5%" width="23%" layer="3">
+                <drawtext condition="not{current}" x="0" y="55%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{date} {time}" />
+                <drawtext condition="{current}" x="0" y="55%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{date} {time}" />
+                <drawimage condition="{new}" name="new" imagetype="icon" path="ico_recnew" x="{areawidth} - {areaheight}/2 - 5" y="50%" width="{areaheight}*4/10" height="{areaheight}*4/10" />
+                <drawimage condition="{new}++{cutted}" imagetype="icon" path="ico_cutted" x="{areawidth} - {areaheight} - 10" y="50%" width="{areaheight}*4/10" height="{areaheight}*4/10" />
+                <drawimage condition="not{new}++{cutted}" imagetype="icon" path="ico_cutted" x="{areawidth} - {areaheight}/2 - 5" y="50%" width="{areaheight}*4/10" height="{areaheight}*4/10"  />
+            </area>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {name}                  Real Name of recording (Name of Recording Folder)
+        {epgname}               Name of recording (Name from EPG)
+        {shorttext}             Short Text of recording
+        {description}           Descrption of recording        
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {duration}              real duration of recording in minutes
+        {durationevent}         duration of corresponding event in minutes
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposter}             true if a scraped poster is available for recording
+        {posterwidth}           width of scraped poster
+        {posterheight}          height of scraped poster
+        {posterpath}            absolute path of scraped poster
+        -->
+        <currentelement delay="500" fadetime="300">
+            <area x="32%" y="2%" width="67%" height="96%" layer="2">
+                <fill color="{clrTransBlack}" />
+                <!-- header -->
+                <drawtext name="title" x="1%" y="0" width="98%" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{epgname}" />
+                <drawtext name="shorttext" x="1%" y="{height(title)}" width="98%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{shorttext}" />
+                <drawtext name="datetime" x="1%" y="{posy(shorttext)} + {height(shorttext)}" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{date} {time}, {duration} min" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="3*{areawidth}/4" y="{posy(datetime)} + {height(datetime)} + 20" width="{areawidth}/4" height="{areawidth}/4 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="1%" y="{posy(poster)}" width="98%" height="{areaheight} - {posy(poster)}" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 10" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="1%" y="{posy(poster)}" width="98%" height="{areaheight} - {posy(poster)}" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{description}" />
+            </area>
+        </currentelement>
+    </menuitems>
+
+</menurecordings>
\ No newline at end of file
diff --git a/skins/nopacity/xmlfiles/displaymenuschedules.xml b/skins/nopacity/xmlfiles/displaymenuschedules.xml
new file mode 100644
index 0000000..27b84e9
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenuschedules.xml
@@ -0,0 +1,235 @@
+<menuschedules x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%" >
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {channelnumber}                 Number of Channel of current event
+    {channelname}                   Name of current Channel of current event
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {whatson}                       true if menu "What's on" is displayed
+    {whatsonnow}                    true if menu "What's on now" is displayed
+    {whatsonnext}                   true if menu "What's on next" is displayed
+    {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+    -->
+    <header>
+        <area x="1%" y="0" width="64%" height="10%" layer="2">
+            <drawtext condition="{whatsonnow}||{whatsonnext}||{whatsonfavorites}" x="5" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{title}" />
+            <drawimage name="logo" condition="{whatson}" imagetype="channellogo" path="{channelid}" x="0" width="15%" height="100%" align="left" valign="center" />
+            <drawtext condition="{whatson}" x="{width(logo)}+20" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{channelnumber} - {channelname}" />
+        </area>
+    </header>
+
+    
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="99%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables schedules menu listelement:
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        {channelname}             Channel Name (for what's on now and next)
+        {channelid}               ChannelID as path to display channel logo (for what's on now and next)
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {hasVPS}                  true if event has VPS information
+        -->
+        <listelement>
+            <!-- background and foreground-->
+            <area x="0" width="28%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="0" width="28%" layer="7">
+                <drawimage imagetype="skinpart" path="menubuttontop" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <!-- element whatson -->
+            <area condition="not{separator}++{whatson}++not{current}" x="1%" width="27%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatson}++not{current}" x="1%" width="27%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItem}" text="{title}" />
+            </areascroll>
+            <!-- current element whatson -->
+            <area condition="not{separator}++{whatson}++{current}" x="1%" width="27%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatson}++{current}" x="1%" width="27%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItemSelected}" text="{title}" />
+            </areascroll>
+            <!-- element whatsonnow -->
+            <area condition="not{separator}++{whatsonnow}" x="5" width="8%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="94%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnow}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonnow}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItem}" text="{title}" />
+            </areascroll>
+            <!-- current element whatsonnow -->
+            <area condition="not{separator}++{whatsonnow}++{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonnow}++{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItemSelected}" text="{title}" />
+            </areascroll>
+            <!-- day or channel separator -->
+            <area condition="{separator}" x="0" width="28%" layer="3">
+                <drawimage name="sep" imagetype="icon" path="ico_daydelimiter" x="10" valign="center" width="{areaheight}-10" height="{areaheight}-10"/>
+                <drawtext x="{width(sep)} + 20" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrFontInactive}" text="{title}" />
+            </area>
+            <!-- element whatsonnext -->
+            <area condition="not{separator}++{whatsonnext}" x="5" width="8%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="94%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonnext}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonnext}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItem}" text="{title}" />
+            </areascroll>
+            <!-- current element whatsonnext -->
+            <area condition="not{separator}++{whatsonnext}++{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonnext}++{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItemSelected}" text="{title}" />
+            </areascroll>
+            <!-- element whatsonfavorites -->
+            <area condition="not{separator}++{whatsonfavorites}" x="5" width="8%" layer="3">
+                <drawimage name="logo" imagetype="channellogo" path="{channelid}" x="0" width="100%" height="94%" valign="center" />
+            </area>
+            <area condition="not{separator}++{whatsonfavorites}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonfavorites}++not{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItem}" text="{title}" />
+            </areascroll>
+            <!-- current element whatsonfavorites -->
+            <area condition="not{separator}++{whatsonfavorites}++{current}" x="9%" width="18%" layer="3">
+                <drawtext x="0" y="5%" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{start} - {stop}" />
+                <drawimage condition="{timerfull}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*5/10 - 10" y="10" width="{areaheight}*5/10" height="{areaheight}*5/10" />
+                <drawimage condition="{timerpartitial}" imagetype="icon" path="ico_activetimer" x="{areawidth} - {areaheight}*3/10 - 10" y="10" width="{areaheight}*3/10" height="{areaheight}*3/10" />
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium"  condition="not{separator}++{whatsonfavorites}++{current}" x="9%" width="18%" layer="3">
+                <drawtext name="menutext" x="0" y="40%" font="{vdrOsd}" fontsize="55%" color="{clrFontMenuItemSelected}" text="{title}" />
+            </areascroll>            <!-- day or channel separator -->
+            <area condition="{separator}" x="0" width="28%" layer="3">
+                <drawimage name="sep" imagetype="icon" path="ico_daydelimiter" x="10" valign="center" width="{areaheight}-10" height="{areaheight}-10"/>
+                <drawtext x="{width(sep)} + 20" valign="center" font="{vdrOsd}" fontsize="60%" color="{clrFontInactive}" text="{title}" />
+            </area>            
+        </listelement>
+        <!-- Available Variables schedules menu currentelement:
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {description}             detailed description of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {channelid}               ChannelID as path to display channel logo
+        {hasposter}               true if a scraped poster is available for this element
+        {posterwidth}             width of scraped poster
+        {posterheight}            height of scraped poster
+        {posterpath}              absolute path of scraped poster
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {schedule[]}              array with next 10 schedules, only for whatsonnow and whatsonnext
+        {schedule[title]}         title of event
+        {schedule[shorttext]}     shorttext of event
+        {schedule[start]}         start time of event in hh:mm
+        {schedule[stop]}          stop time of event in hh:mm
+        -->
+        <currentelement delay="500" fadetime="300">
+            <area x="32%" y="2%" width="67%" height="96%" layer="2">
+                <fill color="{clrTransBlack}" />
+            </area>
+            <area condition="{whatson}" x="32%" y="2%" width="67%" height="96%" layer="2">
+                <!-- title -->
+                <drawtext name="title" align="center" y="0" font="{vdrOsd}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{title}" />
+                <!-- progress bar if event is running -->
+                <drawtext condition="{running}" name="start" x="{areawidth}/4 - {width(start)}" y="9%" font="vdrOsd}" fontsize="6%" color="{clrWhite}" text="{start}" />
+                <drawtext condition="{running}" name="stop" x="{areawidth}*3/4" y="9%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{stop}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 5" y="{posy(start)} + {height(start)} / 2 - 6" width="11" height="11" quadrant="0" color="{clrBackground}" />
+                <drawrectangle condition="{running}" x="{areawidth} / 4 + 10" y="{posy(start)} + {height(start)} / 2 - 6" width="{areawidth}/2 - 20" height="11" color="{clrBackground}" />
+                <drawellipse condition="{running}" x="3 * {areawidth} / 4 - 16" y="{posy(start)} + {height(start)} / 2 - 6" width="11" height="11" quadrant="0" color="{clrBackground}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 6" y="{posy(start)} + {height(start)} / 2 - 5" width="9" height="9" quadrant="0" color="{clrProgressbar}" />
+                <drawrectangle condition="{running}" x="{areawidth} / 4 + 10" y="{posy(start)} + {height(start)} / 2 - 5" width="{areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration}" height="9" color="{clrProgressbar}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 10 + {areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration} - 4" y="{posy(start)} + {height(start)} / 2 - 5" width="9" height="9" quadrant="0" color="{clrProgressbar}" />
+                <!-- start and stop if event is not running -->
+                <drawtext condition="not{running}" x="10" y="9%" font="{vdrOsd}" fontsize="{areaheight}/20" color="{clrWhite}" text="{start} - {stop} ({duration} min)" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="{areawidth} - {areawidth}/3" y="{posy(start)} + {height(start)} + 10" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{vdrOsd}" fontsize="{areaheight}/20" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{vdrOsd}" fontsize="{areaheight}/20" color="{clrWhite}" text="{description}" />
+            </area>
+            <!-- whatsonnow and whotsonnext -->
+            <area condition="{whatsonnow}||{whatsonnext}" x="32%" y="2%" width="67%" height="76%" layer="2">
+                <!-- title -->
+                <drawtext align="center" y="0" font="{vdrOsd}" width="{areawidth}-20" fontsize="10%" color="{clrWhite}" text="{title}" />
+                <!-- progress bar if event is running -->
+                <drawtext condition="{running}" name="start" x="{areawidth}/4 - {width(start)}" y="11%" font="vdrOsd}" fontsize="8%" color="{clrWhite}" text="{start}" />
+                <drawtext condition="{running}" name="stop" x="{areawidth}*3/4" y="11%" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{stop}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 5" y="{posy(start)} + {height(start)} / 2 - 6" width="11" height="11" quadrant="0" color="{clrBackground}" />
+                <drawrectangle condition="{running}" x="{areawidth} / 4 + 10" y="{posy(start)} + {height(start)} / 2 - 6" width="{areawidth}/2 - 20" height="11" color="{clrBackground}" />
+                <drawellipse condition="{running}" x="3 * {areawidth} / 4 - 16" y="{posy(start)} + {height(start)} / 2 - 6" width="11" height="11" quadrant="0" color="{clrBackground}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 6" y="{posy(start)} + {height(start)} / 2 - 5" width="9" height="9" quadrant="0" color="{clrProgressbar}" />
+                <drawrectangle condition="{running}" x="{areawidth} / 4 + 10" y="{posy(start)} + {height(start)} / 2 - 5" width="{areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration}" height="9" color="{clrProgressbar}" />
+                <drawellipse condition="{running}" x="{areawidth} / 4 + 10 + {areawidth}/2 * {elapsed} / {duration} - 20 * {elapsed} / {duration} - 4" y="{posy(start)} + {height(start)} / 2 - 5" width="9" height="9" quadrant="0" color="{clrProgressbar}" />
+                <!-- start and stop if event is not running -->
+                <drawtext condition="not{running}" x="10" y="9%" font="{vdrOsd}" fontsize="{areaheight}/20" color="{clrWhite}" text="{start} - {stop} ({duration} min)" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="{areawidth}* 2 / 3" y="{posy(start)} + {height(start)} + 10" width="{areawidth}/3" height="{areawidth}/3 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 10" font="{vdrOsd}" fontsize="{areaheight}/18" color="{clrWhite}" text="{description}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{vdrOsd}" fontsize="{areaheight}/18" color="{clrWhite}" text="{description}" />
+            </area>
+            <areascroll condition="{whatsonnow}||{whatsonnext}" mode="forthandback" orientation="vertical" delay="1000" scrollspeed="medium" x="32%" y="78%" width="67%" height="20%" layer="2">
+                <drawtext x="10" y="0" font="{semibold}" fontsize="20%" color="{clrWhite}" text="{tr(nextschedules)}:" />
+                <loop name="schedule" x="0" y="{areaheight}/4 + 5" orientation="vertical">
+                    <drawtext x="10" font="{vdrOsd}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{schedule[start]} {schedule[title]}" />
+                </loop>
+            </areascroll>
+        </currentelement>
+    </menuitems>
+</menuschedules>
+
diff --git a/skins/nopacity/xmlfiles/displaymenusetup.xml b/skins/nopacity/xmlfiles/displaymenusetup.xml
new file mode 100644
index 0000000..519d818
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenusetup.xml
@@ -0,0 +1,45 @@
+<menusetup x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%" >
+
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="28%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables setup menu listelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+            <area x="0" width="100%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="0" width="100%" layer="7">
+                <drawimage imagetype="skinpart" path="menubuttontop" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <area x="0" width="100%" layer="3">
+                <drawimage imagetype="menuicon" path="{icon}" x="10" valign="center" width="{areaheight}*0.9" height="{areaheight}*0.9"/>
+            </area>
+            <areascroll scrollelement="menutext" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="25%" width="75%" layer="3">
+                <drawtext condition="not{current}" name="menutext" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{number} {label}" />
+                <drawtext condition="{current}" name="menutext" x="0" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{number} {label}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+        </currentelement>
+    </menuitems>
+    
+</menusetup>
diff --git a/skins/nopacity/xmlfiles/displaymenutimers.xml b/skins/nopacity/xmlfiles/displaymenutimers.xml
new file mode 100644
index 0000000..5b1999b
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymenutimers.xml
@@ -0,0 +1,102 @@
+<menutimers x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%">
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="{areawidth}*0.005" y="10%" orientation="vertical" width="99%" height="80%" align="center" numlistelements="10">
+        <!-- Available Variables channels menu listelement:
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {channelname}       Name of channel which is set for the timer
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {current}           true if item is currently selected
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <listelement>
+            <!-- background and foreground-->
+            <area x="0" width="28%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <!-- channel logo -->
+            <area x="5" width="6%" layer="3">
+                <drawimage imagetype="channellogo" path="{channelid}" x="0" width="100%" height="100%" valign="center" />
+            </area>
+            <!-- datetime and icons -->
+            <area x="1%" width="28%" layer="3">
+                <drawtext condition="not{current}" x="22%" y="5" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItem}" text="{dayname} {day}. {timerstart} - {timerstop}" />
+                <drawtext condition="{current}" x="22%" y="5" font="{vdrOsd}" fontsize="40%" color="{clrFontMenuItemSelected}" text="{dayname} {day}. {timerstart} - {timerstop}" />
+                <drawimage condition="{flagactive}" imagetype="icon" path="ico_timer_active" x="{areawidth} - 0.5*{areaheight} - 20" y="0" width="0.5*{areaheight}" height="0.5*{areaheight}" />
+                <drawimage condition="not{flagactive}" imagetype="icon" path="ico_timer_inactive" x="{areawidth} - 0.5*{areaheight} - 20" y="0" width="0.5*{areaheight}" height="0.5*{areaheight}" />
+                <drawimage condition="{flagrecording}" name="active" imagetype="icon" path="ico_timer_recording" x="{areawidth} - {areaheight} - 20" y="0" width="0.5*{areaheight}" height="0.5*{areaheight}" />
+            </area>
+            <!-- Timer Name -->
+            <areascroll scrollelement="timername" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="7%" width="20%" layer="3">
+                <drawtext condition="not{current}" name="timername" x="0" y="50%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{title}" />
+                <drawtext condition="{current}" name="timername" x="0" y="50%" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{title}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {channelname}       Name of channel which is set for the timer
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {eventshorttext}    Short Text corresponding event
+        {eventdescription}  Description corresponding event
+        {hasposter}         true if a scraped poster is available for event
+        {posterwidth}       width of scraped poster
+        {posterheight}      height of scraped poster
+        {posterpath}        absolute path of scraped poster
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <currentelement delay="500" fadetime="300">
+            <area x="32%" y="2%" width="67%" height="96%" layer="2">
+                <fill color="{clrTransBlack}" />
+            </area>
+            <area condition="{flagactive}" x="32%" y="2%" width="67%" height="96%" layer="2">
+                <!-- title -->
+                <drawtext name="title" align="center" y="0" font="{vdrOsd}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{eventtitle} - {eventshorttext}" />
+                <!-- start and stop if event is not running -->
+                <drawtext x="10" y="9%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{dayname} {eventstart} - {eventstop}, {channelname}" />
+                <!-- scraper poster -->
+                <drawimage condition="{hasposter}" name="poster" imagetype="image" path="{posterpath}" x="{areawidth} - {areawidth}/4" y="17%" width="{areawidth}/4" height="{areawidth}/4 * {posterheight} / {posterwidth}"/>
+                <!-- description -->
+                <drawtextbox condition="{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" float="topright" floatwidth="{width(poster)} + 10" floatheight="{height(poster)} + 20" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{eventdescription}" />
+                <drawtextbox condition="not{hasposter}" x="10" y="{posy(poster)}" width="99%" height="{areaheight} - {posy(poster)}" font="{vdrOsd}" fontsize="5%" color="{clrWhite}" text="{eventdescription}" />
+            </area>
+            <area condition="not{flagactive}" x="32%" y="2%" width="67%" height="96%" layer="2">
+                <drawtext x="10" y="0" font="{vdrOsd}" fontsize="8%" color="{clrWhite}" text="{channelname}" />
+                <drawtext x="10" y="10%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{timerstart} - {timerstop}" />
+            </area>
+        </currentelement>
+        
+    </menuitems>
+
+</menutimers>
\ No newline at end of file
diff --git a/skins/nopacity/xmlfiles/displaymessage.xml b/skins/nopacity/xmlfiles/displaymessage.xml
new file mode 100644
index 0000000..84d9470
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displaymessage.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymessage SYSTEM "../../../dtd/displaymessage.dtd">
+
+<displaymessage x="0" y="0" width="100%" height="100%" fadetime="300">
+
+    <background>
+    </background>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="88%" width="90%" height="10%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageStatus" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messageInfo" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageWarning" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messageError" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="88%" width="90%" height="10%" layer="7">
+            <drawtext align="center" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+</displaymessage>
diff --git a/skins/nopacity/xmlfiles/displayreplay.xml b/skins/nopacity/xmlfiles/displayreplay.xml
new file mode 100644
index 0000000..e77fc20
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displayreplay.xml
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayreplay SYSTEM "../../../dtd/displayreplay.dtd">
+
+<displayreplay x="0" y="0" width="100%" height="100%" fadetime="{fadeTime}">
+
+    <background>
+        <area x="1%" y="74%" width="98%" height="25%" layer="1" transparency="{transparency}">
+            <drawimage imagetype="skinpart" path="displayreplayback" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <area x="1%" y="74%" width="98%" height="25%" layer="7">
+            <drawimage imagetype="skinpart" path="displayreplaytop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- background progress bar -->
+        <area x="3%" y="83%" width="94%" height="2%" layer="2">
+            <drawellipse x="0" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawellipse x="{areawidth}-{areaheight}" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawrectangle x="{areaheight}/2" y="0" width="{areawidth} - {areaheight}" height="{areaheight}" color="{clrBlack}" />
+        </area>
+    </background>
+
+    <backgroundmodeonly>
+        <area x="40%" y="86%" width="20%" height="11%" layer="3">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="1" y="1" width="{areawidth} -2" height="{areaheight} -2" color="{clrTransBlack}" />
+        </area>
+    </backgroundmodeonly>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {year}                              year in yyyy
+    -->
+    <datetime>
+        <area x="63%" y="74%" width="35%" height="6%" layer="2">
+            <drawtext align="right" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" width="100%" text="{daynameshort} {day}.{month} {time}" />
+        </area>
+    </datetime>
+
+    <!-- Available Variables scrapercontent:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+        <area condition="{isbanner}" x="0" y="0" width="{areaheight}*0.13*{mediawidth}/{mediaheight}" height="13%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" align="center" valign="center"  width="{areawidth}" height="{areaheight}"/>
+        </area>
+        <area condition="not{isbanner}" x="0" y="0" width="{areaheight}*0.5*{mediawidth}/{mediaheight}" height="50%" layer="2">
+            <drawimage imagetype="image" path="{mediapath}" x="5" y="5" width="{areawidth}-10" height="{areaheight}-10"/>
+        </area>
+    </scrapercontent>
+
+    <!-- Available Variables rectitle:
+    {rectitle}                     Title of Recording
+    {recsubtitle}                  Subtitle of the Recording
+    {recdate}                      Date Recording in dd.mm.yy
+    {rectime}                      Time of Recording in hh:mm
+    -->
+    <rectitle>
+        <area x="3%" y="74%" width="60%" height="6%" layer="2">
+            <drawtext name="title" x="0" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" width="100%" text="{rectitle}" />
+            <drawtext condition="isset{recsubtitle}" x="{width(title)}" valign="center" font="{vdrOsd}" fontsize="95%" color="{clrWhite}" width="100%" text=" - {recsubtitle}" />
+        </area>
+    </rectitle>
+
+    <!-- Available Variables recinfo:
+    {screenwidth}                      width of currently displayed recording in px
+    {screenheight}                     height of currently displayed recording in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <recinfo>
+        <area x="{areawidth}*0.98 - {areaheight}*0.15" y="93%" width="{areaheight}*0.15" height="5%" layer="2">
+            <drawimage imagetype="icon" path="ico_{resolution}" x="0" y="0" width="{areaheight}*3" height="{areaheight}"/>
+        </area>
+    </recinfo>
+
+    <!-- Available Variables currenttime:
+    {reccurrent}                   Current Time in hh:mm:ss
+    -->
+    <currenttime>
+        <area x="3%" y="86%" width="30%" height="4%" layer="2">
+            <drawtext x="0" valign="center" font="{vdrOsd}" fontsize="100%" color="{clrWhite}" text="{reccurrent}" />
+        </area>
+    </currenttime>
+
+    <!-- Available Variables totaltime:
+    {rectotal}                   Total Time in hh:mm:ss
+    -->
+    <totaltime>
+        <area x="67%" y="86%" width="30%" height="4%" layer="2">
+            <drawtext align="right" valign="center" font="{vdrOsd}" fontsize="100%" color="{clrWhite}" text="{rectotal}" />
+        </area>
+    </totaltime>
+
+    <!-- Available Variables progressbar:
+    {current}                   current frame of recording
+    {total}                     total frames of recording
+    -->
+    <progressbar>
+        <area x="3%" y="83%" width="94%" height="2%" layer="2">
+            <drawellipse x="1" y="1" width="{areaheight}-2" height="{areaheight}-2" color="{clrProgressbar}" quadrant="0" />
+            <drawrectangle x="{areaheight}/2" y="1" width="{current}/{total}*{areawidth} - {current}/{total}*{areaheight}" height="{areaheight}-2" color="{clrProgressbar}" />
+        </area>
+    </progressbar>
+
+    <!-- Available Variables cutmarks:
+    {marks[]}                   array of available marks
+    {marks[position]}           frame of current mark
+    {marks[endposition]}        frame where startmark ends
+    {marks[total]}              total number of frames
+    {marks[startmark]}          true if mark is start mark
+    -->
+    <cutmarks>
+        <area x="3%" y="82%" width="94%" height="4%" layer="3">
+            <loop name="marks" x="0" y="0" orientation="absolute">
+                <drawrectangle x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="1" height="100%" color="{clrTransWhite}" />
+                <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="0" width="5" height="1" color="{clrTransWhite}" />
+                <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="{areaheight}-1" width="5" height="1" color="{clrTransWhite}" />
+                <drawrectangle condition="not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="0" width="5" height="1" color="{clrTransWhite}" />
+                <drawrectangle condition="not{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth} - 5" y="{areaheight}-1" width="5" height="1" color="{clrTransWhite}" />
+                <drawrectangle condition="{marks[startmark]}" x="{marks[position]}/{marks[total]}*{areawidth}" y="30%" width="{marks[endposition]}/{marks[total]}*{areawidth} - {marks[position]}/{marks[total]}*{areawidth}" height="40%" color="{clrTransWhite}" />
+            </loop>
+        </area>
+    </cutmarks>
+
+    <!-- Available Variables controlicons and controliconsmodeonly:
+    {play}              true if recording is played currently
+    {pause}             true if recording is paused
+    {forward}           true if fast forwarding 
+    {forward1x}         true if fast forwarding 1x (with 3 trickspeeds)
+    {forward2x}         true if fast forwarding 2x (with 3 trickspeeds)
+    {forward3x}         true if fast forwarding 3x (with 3 trickspeeds)
+    {rewind}            true if rewinding 
+    {rewind1x}          true if rewinding 1x (with 3 trickspeeds)
+    {rewind2x}          true if rewinding 2x (with 3 trickspeeds)
+    {rewind3x}          true if rewinding 3x (with 3 trickspeeds)
+    -->
+    <controlicons>
+        <area x="30%" y="88%" width="40%" height="7%" layer="3">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_rew_off" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_rew" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_rew_1x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_rew_2x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_rew_3x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_off" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_off" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_ff_off" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_ff" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_ff_1x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_ff_2x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_ff_3x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </controlicons>
+
+    <controliconsmodeonly>
+        <area x="30%" y="88%" width="40%" height="7%" layer="3">
+            <drawimage condition="not{rewind} ++ not{rewind1x} ++ not{rewind2x} ++ not{rewind3x}" imagetype="icon" path="ico_rew_off" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind}" imagetype="icon" path="ico_rew" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind1x}" imagetype="icon" path="ico_rew_1x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind2x}" imagetype="icon" path="ico_rew_2x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{rewind3x}" imagetype="icon" path="ico_rew_3x" x="{areawidth}/2 - 2*{areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            
+            <drawimage condition="not{pause}" imagetype="icon" path="ico_pause_off" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{pause}" imagetype="icon" path="ico_pause" x="{areawidth}/2 - {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{play}" imagetype="icon" path="ico_play_off" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{play}" imagetype="icon" path="ico_play" x="{areawidth}/2" y="0" width="{areaheight}" height="{areaheight}"/>
+
+            <drawimage condition="not{forward} ++ not{forward1x} ++ not{forward2x} ++ not{forward3x}" imagetype="icon" path="ico_ff_off" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward}" imagetype="icon" path="ico_ff" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward1x}" imagetype="icon" path="ico_ff_1x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward2x}" imagetype="icon" path="ico_ff_2x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{forward3x}" imagetype="icon" path="ico_ff_3x" x="{areawidth}/2 + {areaheight}" y="0" width="{areaheight}" height="{areaheight}"/>
+        </area>
+    </controliconsmodeonly>
+
+    <!-- Available Variables jump:
+    {jump}                      time to jump to in hh:mm
+    -->
+    <jump>
+        <area x="5%" y="90%" width="30%" height="7%" layer="2">
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="80%" color="{clrWhite}" text="{jump}" />
+        </area>
+    </jump>
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+        <area x="5%" y="88%" width="90%" height="10%" layer="6">
+            <drawimage condition="{status}" imagetype="skinpart" path="messageStatus" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{info}" imagetype="skinpart" path="messageInfo" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{warning}" imagetype="skinpart" path="messageWarning" x="0" y="0" width="100%" height="100%" />
+            <drawimage condition="{error}" imagetype="skinpart" path="messageError" x="0" y="0" width="100%" height="100%" />
+        </area>
+        <area x="5%" y="88%" width="90%" height="10%" layer="7">
+            <drawtext align="center" valign="center" font="{light}" fontsize="50%" color="{clrWhite}" text="{text}" />
+        </area>
+    </message>
+
+    <!-- Available Variables onpause and onpausemodeonly:
+    {name}                    title of recording
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb    
+    -->
+    <onpause delay="60" fadetime="{fadeTime}">
+        <area x="0" y="0" width="100%" height="100%" layer="7">
+            <fill color="{clrTransBlackDark}" />
+        </area>
+    </onpause>
+
+    <onpausemodeonly delay="20" fadetime="{fadeTime}">
+        <area x="0" y="0" width="100%" height="100%" layer="7">
+            <fill color="{clrTransBlackDark}" />
+        </area>
+        <area x="0" y="0" width="100%" height="100%" layer="6">
+            <drawtext align="center" valign="center" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{tr(pause)}" />
+            <drawimage condition="{isseries}" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesbanner1height} / {seriesbanner1width}"/>
+            <drawimage condition="{ismovie}" imagetype="image" path="{posterpath}" x="10" y="10" width="{areaheight} * 0.4  * {posterwidth} / {posterheight}" height="{areaheight} * 0.4"/>
+        </area>
+    </onpausemodeonly>
+</displayreplay>
diff --git a/skins/nopacity/xmlfiles/displayvolume.xml b/skins/nopacity/xmlfiles/displayvolume.xml
new file mode 100644
index 0000000..6c54ee9
--- /dev/null
+++ b/skins/nopacity/xmlfiles/displayvolume.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayvolume SYSTEM "../../../dtd/displayvolume.dtd">
+
+<displayvolume x="20%" y="75%" width="60%" height="10%" fadetime="{fadeTime}">
+
+    <background>
+    </background>
+
+    <!-- Available Variables volume:
+    {volume}                            current volume, range from 0 to 255
+    {volpercent}                        current volume in %
+    {maxvolume}                         maximal volume
+    {mute}                              true if volume is muted
+    -->
+    <volume>
+        <!-- Background -->
+        <area x="0" y="0" width="100%" height="100%" layer="1" transparency="{transparency}">
+            <drawimage imagetype="skinpart" path="displayvolume" x="0" y="0" width="100%" height="100%"/>
+        </area>
+        <!-- Header -->
+        <area x="0" y="3%" width="100%" height="40%" layer="2">
+            <drawtext x="10" valign="center" font="{vdrOsd}" fontsize="100%" color="{clrWhite}" text="{tr(volume)}: {volpercent}%" />
+            <drawimage condition="not{mute}" imagetype="icon" path="ico_volume" x="{areawidth} - 2*{areaheight}" y="5" width="{areaheight}" height="{areaheight}"/>
+            <drawimage condition="{mute}" imagetype="icon" path="ico_mute" x="{areawidth} - 2*{areaheight}" y="5" width="{areaheight}" height="{areaheight}"/>
+        </area>
+        <!-- Volumebar Background -->
+        <area x="4%" y="60%" width="92%" height="30%" layer="2">
+            <drawellipse x="0" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawellipse x="1" y="1" width="{areaheight}-2" height="{areaheight}-2" color="{clrProgressbar}" quadrant="0" />
+            <drawellipse x="{areawidth}-{areaheight}" y="0" width="{areaheight}" height="{areaheight}" color="{clrBlack}" quadrant="0" />
+            <drawrectangle x="{areaheight}/2" y="0" width="{areawidth} - {areaheight}" height="{areaheight}" color="{clrBlack}" />
+        </area>
+        <!-- Volumebar -->
+        <area x="5%" y="60%" width="91%" height="30%" layer="3">
+            <drawrectangle x="1" y="1" width="{volume}/{maxvolume}*{areawidth} - {volume}/{maxvolume}*{areaheight}/2" height="{areaheight}-2" color="{clrProgressbar}" />
+            <drawellipse x="{volume}/{maxvolume}*{areawidth} - {volume}/{maxvolume}*{areaheight}/2" y="1" width="{areaheight}/2 - 2" height="{areaheight}-2" color="{clrProgressbar}" quadrant="5" />
+        </area>        
+    </volume>
+
+</displayvolume>
diff --git a/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecast.xml b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecast.xml
new file mode 100644
index 0000000..521db36
--- /dev/null
+++ b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecast.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0" scaletvx="33%" scaletvy="10%" scaletvwidth="65%" scaletvheight="80%">
+    <scrollbar>
+        <area x="30%" y="11%" width="2%" height="78%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="10">
+        <!-- Available Variables:
+        {current}
+        {menuitemtext}                      "Current Weather", "Next 48 hours" or "Next 7 days"
+        {iscurrent}                         true if item is "Current Weather"
+        {ishourly}                          true if item is "Next 48 hours"
+        {isdaily}                           true if item is "Next 7 days"
+        {city}                              configured city to display weather for
+        {latitude}                          latitude
+        {longitude}                         longitude
+        
+        If {iscurrent} is true, the following tokens are set:
+        {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+        {temperature}                       current temperature in °C
+        {apparenttemperature}               apparent (felt) temperature in °C
+        {summary}                           short summary of current weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+        {precipitationintensity}            precipitation intensity in l/qm    
+        {precipitationprobability}          precipitation probability in %
+        {precipitationtype}                 precipitation type (snow, ...)
+        {humidity}                          humidity in %
+        {windspeed}                         wind speed in km/h
+        {windbearing}                       wind bearing in degrees
+        {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+        {visibility}                        visibility in km
+        {cloudcover}                        cloud cover in %
+        {pressure}                          pressure in HPa
+        {ozone}                             Ozone in DU (Dobson Unit)
+
+        If {ishourly} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {hourly[]}                          array with up to 48 hourly forecasts
+        {hourly[num]}                       number of forecast, starting at 1
+        {hourly[timestamp]}                 timestamp in hh:mm
+        {hourly[temperature]}               temperature in °C
+        {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+        {hourly[summary]}                   short summary
+        {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+        {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+        {hourly[precipitationprobability]}  precipitation probability in %
+        {hourly[precipitationtype]}         precipitation type (snow, ...)
+        {hourly[humidity]}                  humidity in %
+        {hourly[windspeed]}                 wind speed in km/h
+        {hourly[windbearing]}               wind bearing in degrees
+        {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+        {hourly[visibility]}                visibility in km
+        {hourly[cloudcover]}                cloud cover in %
+        {hourly[pressure]}                  pressure in HPa
+        {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+
+        If {isdaily} is true, the following tokens are set:
+        {summary}                           short summary of weather
+        {icon}                              path to use in <drawimage> to display appropriate weather icon
+
+        {daily[day]}                        day of forecast in dd.mm
+        {daily[dayname]}                    three letter abbrivated day name
+        {daily[temperaturemin]}             minimum temperature at this day in °C
+        {daily[temperaturemintime]}         time of minimum temperature
+        {daily[temperaturemax]}             maximum temperature at this day in °C
+        {daily[temperaturemaxtime]}         time of maximum temperature
+        {daily[summary]}                    short summary
+        {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+        {daily[precipitationintensity]}     precipitation intensity in l/qm    
+        {daily[precipitationprobability]}   precipitation probability in %
+        {daily[precipitationtype]}          precipitation type (snow, ...)
+        {daily[humidity]}                   humidity in %
+        {daily[windspeed]}                  wind speed in km/h
+        {daily[windbearing]}                wind bearing in degrees
+        {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+        {daily[visibility]}                 visibility in km
+        {daily[cloudcover]}                 cloud cover in %
+        {daily[pressure]}                   pressure in HPa
+        {daily[ozone]}                      Ozone in DU (Dobson Unit)
+        -->
+        <listelement>
+            <!-- Background -->
+            <area x="0" width="28%" layer="2">
+                <drawimage condition="not{current}" imagetype="skinpart" path="menubutton" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+                <drawimage condition="{current}" imagetype="skinpart" path="menubuttonactive" x="0" y="1%" width="{areawidth}" height="{areaheight}*0.98"/>
+            </area>
+            <areascroll condition="not{current}" scrollelement="menuelement" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="0" width="28%" layer="3">
+                <drawtext name="menuelement" x="10" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItem}" text="{menuitemtext}" />
+            </areascroll>
+            <areascroll condition="{current}" scrollelement="menuelement" mode="forthandback" orientation="horizontal" delay="1000" scrollspeed="medium" x="0" width="28%" layer="3">
+                <drawtext name="menuelement" x="10" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrFontMenuItemSelected}" text="{menuitemtext}" />
+            </areascroll>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- All Tokens from listelement are available -->
+        <currentelement delay="100" fadetime="0">
+            <area x="32%" y="2%" width="67%" height="96%" layer="2">
+                <fill color="{clrTransBlack}" />
+            </area>
+            <area condition="{iscurrent}" x="32%" y="2%" width="67%" height="96%" layer="3">
+                <drawimage name="weathericon" imagetype="icon" path="{icon}" x="2%" y="0" width="{areawidth}*0.2" height="{areawidth}*0.2"/>
+                <drawtext align="right" y="2%" font="{semibold}" fontsize="6%" color="{clrWhite}" text="{city}" />
+                <drawtext align="right" y="8%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{timestamp}" />
+                <drawtext align="right" y="14%" font="{vdrOsd}" fontsize="12%" color="{clrWhite}" text="{temperature}°C" />
+                <drawtext align="right" y="26%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{summary}" />
+                <drawtext x="2%" y="45%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature} °C" />
+                <drawtext x="2%" y="51%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %" />
+                <drawtext x="2%" y="57%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+                <drawtext x="2%" y="63%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %" />
+                <drawtext x="2%" y="69%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h" />
+                <drawtext x="2%" y="75%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(windbearing)}: {windbearingstring}  ({windbearing} °)" />
+                <drawtext x="2%" y="81%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(cloudcover)}: {cloudcover} %" />
+            </area>
+            <area condition="{ishourly}" x="32%" y="2%" width="67%" height="96%" layer="3">
+                <loop name="hourly" x="0" y="0" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/12" overflow="cut">
+                    <drawtext x="2%" font="{semibold}" fontsize="7%" valign="center" color="{clrWhite}" text="{hourly[timestamp]}" />
+                    <drawimage imagetype="icon" path="{hourly[icon]}" x="22%" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+                    <drawtext x="35%" font="{vdrOsd}" fontsize="7%" valign="center" color="{clrWhite}" text="{hourly[temperature]}°C" />
+                    <drawtext x="60%" font="{vdrOsd}" fontsize="5%" valign="center" width="38%" color="{clrWhite}" text="{hourly[summary]}" />
+                    <drawrectangle x="2%" y="{rowheight} - 1" width="{columnwidth}*0.96" height="1" color="{clrWhite}" />
+                </loop>
+            </area>
+            <area condition="{isdaily}" x="32%" y="2%" width="67%" height="96%" layer="3">
+                <loop name="daily" x="2%" y="0" orientation="vertical" columnwidth="{areawidth}*0.96" rowheight="{areaheight}/7" overflow="cut">
+                    <drawtext x="0" font="{semibold}" fontsize="{rowheight}/2" y="5" color="{clrWhite}" text="{daily[dayname]} {daily[day]}" />
+                    <drawtext x="35%" font="{vdrOsd}" fontsize="{rowheight}/2" y="5" color="{clrWhite}" text="{daily[temperaturemin]}°C - {daily[temperaturemax]}°C" />
+                    <drawtext x="0" font="{vdrOsd}" fontsize="{rowheight}*0.3" width="{columnwidth} - {rowheight}*0.7" y="{rowheight}*0.6" color="{clrWhite}" text="{daily[summary]}" />
+                    <drawimage imagetype="icon" path="{daily[icon]}" x="{columnwidth} - {rowheight}*0.7" valign="center" width="{rowheight}*0.7" height="{rowheight}*0.7"/>
+                    <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+                </loop>
+            </area>
+        </currentelement>
+    </menuitems>
+</menuplugin>
diff --git a/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
new file mode 100644
index 0000000..ae9c2a6
--- /dev/null
+++ b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailcurrent.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+    <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="25%" width="2%" height="60%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+    <!-- Available Variables in detailheader and tab:
+    {menuheader}                        "Current Weather"
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+    {timestamp}                         timestamp in hh:mm dd.mm of current forecast
+    {temperature}                       current temperature in °C
+    {apparenttemperature}               apparent (felt) temperature in °C
+    {temperaturemin}                    minimum temperature the day in °C
+    {temperaturemax}                    maximum temperature the day in °C
+    {summary}                           short summary of current weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {precipitationintensity}            precipitation intensity in l/qm    
+    {precipitationprobability}          precipitation probability in %
+    {precipitationtype}                 precipitation type (snow, ...)
+    {humidity}                          humidity in %
+    {windspeed}                         wind speed in km/h
+    {windbearing}                       wind bearing in degrees
+    {windbearingstring}                 wind bearing as human readable string (e.g NE, NNE, ...)
+    {visibility}                        visibility in km
+    {cloudcover}                        cloud cover in %
+    {pressure}                          pressure in HPa
+    {ozone}                             Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="98%" height="15%" layer="2">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="1%" y="10%" width="97%" height="15%" layer="3">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" align="right" valign="center" width="{areaheight}*0.7" height="70%"/>
+            <drawtext name="temp" x="{areawidth} - {width(weathericon)} - {width(temp)} - 10" valign="center" font="{vdrOsd}" fontsize="50%" color="{clrWhite}" text="{temperature}°C" />
+            <drawtext x="2%" y="20%" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{tr(conditions)} {tr(for)} {city}, {timestamp}:" />
+            <drawtext x="2%" y="55%" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <drawtext x="0" y="6%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(apparenttemp)}: {apparenttemperature}°C" />
+        <drawtext x="0" y="12%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(todaymin)}: {mintemperature}°C, {tr(todaymax)}: {maxtemperature}°C" />
+        <drawtext x="0" y="18%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationprobability)}: {precipitationprobability} %" />
+        <drawtext x="0" y="24%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(precipitationintensity)}: {precipitationintensity} l/qm" />
+        <drawtext x="0" y="30%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(humidity)}: {humidity} %" />
+        <drawtext x="0" y="36%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(windspeed)}: {windspeed} km/h aus {windbearingstring}" />
+        <drawtext x="0" y="42%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(visibility)}: {visibility} km" />
+        <drawtext x="0" y="48%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(cloudcover)}: {cloudcover} %" />
+        <drawtext x="0" y="54%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(pressure)}: {pressure} HPa" />
+        <drawtext x="0" y="60%" font="{vdrOsd}" fontsize="6%" color="{clrWhite}" text="{tr(ozone)}: {ozone} DU" />
+    </tab>
+</menuplugin>
diff --git a/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
new file mode 100644
index 0000000..433bf99
--- /dev/null
+++ b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetaildaily.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+   <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="25%" width="2%" height="60%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {daily[day]}                        day of forecast in dd.mm
+    {daily[dayname]}                    three letter abbrivated day name
+    {daily[temperaturemin]}             minimum temperature at this day in °C
+    {daily[temperaturemintime]}         time of minimum temperature
+    {daily[temperaturemax]}             maximum temperature at this day in °C
+    {daily[temperaturemaxtime]}         time of maximum temperature
+    {daily[summary]}                    short summary
+    {daily[icon]}                       path to use in <drawimage> to display appropriate weather icon
+    {daily[precipitationintensity]}     precipitation intensity in l/qm    
+    {daily[precipitationprobability]}   precipitation probability in %
+    {daily[precipitationtype]}          precipitation type (snow, ...)
+    {daily[humidity]}                   humidity in %
+    {daily[windspeed]}                  wind speed in km/h
+    {daily[windbearing]}                wind bearing in degrees
+    {daily[windbearingstring]}          wind bearing as human readable string (e.g NE, NNE, ...)
+    {daily[visibility]}                 visibility in km
+    {daily[cloudcover]}                 cloud cover in %
+    {daily[pressure]}                   pressure in HPa
+    {daily[ozone]}                      Ozone in DU (Dobson Unit)
+    -->
+
+    <detailheader>
+        <area x="1%" y="10%" width="98%" height="15%" layer="2">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="1%" y="10%" width="97%" height="15%" layer="3">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" align="right" valign="center" width="{areaheight}*0.7" height="70%"/>
+            <drawtextbox x="2%" y="15%" width="80%" maxlines="2" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+       <loop name="daily" x="0" y="1%" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/5">
+            <drawtext x="0" font="{semibold}" fontsize="8%" valign="center" color="{clrWhite}" text="{daily[dayname]} {daily[day]}" />
+            <drawimage imagetype="icon" path="{daily[icon]}" x="2.2*{rowheight}" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+            <drawtext x="3.5*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}*0.3" y="0" color="{clrWhite}" text="{daily[temperaturemin]}°C - {daily[temperaturemax]}°C   ({tr(max)} {daily[temperaturemaxtime]}, {tr(min)} {daily[temperaturemintime]})" />
+            <drawtext x="3.5*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/4" y="{rowheight}*0.25" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{daily[summary]}" />
+            <drawtext x="3.5*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/4" y="{rowheight}*0.5" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{tr(precipitationprobability)} {daily[precipitationprobability]}%, {daily[precipitationintensity]} l/qm, {tr(windspeed)} {daily[windspeed]} km/h {tr(from)} {daily[windbearingstring]}" />
+            <drawtext x="3.5*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/4" y="{rowheight}*0.75" width="{columnwidth} - 3.5*{rowheight}" color="{clrWhite}" text="{tr(cloudcover)} {daily[cloudcover]}%, {tr(visibility)} {daily[visibility]} km, {tr(pressure)} {daily[pressure]} HPa, {tr(ozone)} {daily[ozone]} DU" />
+            <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
new file mode 100644
index 0000000..ccde6f7
--- /dev/null
+++ b/skins/nopacity/xmlfiles/plug-weatherforecast-weatherforecastdetailhourly.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd">
+
+<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0">
+   <background>
+        <area x="0" y="0" width="100%" height="100%" layer="1">
+            <fill color="{clrTransBlack}" />
+            <drawrectangle x="0" y="0" width="100%" height="10%" color="{clrBackground}" />
+        </area>
+        <area x="0" y="0" width="100%" height="10%" layer="2">
+            <drawimage imagetype="skinpart" path="headertop" x="0" y="0" width="100%" height="100%"/>
+        </area>
+    </background>
+    <scrollbar>
+        <area x="97%" y="25%" width="2%" height="60%" layer="2">
+            <fill color="{clrBorder}" />
+            <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" />
+            <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrScrollbar}" />
+        </area>
+    </scrollbar>
+
+    <!-- Available Variables in detailheader and tab:
+    {summary}                           short summary of weather
+    {icon}                              path to use in <drawimage> to display appropriate weather icon
+    {city}                              configured city to display weather for
+    {latitude}                          latitude
+    {longitude}                         longitude
+
+    {hourly[]}                          array with up to 48 hourly forecasts
+    {hourly[num]}                       number of forecast, starting at 1
+    {hourly[timestamp]}                 timestamp in hh:mm
+    {hourly[temperature]}               temperature in °C
+    {hourly[apparenttemperature]}       apparent (felt) temperature in °C
+    {hourly[summary]}                   short summary
+    {hourly[icon]}                      path to use in <drawimage> to display appropriate weather icon
+    {hourly[precipitationintensity]}    precipitation intensity in l/qm    
+    {hourly[precipitationprobability]}  precipitation probability in %
+    {hourly[precipitationtype]}         precipitation type (snow, ...)
+    {hourly[humidity]}                  humidity in %
+    {hourly[windspeed]}                 wind speed in km/h
+    {hourly[windbearing]}               wind bearing in degrees
+    {hourly[windbearingstring]}         wind bearing as human readable string (e.g NE, NNE, ...)
+    {hourly[visibility]}                visibility in km
+    {hourly[cloudcover]}                cloud cover in %
+    {hourly[pressure]}                  pressure in HPa
+    {hourly[ozone]}                     Ozone in DU (Dobson Unit)
+    -->
+    <detailheader>
+        <area x="1%" y="10%" width="98%" height="15%" layer="2">
+            <fill color="{clrTransBlack}" />
+        </area>
+        <area x="1%" y="10%" width="97%" height="15%" layer="3">
+            <drawimage name="weathericon" imagetype="icon" path="{icon}" align="right" valign="center" width="{areaheight}*0.7" height="70%"/>
+            <drawtextbox x="2%" y="15%" width="80%" maxlines="2" font="{semibold}" fontsize="35%" color="{clrWhite}" text="{summary}" />
+        </area>
+    </detailheader>
+
+    <tab name="current" x="2%" y="25%" width="94%" height="60%" layer="2" scrollheight="{areaheight}/4">
+        <loop name="hourly" x="0" y="1%" orientation="vertical" columnwidth="{areawidth}" rowheight="{areaheight}/5">
+            <drawtext x="0" font="{semibold}" fontsize="9%" valign="center" color="{clrWhite}" text="{hourly[timestamp]}" />
+            <drawimage imagetype="icon" path="{hourly[icon]}" x="{rowheight}*1.2" valign="center" width="{rowheight}*0.8" height="{rowheight}*0.8"/>
+            <drawtext name="temp" x="2.2*{rowheight} + 0.75*{rowheight} - {width(temp)}/2" font="{vdrOsd}" fontsize="11%" y="0" color="{clrWhite}" text="{hourly[temperature]}°C" />
+            <drawtext name="felt" x="2.2*{rowheight} + 0.75*{rowheight} - {width(felt)}/2" font="{vdrOsd}" fontsize="5%" y="{rowheight}*0.6" color="{clrWhite}" text="{tr(felt)} {hourly[apparenttemperature]}°C" />
+            <drawtext x="4.2*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/3-2" y="0" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{hourly[summary]}" />
+            <drawtext x="4.2*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/3-2" y="{rowheight}/3" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{tr(precipitationprobability)} {hourly[precipitationprobability]}%, {hourly[precipitationintensity]} l/qm" />
+            <drawtext x="4.2*{rowheight}" font="{vdrOsd}" fontsize="{rowheight}/3-2" y="{rowheight}*2/3" width="{columnwidth} - 4*{rowheight}" color="{clrWhite}" text="{tr(windspeed)} {hourly[windspeed]} km/h {tr(from)} {hourly[windbearingstring]}" />
+            <drawrectangle x="0" y="{rowheight} - 1" width="{columnwidth}" height="1" color="{clrWhite}" />
+        </loop>
+    </tab>
+</menuplugin>
diff --git a/skinskeleton/globals.xml b/skinskeleton/globals.xml
new file mode 100644
index 0000000..01f37fb
--- /dev/null
+++ b/skinskeleton/globals.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+    </fonts>
+</globals>
diff --git a/skinskeleton/setup.xml b/skinskeleton/setup.xml
new file mode 100644
index 0000000..c73d6d4
--- /dev/null
+++ b/skinskeleton/setup.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE setup SYSTEM "../../dtd/setup.dtd">
+
+<setup>
+    <!--
+    define all your parameters here which should be configurable via
+    OSD and the skindesigner setup menu.
+    <submenu> and <parameter> tags are allowed, <submenu> can be nested
+    with arbitrary depth.
+    Submenus must carry the attributes "name" and "displaytext". "name"
+    is for internal usage, "displaytext" is used for displaying the submenu
+    in the menu and can be an translation token
+    Parameters must have type "bool" or "integer". For "bool" Parameters
+    a choice yes/no is shown in the setup menu, a "integer" parameter
+    can be configured to a value between "min" and "max". If "min" is not
+    set, "0" is the minimum, if "max" is not set, "1000" is maximum.
+    "displaytext" is used to display the option in the setup menu.
+    The configured parameter value is the default value.
+    -->
+    <menu>
+    </menu>
+
+    <!--
+    translations of displaytexts
+    -->
+    <translations>
+    </translations>
+</setup>
diff --git a/skinskeleton/themes/default/theme.xml b/skinskeleton/themes/default/theme.xml
new file mode 100644
index 0000000..f9dce83
--- /dev/null
+++ b/skinskeleton/themes/default/theme.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE globals SYSTEM "../../../../dtd/globals.dtd">
+
+<globals>
+    <!--
+    define all your needed colors here
+    -->
+    <colors>
+    </colors>
+    <!--
+    these variables can be used everywhere in the templates
+    variabls of type int can also be used as conditions, just
+    set such a variable to 1 for true and 0 for false
+    -->
+    <variables>
+    </variables>
+    <!--
+    translations used in the skin
+    -->
+    <translations>
+    </translations>
+    <!--
+    The three Fonts FontOSD, FontFix and FontSml configured in VDR
+    can be used in all template "font" attributes with this tokens:
+    {vdrOsd}
+    {vdrFix}
+    {vdrSml} 
+    If you like to use further fonts, just define them below.
+    Syntax:
+    <font name="tokenname">fontname</font>
+    These fonts can then also be used in all templates in the "font" 
+    attribute.
+    if an invalid font is used in a template, vdrOsd is used as default.
+    -->
+    <fonts>
+    </fonts>
+</globals>
diff --git a/skinskeleton/xmlfiles/displayaudiotracks.xml b/skinskeleton/xmlfiles/displayaudiotracks.xml
new file mode 100644
index 0000000..1989bb9
--- /dev/null
+++ b/skinskeleton/xmlfiles/displayaudiotracks.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayaudiotracks SYSTEM "../../../dtd/displayaudiotracks.dtd">
+
+<displayaudiotracks x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables background:
+    {numtracks}                     number of displayed tracks 
+    -->
+    <background>
+    </background>
+
+    <!-- Available Variables header:
+    {numtracks}                     number of displayed tracks 
+    {title}                         title of menu 
+    -->
+    <header>
+    </header>
+
+     <!-- Available Variables header:
+    {numelements}                 number of displayed tracks 
+    -->
+    <menuitems x="0" y="{areaheight} - {numelements} * {areaheight} / 10" orientation="vertical" width="100%" height="{numelements} * {areaheight} / 10" align="top" numlistelements="{numelements}">
+        <!-- Available Variables auidotrack listelement:
+        {current}                 true if item is currently selected 
+        {title}                   title of auio track 
+        -->
+        <listelement>
+        </listelement>
+    </menuitems>
+
+</displayaudiotracks>
diff --git a/skinskeleton/xmlfiles/displaychannel.xml b/skinskeleton/xmlfiles/displaychannel.xml
new file mode 100644
index 0000000..5c359a7
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaychannel.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaychannel SYSTEM "../../../dtd/displaychannel.dtd">
+
+<displaychannel x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <background>
+    </background>
+
+    <!-- Available Variables channelinfo:
+    {channelnumber}                 Number of Channel, with "-" in case of channel switching
+    {channelname}                   Name of current Channel
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {switching}                     true if a number is pressed on the remote to switch to a dedicated channel
+    -->
+    <channelinfo>
+    </channelinfo>
+
+    <!-- Available Variables epginfo:
+    {currenttitle}                     Title of the current Schedule
+    {currentsubtitle}                  Subtitle of the current Schedule
+    {currentstart}                     Start of current Schedule in hh:mm
+    {currentstop}                      End of current Schedule in hh:mm 
+    {currentduration}                  Duration of current Schedule in min
+    {currentdurationhours}             Duration, full hours
+    {currentdurationminutes}           Duration, rest of minutes
+    {currentelapsed}                   Elapsed time of current Schedule in min
+    {currentremaining}                 Remaining time of current Schedule in min
+    {currentrecording}                 true if current Schedule is recorded
+    {hasVPS}                           true if current Schedule has VPS
+    {nexttitle}                        Title of next Schedule
+    {nextsubtitle}                     Subtitle of next Schedule
+    {nextstart}                        Start of next Schedule in hh:mm
+    {nextstop}                         Stop of next Schedule in hh:mm
+    {nextduration}                     Duration of next Schedule in min
+    {nextdurationhours}                Duration, full hours
+    {nextdurationminutes}              Duration, rest of minutes
+    {nextrecording}                    true if next Schedule will be recorded
+    -->
+    <epginfo>
+    </epginfo>
+
+    <!-- Available Variables progressbar:
+    {start}                            Start of current Schedule in hh:mm
+    {stop}                             End of current Schedule in hh:mm 
+    {duration}                         Total Duration of current Schedule in seconds
+    {elapsed}                          Elapsed time of current Schedule in seconds
+    {remaining}                        Remaining time of current Schedule in seconds
+    -->
+    <progressbar>
+    </progressbar>
+
+    <!-- Available Variables statusinfo:
+    {isRadio}                          true if channel is a radio channel
+    {hasVT}                            true if channel has video text   
+    {isStereo}                         true if a stereo audio trac is available
+    {isDolby}                          true if a dolby audio track is available
+    {isEncrypted}                      true if channel is encrypted
+    {isRecording}                      true if currently a recording is running on this channel
+    {newmails}                         true if mailbox plugin is installed and new mails are available
+    -->
+    <statusinfo>
+    </statusinfo>
+
+    <!-- Available Variables audioinfo:
+    {numaudiotracks}                   number of available audio tracks for current channel
+    {audiochannel}                     0 if current channel is stereo, 1 for left chanel only, 2 for right channel only
+    {trackdesc}                        description of the current audio track
+    {tracklang}                        language of the current audio track
+    -->
+    <audioinfo>
+    </audioinfo>
+
+
+    <!-- Available Variables screenresolution:
+    {screenwidth}                      width of currently displayed channel in px
+    {screenheight}                     height of currently displayed channel in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <screenresolution>
+    </screenresolution>
+
+    <!-- Available Variables dvbdeviceinfo:
+    {prevAvailable}                     true if previous Channel Group is avaialble
+    {nextAvailable}                     true if next Channel Group is avaialble
+    {group}                             Name of current Channel Group
+    {nextgroup}                         Name of next Channel Group
+    {prevgroup}                         Name of prev Channel Group
+    {sepexists}                         true if a channel separator logo exists
+    {seppath}                           path for separator logo to use in imagetype "seplogo"
+    -->
+    <channelgroup>
+    </channelgroup>
+
+    <!-- Available Variables signalquality:
+    {signalstrength}                    STR value of currently displayed channel
+    {signalquality}                     SNR value of currently displayed channel
+    -->
+    <signalquality>
+    </signalquality>
+
+    <!-- background of signalmeter, will only be drawn if signalquality was deleted -->
+    <signalqualityback>
+    </signalqualityback>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channellogoexists]} true if a channel logo exists 
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+    </devices>
+
+    <!-- Available Variables currentweather:
+    {timestamp}                 timestamp of forecast in dd.mm hh:mm
+    {temperature}               current temperature in °C
+    {apparenttemperature}       apparent (feeled) temperature
+    {mintemperature}            minimum daily temperature in °C
+    {maxtemperature}            maximum daily temperature in °C
+    {summary}                   short weather summary
+    {icon}                      weather icon 
+    {precipitationintensity}    precipitation intensity in l/m2
+    {precipitationprobability}  precipitation probability in %
+    {precipitationtype}         precipitation type
+    {humidity}                  humidity in %
+    {windspeed}                 windspeed in km/h
+    {windbearing}               wind bearing in °
+    {windbearingstring}         wind bearing (N, NE, ...)
+    {visibility}                visibility in km
+    {cloudcover}                cloud cover in %
+    {pressure}                  pressure in HPo
+    {ozone}                     ozone value in DU
+    -->
+    <currentweather>
+    </currentweather>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasPoster}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+    </scrapercontent>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+    </datetime>
+
+    <!-- Available Variables time:
+    {sec}                    current seconds
+    {min}                    current minutes
+    {hour}                   current hours
+    {hmins}                  current "hourminutes" to display an hour hand
+    -->
+    <time>
+    </time>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+    </message>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+    
+</displaychannel>
diff --git a/skinskeleton/xmlfiles/displaymenu.xml b/skinskeleton/xmlfiles/displaymenu.xml
new file mode 100644
index 0000000..1a31df0
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenu.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymenu SYSTEM "../../../dtd/displaymenu.dtd" [
+<!ENTITY displaymenudefault SYSTEM "displaymenudefault.xml">
+<!ENTITY displaymenumain SYSTEM "displaymenumain.xml">
+<!ENTITY displaymenusetup SYSTEM "displaymenusetup.xml">
+<!ENTITY displaymenuschedules SYSTEM "displaymenuschedules.xml">
+<!ENTITY displaymenutimers SYSTEM "displaymenutimers.xml">
+<!ENTITY displaymenuchannels SYSTEM "displaymenuchannels.xml">
+<!ENTITY displaymenurecordings SYSTEM "displaymenurecordings.xml">
+<!ENTITY displaymenudetailepg SYSTEM "displaymenudetailepg.xml">
+<!ENTITY displaymenudetailrecording SYSTEM "displaymenudetailrecording.xml">
+<!ENTITY displaymenudetailtext SYSTEM "displaymenudetailtext.xml">
+]>
+
+<displaymenu x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- 
+    The following background, header, datetime and colorbuttons definitions are default
+    implementations. If one or more of these elements are not implemented in the subview, 
+    the default implementations are used. 
+    -->
+    <background>
+    </background>
+    <!-- Available Variables header:
+    {title}                   title of current menu
+    {vdrversion}              running VDR Version
+    {hasicon}                 true if a menu icon is available
+    {icon}                    path of menu icon
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <header>
+    </header>
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+    </datetime>
+    <!-- Available Variables time:
+    {sec}                    current seconds
+    {min}                    current minutes
+    {hour}                   current hours
+    {hmins}                  current "hourminutes" to display an hour hand
+    -->
+    <time>
+    </time>
+    <!-- Available Variables message:
+    {text}                    message text
+    {status}                  true if message is an status message
+    {info}                    true if message is an info message
+    {warning}                 true if message is an warn message
+    {error}                   true if message is an error message
+    -->
+    <message>
+    </message>
+    <!-- Available Variables colorbuttons:
+    {red1}                    true if red button is button 1
+    {red2}                    true if red button is button 2
+    {red3}                    true if red button is button 3
+    {red4}                    true if red button is button 4
+    {green1}                  true if green button is button 1
+    {green2}                  true if green button is button 2
+    {green3}                  true if green button is button 3
+    {green4}                  true if green button is button 4
+    {yellow1}                 true if yellow button is button 1
+    {yellow2}                 true if yellow button is button 2
+    {yellow3}                 true if yellow button is button 3
+    {yellow4}                 true if yellow button is button 4
+    {blue1}                   true if blue button is button 1
+    {blue2}                   true if blue button is button 2
+    {blue3}                   true if blue button is button 3
+    {blue4}                   true if blue button is button 4
+    {red}                     label of red button
+    {green}                   label of green button
+    {yellow}                  label of yellow button
+    {blue}                    label of blue button
+    -->
+    <colorbuttons>
+    </colorbuttons>
+    &displaymenudefault;
+    &displaymenumain;
+    &displaymenusetup;
+    &displaymenuschedules;
+    &displaymenutimers;
+    &displaymenuchannels;
+    &displaymenurecordings;
+    &displaymenudetailepg;
+    &displaymenudetailrecording;
+    &displaymenudetailtext;
+</displaymenu>
diff --git a/skinskeleton/xmlfiles/displaymenuchannels.xml b/skinskeleton/xmlfiles/displaymenuchannels.xml
new file mode 100644
index 0000000..ba6ef24
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenuchannels.xml
@@ -0,0 +1,81 @@
+<menuchannels x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="16">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {number}                  number of the displayed channel
+        {name}                    name of the displayed channel
+        {channellogoexists}       true if a channel logo exists 
+        {channelid}               ChannelID as path to display channel logo
+        {transponder}             Transponder of channel
+        {frequency}               Frequency of channel
+        {source}                  Source of channel (S, C, T)
+        {sourcedescription}       Descriptin of source from sources.conf
+        {position}                orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                  true if channel is a ATSC channel
+        {isCable}                 true if channel is cable channel
+        {isSat}                   true if channel is a satellite channel
+        {isTerr}                  true if channel is terrestrical
+        {presenteventtitle}       title of present event on this channel
+        {presenteventstart}       present event start time in hh::mm
+        {presenteventstop}        present event event stop time in hh::mm
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}                     x position of according menu item
+        {menuitemy}                     y position of according menu item
+        {menuitemwidth}                 width of according menu item
+        {menuitemheight}                height of according menu item
+        {number}                        number of the displayed channel
+        {name}                          name of the displayed channel
+        {channellogoexists}             true if a channel logo exists 
+        {channelid}                     ChannelID as path to display channel logo
+        {transponder}                   Transponder of channel
+        {frequency}                     Frequency of channel
+        {source}                        Source of channel (S, C, T)
+        {sourcedescription}             Descriptin of source from sources.conf
+        {position}                      orbital position of the satellite in case this is a DVB-S source
+        {isAtsc}                        true if channel is a ATSC channel
+        {isCable}                       true if channel is cable channel
+        {isSat}                         true if channel is a satellite channel
+        {isTerr}                        true if channel is terrestrical
+        {presenteventtitle}             title of present event on this channel
+        {presenteventstart}             present event start time in hh::mm
+        {presenteventstop}              present event stop time in hh::mm
+        {presenteventshorttext}         present event short text
+        {presenteventdescription}       present event description
+        {presenteventday}               present event name of day
+        {presenteventdate}              present event date in dd:mm:yy
+        {presenteventelapsed}           present event elapsed time
+        {presenteventduration}          present event duration
+        {presenteventdurationhours}     duration, full hours
+        {presenteventdurationminutes}   duration, rest of minutes
+        {hasposter}                     true if a scraped poster is available for this elements present evemt
+        {posterwidth}                   width of scraped poster
+        {posterheight}                  height of scraped poster
+        {posterpath}                    absolute path of scraped poster
+        {nexteventtitle}                title of next event on this channel
+        {nexteventstart}                next event start time in hh::mm
+        {nexteventstop}                 next event event stop time in hh::mm
+        {nexteventshorttext}            next event short text
+        {nexteventdescription}          next event description
+        {nexteventday}                  next event name of day
+        {nexteventdate}                 next event date in dd:mm:yy
+        {nexteventduration}             next event duration
+        {nexteventdurationhours}        duration, full hours
+        {nexteventdurationminutes}      duration, rest of minutes
+        {schedule[]}                    array with following 10 schedules
+        {schedule[title]}               title of event
+        {schedule[shorttext]}           shorttext of event
+        {schedule[start]}               start time of event in hh:mm
+        {schedule[stop]}                stop time of event in hh:mm        
+        -->
+        <currentelement delay="500" fadetime="0">
+        </currentelement>
+
+    </menuitems>
+
+</menuchannels>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymenudefault.xml b/skinskeleton/xmlfiles/displaymenudefault.xml
new file mode 100644
index 0000000..8f38b18
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenudefault.xml
@@ -0,0 +1,37 @@
+ <menudefault x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- IMPORTANT: menuitemwidth and determinatefont have to be defined here. menuitemwidth defines the total width of the 
+    default menu items, determinatefont the function which sets the actual font to use. With that it is possible to determinate
+    the correct column widths -->
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" menuitemwidth="94%" determinatefont="column1" numlistelements="16">
+        <!-- Available Variables default menu listelement:
+        {nummenuitem}               number of item in list, starts with 1
+        {column1}                   text of column1
+        {column2}                   text of column2
+        {column3}                   text of column3
+        {column4}                   text of column4
+        {column5}                   text of column5
+        {column6}                   text of column6
+        {column2set}                true if column2 is used
+        {column3set}                true if column3 is used
+        {column4set}                true if column4 is used
+        {column5set}                true if column5 is used
+        {column6set}                true if column6 is used
+        {column2x}                  proposed x value of column2
+        {column3x}                  proposed x value of column3
+        {column4x}                  proposed x value of column4
+        {column5x}                  proposed x value of column5
+        {column6x}                  proposed x value of column6
+        {column1width}              proposed width of column1
+        {column2width}              proposed width of column2
+        {column3width}              proposed width of column3
+        {column4width}              proposed width of column4
+        {column5width}              proposed width of column5
+        {column6width}              proposed width of column6
+        {current}                   true if column is currently selected 
+        {separator}                 true if column is a list separator 
+        -->
+        <listelement>
+        </listelement>
+        
+    </menuitems>
+</menudefault>
diff --git a/skinskeleton/xmlfiles/displaymenudetailepg.xml b/skinskeleton/xmlfiles/displaymenudetailepg.xml
new file mode 100644
index 0000000..2a110c6
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenudetailepg.xml
@@ -0,0 +1,184 @@
+<menudetailedepg x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables in detailheader elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     Day of event as three letter abrivation
+    {date}                    date of current event in dd.mm.yy
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channelname}             Channelname of event
+    {channelnumber}           Channelnumber of event
+    {channellogoexists}       true if a channel logo exists 
+    {channelid}               ChannelID as path to display channel logo
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {epgpicavailable}         true if a epg picture is available
+    {epgpicpath}              path of epg picture
+    -->
+    <detailheader>
+    </detailheader>
+
+    <!-- Available Variables in tab elements:
+    {title}                   title of event
+    {shorttext}               shorttext of event
+    {description}             description of event
+    {start}                   event start time in hh::mm
+    {stop}                    event stop time
+    {day}                     Day of event as three letter abrivation
+    {date}                    date of current event in dd.mm.yy
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {running}                 true if event is currently running
+    {elapsed}                 elapsed time of event, if not running 0
+    {duration}                duration of event
+    {durationhours}           duration, full hours
+    {durationminutes}         duration, rest of minutes
+    {vps}                     vps description string
+    {channellogoexists}       true if a channel logo exists 
+    {channelid}               ChannelID as path to display channel logo
+    {hasreruns}               true if reruns of this event are found
+    {reruns[]}                array with reruns
+    {reruns[title]}           title of rerun
+    {reruns[shorttext]}       shorttext of rerun
+    {reruns[date]}            date of rerun in dd:mm
+    {reruns[day]}             short dayname of rerun
+    {reruns[start]}           start time of rerun in hh:mm
+    {reruns[stop]}            stop time of rerun in hh:mm
+    {reruns[channelname]}     name of channel on which rerun occurs
+    {reruns[channelnumber]}   number of channel on which rerun occurs
+    {reruns[channelid]}       id of channel on which rerun occurs to display channel logo
+    {reruns[channellogoexists]} true if channel logo exists
+    {epgpic1avaialble}        true if first epg picture is available
+    {epgpic2avaialble}        true if first epg picture is available
+    {epgpic3avaialble}        true if first epg picture is available
+    {epgpic1path}             path of first epg picture
+    {epgpic2path}             path of second epg picture
+    {epgpic3path}             path of third epg picture
+    
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <!-- just define as many tabs as needed -->
+    <tab name="Tab1" x="0" y="0" width="100%" height="100%" layer="2" scrollheight="{areaheight}/4">
+    </tab>
+
+    <!-- Available Variables tablabels:
+    {currenttab}            name of currently active tab
+    {prevtab}               name of prev tab
+    {nexttab}               name of next tab
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+    </tablabels>
+</menudetailedepg>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymenudetailrecording.xml b/skinskeleton/xmlfiles/displaymenudetailrecording.xml
new file mode 100644
index 0000000..94f1303
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenudetailrecording.xml
@@ -0,0 +1,180 @@
+<menudetailedrecording x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables in detailheader elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 name of recording (name from EPG)
+    {shorttext}               shorttext of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+    {ismovie}                 true if event is scraped as a movie
+    {isseries}                true if event is scraped as a series
+    {posteravailable}         true if a poster is available
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {banneravailable}         true if a banner is available
+    {bannerwidth}             width of banner
+    {bannerheight}            height of banner
+    {bannerpath}              path of banner
+    {recimgavailable}         true if a recording image is available in the recording path
+    {recimgpath}              path of rec image
+    {recchannelname}          name of channel from which was recorded
+    {recchannelid}            id of channel from which was recorded
+    {recchannelnumber}        number of channel from which was recorded
+    -->
+    <detailheader>
+    </detailheader>
+    <!-- Available Variables in tab elements:
+    {name}                    full name of recording (including folders)
+    {epgname}                 name of recording (name from EPG)
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of current recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+    {cutted}                  true if recording is cutted
+
+    {recordingsize}           size of recording (automatically in GB / MB)
+    {recordingsizecutted}     size of cutted recording (automatically in GB / MB)
+    {recordinglength}         length of recording (in hh::mm:ss)
+    {recordinglengthcutted}   length of cutted recording (in hh::mm:ss)
+    {recordingbitrate}        bitrate of recording (in MBit/s)
+    {recordingformat}         format of recording (TS / PS)
+    {searchtimer}             name of accordign searchtimer (if available)
+    {recchannelname}          name of channel from which was recorded
+    {recchannelid}            id of channel from which was recorded
+    {recchannelnumber}        number of channel from which was recorded
+    
+    {recimg1avaialble}        true if first recording image is available
+    {recimg2avaialble}        true if first recording image is available
+    {recimg3avaialble}        true if first recording image is available
+    {recimg1path}             path of first recording image
+    {recimg2path}             path of second recording image
+    {recimg3path}             path of third recording image
+    
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+    -->
+
+    <!-- a tab is one scrolling area, just position and draw as inside a normal area -->
+    <!-- just define as many tabs as needed -->
+    <tab name="Tab1" x="0" y="0" width="100%" height="100%" layer="2" scrollheight="{areaheight}/4">
+    </tab>
+
+    <!-- Available Variables tablabels:
+    {currenttab}            name of currently active tab
+    {prevtab}               name of prev tab
+    {nexttab}               name of next tab    
+    {tabs[]}                array with available tab labels
+    {tabs[title]}           title of tab
+    {tabs[current]}         true if tab is displayed currently
+    -->
+    <tablabels>
+    </tablabels>
+
+</menudetailedrecording>
diff --git a/skinskeleton/xmlfiles/displaymenudetailtext.xml b/skinskeleton/xmlfiles/displaymenudetailtext.xml
new file mode 100644
index 0000000..6c91e5d
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenudetailtext.xml
@@ -0,0 +1,9 @@
+<menudetailedtext x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <!-- Available Variables in tab elements:
+    {text}                    detailed text
+    -->
+    <tab name="text" x="0" y="0" width="100" height="100%" layer="1" scrollheight="{areaheight}/4">
+    </tab>
+
+</menudetailedtext>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymenumain.xml b/skinskeleton/xmlfiles/displaymenumain.xml
new file mode 100644
index 0000000..bc4c72d
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenumain.xml
@@ -0,0 +1,141 @@
+<menumain x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <!-- Available Variables timers:
+    {numtimers}                  number of active timers (max. 15 timers will be displayed)
+    {numtimerconflicts}          number of current timer conflicts
+    {timer1exists}               true if timer 1 available
+    {timer2exists}               true if timer 2 available
+    ...
+    {timer15exists}              true if timer 15 available
+    {timers[]}                   array with active timers (local and remote if remotetimers plugin is in use)
+    {timers[title]}              title of timer
+    {timers[datetime]}           date and time of timer
+    {timers[recording]}          true if timer is recording currently
+    {timers[channelname]}        name of channel for which timer is created
+    {timers[channelnumber]}      number of channel
+    {timers[channelid]}          ChannelID of channel
+    {timers[channellogoexists]}  true if channel logo exists
+    -->
+    <timers>
+    </timers>
+
+    <!-- Available Variables discusage:
+    {freetime}                available disc capacity in hh:mm
+    {freepercent}             available disc capacity in percent
+    {usedpercent}             used disc capacity in percent
+    {freegb}                  available disc capacity in gigabytes
+    {discalert}               true if disc usage is > 95%
+    {vdrusagestring}          localized VDR internal usage string
+    -->
+    <discusage>
+    </discusage>
+
+    <!-- Available Variables devices:
+    {numdevices}                number of available devices
+    {devices[]}                 array with available devices
+    {devices[num]}              number of current device
+    {devices[type]}             type of device (DVB-S, DVB-C, ...)
+    {devices[istuned]}          true if device is currently tuned to a transponder
+    {devices[livetv]}           true if device is currently playing livetv
+    {devices[recording]}        true if device is currently recording
+    {devices[hascam]}           true if device has a CAM
+    {devices[cam]}              number of CAM
+    {devices[signalstrength]}   signalstrength of devcie
+    {devices[signalquality]}    signalstrength of devcie
+    {devices[channelnumber]}    number of the currently tuned channel
+    {devices[channelname]}      name of the currently tuned channel
+    {devices[channellogoexists]} true if a channel logo exists 
+    {devices[channelid]}        ID of the currently tuned channel
+    {devices[source]}           source of the currently tuned channel
+    -->
+    <devices>
+    </devices>
+
+    <!-- Available Variables systemload:
+    {load}                      current system load
+    -->
+    <systemload>
+    </systemload>
+
+    <!-- Available Variables tempreatures:
+    {cputemp}                  current cpu temperature in °C
+    {gputemp}                  current gpu temperature in °C
+    -->
+    <temperatures>
+    </temperatures>
+
+    <!-- Available Variables currentschedule:
+    {title}                     Title of the current Schedule
+    {subtitle}                  Subtitle of the current Schedule
+    {start}                     Start of current Schedule in hh:mm
+    {stop}                      End of current Schedule in hh:mm 
+    {duration}                  Duration of current Schedule in min
+    {durationhours}             Duration, full hours
+    {minutes}                   Duration, rest of minutes
+    {elapsed}                   Elapsed time of current Schedule in min
+    {remaining}                 Remaining time of current Schedule in min
+    {hasPoster}                 true if poster is available
+    {posterpath}                Full Path of Poster to use in image path attribute
+    {posterwidth}               width of poster in pixel
+    {posterheight}              height of poster in pixel
+    {hasBanner}                 true if banner is available
+    {bannerpath}                Full Path of banner to use in image path attribute
+    {bannerwidth}               width of banner in pixel
+    {bannerheight}              height of banner in pixel
+    -->
+    <currentschedule>
+    </currentschedule>
+
+    <!-- Available Variables currentweather:
+    {timestamp}                 timestamp of forecast in dd.mm hh:mm
+    {temperature}               current temperature in °C
+    {apparenttemperature}       apparent (feeled) temperature
+    {mintemperature}            minimum daily temperature in °C
+    {maxtemperature}            maximum daily temperature in °C
+    {summary}                   short weather summary
+    {icon}                      weather icon 
+    {precipitationintensity}    precipitation intensity in l/m2
+    {precipitationprobability}  precipitation probability in %
+    {precipitationtype}         precipitation type
+    {humidity}                  humidity in %
+    {windspeed}                 windspeed in km/h
+    {windbearing}               wind bearing in °
+    {windbearingstring}         wind bearing (N, NE, ...)
+    {visibility}                visibility in km
+    {cloudcover}                cloud cover in %
+    {pressure}                  pressure in HPo
+    {ozone}                     ozone value in DU
+    -->
+    <currentweather>
+    </currentweather>
+    
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="8">
+        <!-- Available Variables main menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+        </currentelement>
+    </menuitems>
+
+</menumain>
diff --git a/skinskeleton/xmlfiles/displaymenurecordings.xml b/skinskeleton/xmlfiles/displaymenurecordings.xml
new file mode 100644
index 0000000..3e66746
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenurecordings.xml
@@ -0,0 +1,65 @@
+<menurecordings x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="16">
+        <!-- Available Variables recordings menu listelement:
+        {nummenuitem}           number of item in list, starts with 1
+        {name}                  Real Name of recording (Name of Recording Folder)
+        {epgname}               Name of recording (Name from EPG)
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes
+        {current}               true if item is currently selected
+        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposterthumbnail}    true if a scraped poster thumbnail is available for recording
+        {thumbnailbwidth}       width of scraped poster thumbnail
+        {thumbnailheight}       height of scraped poster thumbnail
+        {thumbnailpath}         absolute path of scraped poster thumbnail
+        -->
+        <listelement>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}             x position of according menu item
+        {menuitemy}             y position of according menu item
+        {menuitemwidth}         width of according menu item
+        {menuitemheight}        height of according menu item
+        {name}                  Real Name of recording (Name of Recording Folder)
+        {epgname}               Name of recording (Name from EPG)
+        {shorttext}             Short Text of recording
+        {description}           Descrption of recording        
+        {date}                  Date of recording
+        {time}                  Time of recording
+        {daynumeric}            day as number
+        {month}                 month as number
+        {year}                  year as number
+        {duration}              real duration of recording in minutes
+        {durationhours}         real duration, full hours
+        {durationminutes}       real duration, rest of minutes
+        {durationevent}         duration of corresponding event in minutes
+        {durationeventhours}    event duration, full hours
+        {durationeventminutes}  event duration, rest of minutes        {new}                   true if recording is new
+        {cutted}                true if recording is cutted
+        {folder}                true if item is a folder
+        {numrecordingsfolder}   if item is a folder, number of recordings in this folder
+        {newrecordingsfolder}   if item is a folder, number of new recordings in this folder
+        {hasposter}             true if a scraped poster is available for recording
+        {posterwidth}           width of scraped poster
+        {posterheight}          height of scraped poster
+        {posterpath}            absolute path of scraped poster
+        -->
+        <currentelement delay="500" fadetime="0">
+        </currentelement>
+    </menuitems>
+
+</menurecordings>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymenuschedules.xml b/skinskeleton/xmlfiles/displaymenuschedules.xml
new file mode 100644
index 0000000..58c579d
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenuschedules.xml
@@ -0,0 +1,96 @@
+<menuschedules x="0" y="0" width="100%" height="100%" fadetime="0">
+    <!-- Available Variables header:
+    {title}                         title of current menu
+    {vdrversion}                    running VDR Version
+    {hasicon}                       true if a menu icon is available
+    {icon}                          path of menu icon
+    {channelnumber}                 Number of Channel of current event
+    {channelname}                   Name of current Channel of current event
+    {channellogoexists}             true if a channel logo exists 
+    {channelid}                     ChannelID as path to display channel logo
+    {whatson}                       true if menu "What's on" is displayed
+    {whatsonnow}                    true if menu "What's on now" is displayed
+    {whatsonnext}                   true if menu "What's on next" is displayed
+    {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+    -->
+    <header>
+    </header>
+
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="16">
+        <!-- Available Variables schedules menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {hasVPS}                  true if event has VPS information
+        -->
+        <listelement>
+        </listelement>
+        <!-- Available Variables schedules menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {title}                   title of event
+        {shorttext}               shorttext of event
+        {description}             detailed description of event
+        {start}                   event start time in hh::mm
+        {stop}                    event stop time
+        {day}                     day of current event
+        {date}                    date of current event in dd.mm.yy
+        {daynumeric}              day as number
+        {month}                   month as number
+        {year}                    year as number
+        {running}                 true if event is currently running
+        {elapsed}                 elapsed time of event, if not running 0
+        {duration}                duration of event
+        {durationhours}           duration, full hours
+        {durationminutes}         duration, rest of minutes
+        {channelname}             Channel Name
+        {channelnumber}           Channel Number
+        {channelid}               ChannelID as path to display channel logo
+        {channellogoexists}       true if a channel logo exists 
+        {hasposter}               true if a scraped poster is available for this element
+        {posterwidth}             width of scraped poster
+        {posterheight}            height of scraped poster
+        {posterpath}              absolute path of scraped poster
+        {timerpartitial}          true if partitial timer is set for the event
+        {timerfull}               true if full timer is set for the event
+        {whatson}                 true if menu "What's on" is displayed
+        {whatsonnow}              true if menu "What's on now" is displayed
+        {whatsonnext}             true if menu "What's on next" is displayed
+        {whatsonfavorites}        true if EPGSearch Favorites menu is displayed
+        {schedule[]}              array with next 10 schedules, only for whatsonnow and whatsonnext
+        {schedule[title]}         title of event
+        {schedule[shorttext]}     shorttext of event
+        {schedule[start]}         start time of event in hh:mm
+        {schedule[stop]}          stop time of event in hh:mm
+        -->
+        <currentelement delay="500" fadetime="0">
+        </currentelement>
+    </menuitems>
+
+</menuschedules>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymenusetup.xml b/skinskeleton/xmlfiles/displaymenusetup.xml
new file mode 100644
index 0000000..59b6740
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenusetup.xml
@@ -0,0 +1,28 @@
+<menusetup x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="16">
+        <!-- Available Variables setup menu listelement:
+        {nummenuitem}             number of item in list, starts with 1
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        {current}                 true if item is currently selected 
+        {separator}               true if item is a list separator 
+        -->
+        <listelement>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables main menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {label}                   label of menu item
+        {number}                  number of menu item (or empty string if not set)
+        {icon}                    path of appropriate icon
+        -->
+        <currentelement delay="50" fadetime="0">
+        </currentelement>
+    </menuitems>
+    
+</menusetup>
diff --git a/skinskeleton/xmlfiles/displaymenutimers.xml b/skinskeleton/xmlfiles/displaymenutimers.xml
new file mode 100644
index 0000000..e806240
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymenutimers.xml
@@ -0,0 +1,67 @@
+<menutimers x="0" y="0" width="100%" height="100%" fadetime="0">
+    <menuitems x="0" y="0" orientation="vertical" width="100%" height="100%" align="center" numlistelements="16">
+        <!-- Available Variables channels menu listelement:
+        {nummenuitem}       number of item in list, starts with 1
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)
+        {channelname}       Name of channel which is set for the timer
+        {channellogoexists} true if a channel logo exists 
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {current}           true if item is currently selected
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <listelement>
+        </listelement>
+        <!-- additional element which is drawn for current element -->
+        <!-- Available Variables channels menu currentelement:
+        {menuitemx}         x position of according menu item
+        {menuitemy}         y position of according menu item
+        {menuitemwidth}     width of according menu item
+        {menuitemheight}    height of according menu item
+        {title}             Title of Timer
+        {timerstart}        Start Time of Timer in hh::mm
+        {timerstop}         End Time of Timer in hh::mm
+        {day}               Day (numerical)
+        {dayname}           Day, for repeating timers days where timer is active
+        {month}             Month (two digits)
+        {monthname}         Month, three letter abbrevation
+        {year}              Year (4 digits)#
+        {channelname}       Name of channel which is set for the timer
+        {channellogoexists} true if a channel logo exists 
+        {channelid}         ID of channel which is set for the timer (for dispalying channel logo)
+        {channelnumber}     Number of channel which is set for the timer
+        {eventtitle}        Title of corresponding event
+        {eventstart}        Start Time of corresponding event in hh::mm
+        {eventstop}         Stop Time of corresponding event in hh::mm
+        {eventshorttext}    Short Text corresponding event
+        {eventdescription}  Description corresponding event
+        {hasposter}         true if a scraped poster is available for event
+        {posterwidth}       width of scraped poster
+        {posterheight}      height of scraped poster
+        {posterpath}        absolute path of scraped poster
+        {flagactive}        true if timer is active
+        {flaginstant}       true if timer is an instant timer
+        {flagvps}           true if timer uses VPS
+        {flagrecording}     true if is recording currently
+        {flagpending}       true if timer is pending
+        -->
+        <currentelement delay="500" fadetime="0">
+        </currentelement>
+        
+    </menuitems>
+
+</menutimers>
\ No newline at end of file
diff --git a/skinskeleton/xmlfiles/displaymessage.xml b/skinskeleton/xmlfiles/displaymessage.xml
new file mode 100644
index 0000000..9f8d9a5
--- /dev/null
+++ b/skinskeleton/xmlfiles/displaymessage.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displaymessage SYSTEM "../../../dtd/displaymessage.dtd">
+
+<displaymessage x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <background>
+    </background>
+
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+    </message>
+
+</displaymessage>
diff --git a/skinskeleton/xmlfiles/displayreplay.xml b/skinskeleton/xmlfiles/displayreplay.xml
new file mode 100644
index 0000000..8cef153
--- /dev/null
+++ b/skinskeleton/xmlfiles/displayreplay.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayreplay SYSTEM "../../../dtd/displayreplay.dtd">
+
+<displayreplay x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <background>
+    </background>
+
+    <backgroundmodeonly>
+    </backgroundmodeonly>
+
+    <!-- Available Variables datetime:
+    {time}                              time in hh:mm
+    {day}                               day in digits
+    {dayleadingzero}                    day in digits with leading 0
+    {dayname}                           Full name of the day
+    {daynameshort}                      Short 3 char name of the day
+    {month}                             month in digits with leading 0
+    {monthname}                         Full name of the month
+    {monthnameshort}                    3 letter abbrivation of month name
+    {year}                              year in yyyy
+    -->
+    <datetime>
+    </datetime>
+
+    <!-- Available Variables scrapercontent:
+    {posterpath}                        Full Path of Poster to use in image path attribute
+    {posterwidth}                       width of poster in pixel
+    {posterheight}                      height of poster in pixel
+    {hasPoster}                         true if poster is available
+    {bannerpath}                        Full Path of banner to use in image path attribute
+    {bannerwidth}                       width of banner in pixel
+    {bannerheight}                      height of banner in pixel
+    {hasBanner}                         true if banner is available
+
+    Use this tokens if you want to display a banner for series and a poster for movies:
+    {mediapath}                         Full Path of Poster or Banner to use in image path attribute
+    {mediawidth}                        width of image in pixel
+    {mediaheight}                       height of image in pixel
+    {isbanner}                          true if image is a banner, false if it is a poster
+    -->
+    <scrapercontent>
+    </scrapercontent>
+
+    <!-- Available Variables rectitle:
+    {rectitle}                     Title of Recording
+    {recsubtitle}                  Subtitle of the Recording
+    {recdate}                      Date Recording in dd.mm.yy
+    {rectime}                      Time of Recording in hh:mm
+    -->
+    <rectitle>
+    </rectitle>
+
+    <!-- Available Variables recinfo:
+    {screenwidth}                      width of currently displayed recording in px
+    {screenheight}                     height of currently displayed recording in px
+    {resolution}                       resolution: hd1080i, hd720p, sd576i
+    {aspect}                           screen aspect, each 4:3, 16:9 or 21:9
+    {isHD}                             true for hd1080i and hd720p
+    {isWideScreen}                     true if aspect is 16:9 or 21:9
+    -->
+    <recinfo>
+    </recinfo>
+
+    <!-- Available Variables currenttime:
+    {reccurrent}                   Current Time in hh:mm:ss
+    -->
+    <currenttime>
+    </currenttime>
+
+    <!-- Available Variables totaltime:
+    {rectotal}                   Total Time in hh:mm:ss
+    -->
+    <totaltime>
+    </totaltime>
+
+    <!-- Available Variables progressbar:
+    {current}                   current frame of recording
+    {total}                     total frames of recording
+    -->
+    <progressbar>
+    </progressbar>
+
+    <!-- Available Variables cutmarks:
+    {marks[]}                   array of available marks
+    {marks[position]}           frame of current mark
+    {marks[endposition]}        frame where startmark ends
+    {marks[total]}              total number of frames
+    {marks[active]}             true if current replay position hits exactly the mark
+    {marks[startmark]}          true if mark is start mark
+    -->
+    <cutmarks>
+    </cutmarks>
+
+    <!-- Available Variables controlicons and controliconsmodeonly:
+    {play}              true if recording is played currently
+    {pause}             true if recording is paused
+    {forward}           true if fast forwarding 
+    {forward1x}         true if fast forwarding 1x (with 3 trickspeeds)
+    {forward2x}         true if fast forwarding 2x (with 3 trickspeeds)
+    {forward3x}         true if fast forwarding 3x (with 3 trickspeeds)
+    {rewind}            true if rewinding 
+    {rewind1x}          true if rewinding 1x (with 3 trickspeeds)
+    {rewind2x}          true if rewinding 2x (with 3 trickspeeds)
+    {rewind3x}          true if rewinding 3x (with 3 trickspeeds)
+    -->
+    <controlicons>
+    </controlicons>
+
+    <controliconsmodeonly>
+    </controliconsmodeonly>
+
+    <!-- Available Variables jump:
+    {jump}                      time to jump to in hh:mm
+    -->
+    <jump>
+    </jump>
+    <!-- Available Variables message:
+    {text}                     message text
+    {status}                   true if message is a status message
+    {info}                     true if message is a info message
+    {warning}                  true if message is a warn message
+    {error}                    true if message is a error message
+    -->
+    <message>
+    </message>
+
+    <!-- Available Variables onpause and onpausemodeonly:
+    {name}                    title of recording
+    {shorttext}               shorttext of recording
+    {description}             description of recording
+    {date}                    date of recording in dd.mm.yy
+    {time}                    time of recording in hh:mm
+    {daynumeric}              day as number
+    {month}                   month as number
+    {year}                    year as number
+    {duration}                real duration of recording in minutes
+    {durationhours}           real duration, full hours
+    {durationminutes}         real duration, rest of minutes
+    {durationevent}           duration of corresponding event in minutes
+    {durationeventhours}      event duration, full hours
+    {durationeventminutes}    event duration, rest of minutes
+
+    {ismovie}                 true if event is scraped as a movie
+    Available variables for movies:
+    {movietitle}              movie title from themoviedb
+    {movieoriginalTitle}      movie original title from themoviedb
+    {movietagline}            movie tagline from themoviedb
+    {movieoverview}           movie overview from themoviedb
+    {movieadult}              true if movie is rated as adult
+    {moviebudget}             movie budget from themoviedb in $
+    {movierevenue}            movie revenue from themoviedb in $
+    {moviegenres}             movie genres from themoviedb
+    {moviehomepage}           movie homepage from themoviedb
+    {moviereleasedate}        movie release date from themoviedb
+    {movieruntime}            movie runtime from themoviedb
+    {moviepopularity}         movie popularity from themoviedb
+    {movievoteaverage}        movie vote average from themoviedb
+    {posterwidth}             width of scraped poster
+    {posterheight}            height of scraped poster
+    {posterpath}              absolute path of scraped poster
+    {fanartwidth}             width of scraped fanart
+    {fanartheight}            height of scraped fanart
+    {fanartpath}              absolute path of scraped fanart
+    {movieiscollection}       true if movie is part of a collection
+    {moviecollectionName}     name of movie collection
+    {collectionposterwidth}   width of scraped collection poster
+    {collectionposterheight}  height of scraped collection poster
+    {collectionposterpath}    absolute path of scraped collection poster
+    {collectionfanartwidth}   width of scraped collection fanart
+    {collectionfanartheight}  height of scraped collection fanart
+    {collectionfanartpath}    absolute path of scraped collection fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb
+
+    {isseries}                true if event is scraped as a series
+    Available variables for series:
+    {seriesname}              name of series
+    {seriesoverview}          series overview
+    {seriesfirstaired}        first aired date 
+    {seriesnetwork}           network which produces series
+    {seriesgenre}             series genre
+    {seriesrating}            series thetvdb rating
+    {seriesstatus}            status of series (running / finished)
+    {episodetitle}            title of episode
+    {episodenumber}           number of episode
+    {episodeseason}           season of episode
+    {episodefirstaired}       first aired date of episode
+    {episodegueststars}       guest stars of episode
+    {episodeoverview}         episode overview
+    {episoderating}           user rating for episode
+    {episodeimagewidth}       episode image width
+    {episodeimageheight}      episode image height
+    {episodeimagepath}        episode image path
+    {seasonposterwidth}       episode season poster width
+    {seasonposterheight}      episode season poster height
+    {seasonposterpath}        episode season poster path
+    {seriesposter1width}      width of 1st poster
+    {seriesposter1height}     height of 1st poster
+    {seriesposter1path}       path of 1st poster
+    {seriesposter2width}      width of 2nd poster
+    {seriesposter2height}     height of 2nd poster
+    {seriesposter2path}       path of 2nd poster
+    {seriesposter3width}      width of 3rd poster
+    {seriesposter3height}     height of 3rd poster
+    {seriesposter3path}       path of 3rd poster
+    {seriesfanart1width}      width of 1st fanart
+    {seriesfanart1height}     height of 1st fanart
+    {seriesfanart1path}       path of 1st fanart
+    {seriesfanart2width}      width of 2nd fanart
+    {seriesfanart2height}     height of 2nd fanart
+    {seriesfanart2path}       path of 2nd fanart
+    {seriesfanart3width}      width of 3rd fanart
+    {seriesfanart3height}     height of 3rd fanart
+    {seriesfanart3path}       path of 3rd fanart
+    {seriesbanner1width}      width of 1st banner
+    {seriesbanner1height}     height of 1st banner
+    {seriesbanner1path}       path of 1st banner
+    {seriesbanner2width}      width of 2nd banner
+    {seriesbanner2height}     height of 2nd banner
+    {seriesbanner2path}       path of 2nd banner
+    {seriesbanner3width}      width of 3rd banner
+    {seriesbanner3height}     height of 3rd banner
+    {seriesbanner3path}       path of 3rd fanart
+    {actors[]}                array with movie actors
+    {actors[name]}            real name of actor
+    {actors[role]}            actor role
+    {actors[thumb]}           absolute path of scraped actor thumb
+    {actors[thumbwidth]}      width of scraped actor thumb
+    {actors[thumbheight]}     height of scraped actor thumb    
+    -->
+    <!-- delay (in seconds) defines the time to wait till viewelement is displayed
+    fadetime in ms -->
+    <onpause delay="60" fadetime="0">
+    </onpause>
+
+    <onpausemodeonly delay="30" fadetime="0">
+    </onpausemodeonly>
+
+    <!-- Available Variables customtokens:
+    all custom tokens set by the svdrp command SCTK are available in this viewelement
+    For instance, use an appropriate script which runs periodically as cronjob and
+    sets these custom tokens with svdrpsend or dbus2vdr
+    --> 
+    <customtokens>
+    </customtokens>
+    
+</displayreplay>
diff --git a/skinskeleton/xmlfiles/displayvolume.xml b/skinskeleton/xmlfiles/displayvolume.xml
new file mode 100644
index 0000000..d5bb8a0
--- /dev/null
+++ b/skinskeleton/xmlfiles/displayvolume.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE displayvolume SYSTEM "../../../dtd/displayvolume.dtd">
+
+<displayvolume x="0" y="0" width="100%" height="100%" fadetime="0">
+
+    <background>
+    </background>
+
+    <!-- Available Variables volume:
+    {volume}                            current volume, range from 0 to 255
+    {volpercent}                        current volume in %
+    {maxvolume}                         maximal volume
+    {mute}                              true if volume is muted
+    -->
+    <volume>
+    </volume>
+
+</displayvolume>
diff --git a/themes/blackhole-default.theme b/themes/blackhole-default.theme
new file mode 100644
index 0000000..ef29962
--- /dev/null
+++ b/themes/blackhole-default.theme
@@ -0,0 +1 @@
+Description = default 
diff --git a/themes/nopacity-darkred.theme b/themes/nopacity-darkred.theme
new file mode 100644
index 0000000..48e23a4
--- /dev/null
+++ b/themes/nopacity-darkred.theme
@@ -0,0 +1 @@
+Description = DarkRed 
diff --git a/themes/nopacity-default.theme b/themes/nopacity-default.theme
new file mode 100644
index 0000000..80b3660
--- /dev/null
+++ b/themes/nopacity-default.theme
@@ -0,0 +1 @@
+Description = freestyle 
diff --git a/views/displayaudiotracksview.c b/views/displayaudiotracksview.c
new file mode 100644
index 0000000..c4b9f9a
--- /dev/null
+++ b/views/displayaudiotracksview.c
@@ -0,0 +1,79 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include "displayaudiotracksview.h"
+
+cDisplayAudiotracksView::cDisplayAudiotracksView(int numTracks, cTemplateView *tmplView) : cView(tmplView) {
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+
+    this->numTracks = numTracks;
+
+    cTemplateViewList *tmplMenuItems = tmplView->GetViewList(vlMenuItem);
+    listView = NULL;
+    if (tmplMenuItems) {
+        listView = new cDisplayMenuListView(tmplMenuItems, numTracks);
+    }
+}
+
+cDisplayAudiotracksView::~cDisplayAudiotracksView() {
+    if (listView)
+        delete listView;
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayAudiotracksView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+void cDisplayAudiotracksView::DrawBackground(void) {
+    if (!ViewElementImplemented(veBackground)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("numtracks", numTracks));
+
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+
+void cDisplayAudiotracksView::DrawHeader(const char *title, int audioChannel) {
+    if (!ViewElementImplemented(veHeader)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("numtracks", numTracks));
+    if (audioChannel < 0) {
+        intTokens.insert(pair<string,int>("isac3", true));
+        intTokens.insert(pair<string,int>("isstereo", false));
+    } else {
+        intTokens.insert(pair<string,int>("isac3", false));
+        intTokens.insert(pair<string,int>("isstereo", true));
+    }
+    stringTokens.insert(pair<string,string>("title", title));
+
+    ClearViewElement(veHeader);
+    DrawViewElement(veHeader, &stringTokens, &intTokens);
+}
+
+void cDisplayAudiotracksView::RenderMenuItems(void) {
+    if (listView)
+        listView->Render();
+}
+
+void cDisplayAudiotracksView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+    cView::Action();
+}
diff --git a/views/displayaudiotracksview.h b/views/displayaudiotracksview.h
new file mode 100644
index 0000000..3414d66
--- /dev/null
+++ b/views/displayaudiotracksview.h
@@ -0,0 +1,24 @@
+#ifndef __DISPLAYAUDIOTRACKSVIEW_H
+#define __DISPLAYAUDIOTRACKSVIEW_H
+
+#include "../libtemplate/template.h"
+#include "displaymenulistview.h"
+
+class cDisplayAudiotracksView : public cView {
+protected:
+    int numTracks;
+    cDisplayMenuListView *listView;
+    virtual void Action(void);
+public:
+    cDisplayAudiotracksView(int numTracks, cTemplateView *tmplView);
+    virtual ~cDisplayAudiotracksView();
+    bool createOsd(void);
+    void DrawBackground(void);
+    void DrawHeader(const char *title, int audioChannel);
+    cDisplayMenuListView *GetListView(void) { return listView; };
+    void DoFadeIn(void) { Start(); };
+    void Flush(void) { DoFlush(); };
+    void RenderMenuItems(void);
+};
+
+#endif //__DISPLAYAUDIOTRACKSVIEW_H
diff --git a/views/displaychannelview.c b/views/displaychannelview.c
new file mode 100644
index 0000000..6348f7d
--- /dev/null
+++ b/views/displaychannelview.c
@@ -0,0 +1,564 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include "../services/scraper2vdr.h"
+#include "displaychannelview.h"
+#include "../libcore/timers.h"
+#include "../libcore/helpers.h"
+
+cDisplayChannelView::cDisplayChannelView(cTemplateView *tmplView) : cView(tmplView) {
+    lastScreenWidth = 0;
+    lastScreenHeight = 0;
+    lastSignalDisplay = 0;
+    lastSignalStrength = 0;
+    lastSignalQuality = 0;
+    lastNumAudioTracks = 0;
+    lastAudioChannel = -1;
+    lastTracDesc = "";
+    lastTrackLang = "";
+    InitDevices();
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayChannelView::~cDisplayChannelView() {
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayChannelView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+void cDisplayChannelView::DrawBackground(void) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::DrawChannel(cString &number, cString &name, cString &id, bool switching) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("channelname", *name));
+    stringTokens.insert(pair<string,string>("channelnumber", *number));
+    stringTokens.insert(pair<string,string>("channelid", *id));
+
+    intTokens.insert(pair<string, int>("switching", switching));
+    bool logoExisis = imgCache->LogoExists(*id);
+    intTokens.insert(pair<string, int>("channellogoexists", logoExisis));
+
+    DrawViewElement(veChannelInfo, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearChannel(void) {
+    ClearViewElement(veChannelInfo);
+}
+
+void cDisplayChannelView::DrawDate(void) {
+    if (!ViewElementImplemented(veDateTime)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    if (!SetDate(stringTokens, intTokens)) {
+        return;
+    }
+
+    ClearViewElement(veDateTime);
+    DrawViewElement(veDateTime, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::DrawTime(void) {
+    if (!ViewElementImplemented(veTime)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    if (!SetTime(stringTokens, intTokens)) {
+        return;
+    }    
+    ClearViewElement(veTime);
+    DrawViewElement(veTime, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::DrawProgressBar(cString &start, cString &stop, int Current, int Total) {
+    if (!ViewElementImplemented(veProgressBar)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string, string>("start", *start));
+    stringTokens.insert(pair<string, string>("stop", *stop));
+
+    intTokens.insert(pair<string, int>("duration", Total));
+    intTokens.insert(pair<string, int>("elapsed", Current));
+    intTokens.insert(pair<string, int>("remaining", Total - Current));
+
+    ClearProgressBar();
+    DrawViewElement(veProgressBar, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearProgressBar(void) {
+    ClearViewElement(veProgressBar);
+}
+
+void cDisplayChannelView::DrawProgressBarBack(void) {
+    DrawViewElement(veProgressBarBack);
+}
+
+void cDisplayChannelView::ClearProgressBarBack(void) {
+    ClearViewElement(veProgressBarBack);
+}
+
+void cDisplayChannelView::DrawEPGInfo(const cEvent *present, const cEvent *next, bool presentRecording, bool nextRecording) {   
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    if (present) {
+        stringTokens.insert(pair<string,string>("currenttitle", (present->Title())?present->Title():""));
+        stringTokens.insert(pair<string,string>("currentsubtitle", (present->ShortText())?present->ShortText():""));
+        stringTokens.insert(pair<string,string>("currentstart", *present->GetTimeString()));
+        stringTokens.insert(pair<string,string>("currentstop", *present->GetEndTimeString()));
+        
+        intTokens.insert(pair<string,int>("currentduration", present->Duration() / 60));
+        intTokens.insert(pair<string,int>("currentdurationhours", present->Duration() / 3600));
+        stringTokens.insert(pair<string,string>("currentdurationminutes", *cString::sprintf("%.2d", (present->Duration() / 60)%60)));
+        intTokens.insert(pair<string,int>("currentelapsed", (int)round((time(NULL) - present->StartTime())/60)));
+        intTokens.insert(pair<string,int>("currentremaining", (int)round((present->EndTime() - time(NULL))/60)));
+        intTokens.insert(pair<string,int>("currentrecording", presentRecording ? 1 : 0));
+        intTokens.insert(pair<string,int>("hasVPS", (bool)present->Vps()));
+    } else {
+        stringTokens.insert(pair<string,string>("currenttitle", ""));
+        stringTokens.insert(pair<string,string>("currentsubtitle", ""));
+        stringTokens.insert(pair<string,string>("currentstart", ""));
+        stringTokens.insert(pair<string,string>("currentstop", ""));
+        
+        intTokens.insert(pair<string,int>("currentduration", 0));
+        intTokens.insert(pair<string,int>("currentdurationhours", 0));
+        stringTokens.insert(pair<string,string>("currentdurationminutes", ""));
+        intTokens.insert(pair<string,int>("currentelapsed", 0));
+        intTokens.insert(pair<string,int>("currentremaining", 0));
+        intTokens.insert(pair<string,int>("currentrecording", 0));
+        intTokens.insert(pair<string,int>("hasVPS", 0));
+    }
+
+    if (next) {
+        stringTokens.insert(pair<string,string>("nexttitle", (next->Title())?next->Title():""));
+        stringTokens.insert(pair<string,string>("nextsubtitle", (next->ShortText())?next->ShortText():""));
+        stringTokens.insert(pair<string,string>("nextstart", *next->GetTimeString()));
+        stringTokens.insert(pair<string,string>("nextstop", *next->GetEndTimeString()));
+
+        intTokens.insert(pair<string,int>("nextduration", next->Duration() / 60));
+        intTokens.insert(pair<string,int>("nextdurationhours", next->Duration() / 3600));
+        stringTokens.insert(pair<string,string>("nextdurationminutes", *cString::sprintf("%.2d", (next->Duration() / 60)%60)));
+        intTokens.insert(pair<string,int>("nextrecording", nextRecording ? 1 : 0));
+    } else {
+        stringTokens.insert(pair<string,string>("nexttitle", ""));
+        stringTokens.insert(pair<string,string>("nextsubtitle", ""));
+        stringTokens.insert(pair<string,string>("nextstart", ""));
+        stringTokens.insert(pair<string,string>("nextstop", ""));
+
+        intTokens.insert(pair<string,int>("nextduration", 0));
+        intTokens.insert(pair<string,int>("nextdurationhours", 0));
+        stringTokens.insert(pair<string,string>("nextdurationminutes", ""));
+        intTokens.insert(pair<string,int>("nextrecording", 0));
+    }
+    DrawViewElement(veEpgInfo, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearEPGInfo(void) {
+    ClearViewElement(veEpgInfo);
+}
+
+void cDisplayChannelView::DrawStatusIcons(const cChannel *Channel) {
+    if (!ViewElementImplemented(veStatusInfo)) {
+        return;
+    }
+
+    map < string, int > intTokens;
+    map < string, string > stringTokens;
+
+    bool isRadio = !Channel->Vpid() && Channel->Apid(0);
+    bool hasVT = Channel->Vpid() && Channel->Tpid();
+    bool isStereo = Channel->Apid(0);
+    bool isDolby = Channel->Dpid(0);
+    bool isEncrypted = Channel->Ca();
+    bool isRecording = cRecordControls::Active();
+    cGlobalSortedTimers SortedTimers;// local and remote timers
+    for (int i = 0; i < SortedTimers.Size() && !isRecording; i++)
+        if (const cTimer *Timer = SortedTimers[i])
+            if (Timer->Recording()) 
+                isRecording = true;
+
+    intTokens.insert(pair<string,int>("isRadio", isRadio));
+    intTokens.insert(pair<string,int>("hasVT", hasVT));
+    intTokens.insert(pair<string,int>("isStereo", isStereo));
+    intTokens.insert(pair<string,int>("isDolby", isDolby));
+    intTokens.insert(pair<string,int>("isEncrypted", isEncrypted));
+    intTokens.insert(pair<string,int>("isRecording", isRecording));
+    intTokens.insert(pair<string,int>("newmails", CheckNewMails()));
+
+    DrawViewElement(veStatusInfo, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearStatusIcons(void) {
+    ClearViewElement(veStatusInfo);
+}
+
+void cDisplayChannelView::DrawAudioInfo(void) {
+    if (!ViewElementImplemented(veAudioInfo)) {
+        return;
+    }
+
+    int numAudioTracks = 0;
+    int audioChannel = -1;
+    string trackDescription = "";
+    string trackLanguage = "";
+
+    cDevice *device = cDevice::PrimaryDevice();
+    if (device) {
+        numAudioTracks = device->NumAudioTracks();
+        audioChannel = device->GetAudioChannel();
+        if (numAudioTracks > 0) {
+            const tTrackId *track = device->GetTrack(device->GetCurrentAudioTrack());
+            if (track) {
+                trackDescription = track->description ? track->description : "";
+                trackLanguage = track->language ? track->language : "";
+            }
+        }
+    }
+    if (lastNumAudioTracks != numAudioTracks || lastAudioChannel != audioChannel || lastTracDesc.compare(trackDescription) || lastTrackLang.compare(trackLanguage)) {
+        lastNumAudioTracks = numAudioTracks;
+        lastAudioChannel = audioChannel;
+        lastTracDesc = trackDescription;
+        lastTrackLang = trackLanguage;
+
+        map < string, int > intTokens;
+        map < string, string > stringTokens;
+        intTokens.insert(pair<string,int>("numaudiotracks", numAudioTracks));
+        intTokens.insert(pair<string,int>("audiochannel", audioChannel));
+        stringTokens.insert(pair<string,string>("trackdesc", trackDescription));
+        stringTokens.insert(pair<string,string>("tracklang", trackLanguage));
+        
+        ClearAudioInfo();
+        DrawViewElement(veAudioInfo, &stringTokens, &intTokens);
+    }
+}
+
+void cDisplayChannelView::ClearAudioInfo(void) {
+    ClearViewElement(veAudioInfo);
+}
+
+void cDisplayChannelView::DrawScreenResolution(void) {
+    if (!ViewElementImplemented(veScreenResolution)) {
+        return;
+    }
+
+    int screenWidth = 0;
+    int screenHeight = 0;
+    double aspect = 0;
+
+    cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, aspect);
+
+    if ((lastScreenWidth == screenWidth) && (lastScreenHeight == screenHeight))
+        return;
+
+    if ((screenWidth == 0) && (screenHeight == 0))
+        return;
+
+    lastScreenWidth = screenWidth;
+    lastScreenHeight = screenHeight;
+
+    bool isHD = false;
+    string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD);
+
+    bool isWideScreen = false;
+    string aspectName = GetScreenAspectString(aspect, &isWideScreen);
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("screenwidth", screenWidth));
+    intTokens.insert(pair<string,int>("screenheight", screenHeight));
+    intTokens.insert(pair<string,int>("isHD", isHD));
+    intTokens.insert(pair<string,int>("isWideScreen", isWideScreen));
+    stringTokens.insert(pair<string,string>("resolution", resName));
+    stringTokens.insert(pair<string,string>("aspect", aspectName));
+
+    ClearViewElement(veScreenResolution);
+    DrawViewElement(veScreenResolution, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearScreenResolution(void) {
+    ClearViewElement(veScreenResolution);
+    lastScreenWidth = 0;
+    lastScreenHeight = 0;
+}
+
+void cDisplayChannelView::DrawScraperContent(const cEvent *event) {
+    if (!event) {
+        return;
+    }
+
+    if (!ViewElementImplemented(veScraperContent)) {
+        return;
+    }
+
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (!pScraper) {
+        return;
+    }
+
+    ScraperGetPosterBanner call;
+    call.event = event;
+    if (pScraper->Service("GetPosterBanner", &call)) {
+        int mediaWidth = 0;
+        int mediaHeight = 0;
+        string mediaPath = "";
+        bool isBanner = false;
+        int posterWidth = 0;
+        int posterHeight = 0;
+        string posterPath = "";
+        bool hasPoster = false;
+        int bannerWidth = 0;
+        int bannerHeight = 0;
+        string bannerPath = "";
+        bool hasBanner = false;
+
+        if ((call.type == tSeries) && call.banner.path.size() > 0) {
+            mediaWidth = call.banner.width;
+            mediaHeight = call.banner.height;
+            mediaPath = call.banner.path;
+            isBanner = true;
+            bannerWidth = mediaWidth;
+            bannerHeight = mediaHeight;
+            bannerPath = mediaPath;
+            hasBanner = true;
+
+            ScraperGetPoster callPoster;
+            callPoster.event = event;
+            callPoster.recording = NULL;
+            if (pScraper->Service("GetPoster", &callPoster)) {
+                posterWidth = callPoster.poster.width;
+                posterHeight = callPoster.poster.height;
+                posterPath = callPoster.poster.path;
+                hasPoster = true;
+            }
+        } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) {
+            mediaWidth = call.poster.width;
+            mediaHeight = call.poster.height;
+            mediaPath = call.poster.path;
+            posterWidth = call.poster.width;
+            posterHeight = call.poster.height;
+            posterPath = call.poster.path;
+            hasPoster = true;
+        } else
+            return;
+
+        map < string, int > intTokens;
+        map < string, string > stringTokens;
+        intTokens.insert(pair<string,int>("mediawidth", mediaWidth));
+        intTokens.insert(pair<string,int>("mediaheight", mediaHeight));
+        intTokens.insert(pair<string,int>("isbanner", isBanner));
+        stringTokens.insert(pair<string,string>("mediapath", mediaPath));
+        intTokens.insert(pair<string,int>("posterwidth", posterWidth));
+        intTokens.insert(pair<string,int>("posterheight", posterHeight));
+        stringTokens.insert(pair<string,string>("posterpath", posterPath));
+        intTokens.insert(pair<string,int>("hasposter", hasPoster));
+        intTokens.insert(pair<string,int>("bannerwidth", bannerWidth));
+        intTokens.insert(pair<string,int>("bannerheight", bannerHeight));
+        stringTokens.insert(pair<string,string>("bannerpath", bannerPath));
+        intTokens.insert(pair<string,int>("hasbanner", hasBanner));
+        ClearViewElement(veScraperContent);
+        DrawViewElement(veScraperContent, &stringTokens, &intTokens);
+    }
+}
+
+void cDisplayChannelView::ClearScraperContent(void) {
+    ClearViewElement(veScraperContent);
+}
+
+void cDisplayChannelView::DrawSignal(void) {
+    if (!ViewElementImplemented(veSignalQuality)) {
+        return;
+    }
+    time_t Now = time(NULL);
+    if (Now != lastSignalDisplay) {
+#ifdef DOPROFILE
+        cStopWatch watch("DrawSignal");
+#endif
+        int SignalStrength = cDevice::ActualDevice()->SignalStrength();
+#ifdef DOPROFILE
+        watch.Report("SignalStrength");
+#endif
+        int SignalQuality = cDevice::ActualDevice()->SignalQuality();
+#ifdef DOPROFILE
+        watch.Report("SignalQuality");
+        watch.Stop("DrawSignal");
+#endif
+        if (SignalStrength < 0) SignalStrength = 0;
+        if (SignalQuality < 0) SignalQuality = 0;
+        if ((SignalStrength == 0)&&(SignalQuality==0))
+            return;
+        if ((lastSignalStrength != SignalStrength) || (lastSignalQuality != SignalQuality)) {
+            map < string, int > intTokens;
+            map < string, string > stringTokens;
+            intTokens.insert(pair<string,int>("signalstrength", SignalStrength));
+            intTokens.insert(pair<string,int>("signalquality", SignalQuality));
+            ClearViewElement(veSignalQuality);
+            DrawViewElement(veSignalQuality, &stringTokens, &intTokens);
+        }
+        lastSignalStrength = SignalStrength;
+        lastSignalQuality = SignalQuality;
+        lastSignalDisplay = Now;
+    }
+}
+
+void cDisplayChannelView::DrawSignalBackground(void) {
+    if (!ViewElementImplemented(veSignalQualityBack)) {
+        return;
+    }
+    DrawViewElement(veSignalQualityBack);
+}
+
+
+void cDisplayChannelView::ClearSignal(void) {
+    ClearViewElement(veSignalQuality);
+}
+
+void cDisplayChannelView::ClearSignalBackground(void) {
+    ClearViewElement(veSignalQualityBack);
+}
+
+void cDisplayChannelView::DrawDevices(bool initial) {
+    if (!ViewElementImplemented(veDevices)) {
+        return;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > deviceLoopTokens;
+    vector< map< string, string > > devices;
+
+    bool changed = SetDevices(initial, &intTokens, &devices);
+    if (!changed)
+        return;
+
+    deviceLoopTokens.insert(pair< string, vector< map< string, string > > >("devices", devices));
+    
+    ClearViewElement(veDevices);
+    DrawViewElement(veDevices, &stringTokens, &intTokens, &deviceLoopTokens);
+}
+
+void cDisplayChannelView::ClearDevices(void) {
+    ClearViewElement(veDevices);
+}
+
+void cDisplayChannelView::DrawChannelGroups(const cChannel *Channel, cString ChannelName) {
+    if (!ViewElementImplemented(veChannelGroup)) {
+        return;
+    }
+
+    bool separatorExists = imgCache->SeparatorLogoExists(*ChannelName);
+    string separatorPath = separatorExists ? *ChannelName : "";
+
+    std::string prevChannelSep = GetChannelSep(Channel, true);
+    std::string nextChannelSep = GetChannelSep(Channel, false);
+    bool prevAvailable = (prevChannelSep.size() > 0)?true:false;
+    bool nextAvailable = (nextChannelSep.size() > 0)?true:false;
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("sepexists", separatorExists));
+    intTokens.insert(pair<string,int>("prevAvailable", prevAvailable));
+    intTokens.insert(pair<string,int>("nextAvailable", nextAvailable));
+    stringTokens.insert(pair<string,string>("group", *ChannelName));
+    stringTokens.insert(pair<string,string>("nextgroup", nextChannelSep));
+    stringTokens.insert(pair<string,string>("prevgroup", prevChannelSep));
+    stringTokens.insert(pair<string,string>("seppath", separatorPath));
+
+    ClearViewElement(veChannelGroup);
+    DrawViewElement(veChannelGroup, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::ClearChannelGroups(void) {
+    ClearViewElement(veChannelGroup);
+}
+
+string cDisplayChannelView::GetChannelSep(const cChannel *channel, bool prev) {
+    std::string sepName = "";
+    const cChannel *sep = prev ? Channels.Prev(channel) :
+                                 Channels.Next(channel);
+    for (; sep; (prev)?(sep = Channels.Prev(sep)):(sep = Channels.Next(sep))) {
+        if (sep->GroupSep()) {
+            sepName = sep->Name();
+            break;
+        }
+    }
+    return sepName;
+}
+
+void cDisplayChannelView::DisplayMessage(eMessageType Type, const char *Text) {
+    if (!Text) {
+        ClearViewElement(veMessage);
+        return;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    stringTokens.insert(pair<string,string>("text", Text));
+
+    intTokens.insert(pair<string,int>("status",  (Type == mtStatus)  ? true : false));
+    intTokens.insert(pair<string,int>("info",    (Type == mtInfo)    ? true : false));
+    intTokens.insert(pair<string,int>("warning", (Type == mtWarning) ? true : false));
+    intTokens.insert(pair<string,int>("error",   (Type == mtError)   ? true : false));
+    
+    ClearViewElement(veMessage);
+    DrawViewElement(veMessage, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::DrawCustomTokens(void) {
+    if (!ViewElementImplemented(veCustomTokens)) {
+        return;
+    }
+    if (!tmplView)
+        return;
+    map < string, string > stringTokens = tmplView->GetCustomStringTokens();
+    map < string, int > intTokens = tmplView->GetCustomIntTokens();
+    DrawViewElement(veCustomTokens, &stringTokens, &intTokens);
+}
+
+void cDisplayChannelView::DrawCurrentWeather(void) {
+    if (!ViewElementImplemented(veCurrentWeather)) {
+        return;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    if (!SetCurrentWeatherTokens(stringTokens, intTokens)){
+        ClearViewElement(veCurrentWeather);
+        return;
+    }
+    
+    ClearViewElement(veCurrentWeather);
+    DrawViewElement(veCurrentWeather, &stringTokens, &intTokens);
+}
+
+
+void cDisplayChannelView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+    cView::Action();
+}
diff --git a/views/displaychannelview.h b/views/displaychannelview.h
new file mode 100644
index 0000000..5990232
--- /dev/null
+++ b/views/displaychannelview.h
@@ -0,0 +1,58 @@
+#ifndef __DISPLAYCHANNELVIEW_H
+#define __DISPLAYCHANNELVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "viewhelpers.h"
+
+class cDisplayChannelView : public cView, public cViewHelpers {
+private:
+    int lastScreenWidth;
+    int lastScreenHeight;
+    int lastSignalDisplay;
+    int lastSignalStrength;
+    int lastSignalQuality;
+    int lastNumAudioTracks;
+    int lastAudioChannel;
+    string lastTracDesc;
+    string lastTrackLang;
+    string GetChannelSep(const cChannel *channel, bool prev);
+    virtual void Action(void);
+public:
+    cDisplayChannelView(cTemplateView *tmplView);
+    virtual ~cDisplayChannelView();
+    bool createOsd(void);
+    void DrawBackground(void);
+    void DrawChannel(cString &number, cString &name, cString &id, bool switching);
+    void ClearChannel(void);
+    void DrawDate(void);
+    void DrawTime(void);
+    void DrawProgressBar(cString &start, cString &stop, int Current, int Total);
+    void ClearProgressBar(void);
+    void DrawProgressBarBack(void);
+    void ClearProgressBarBack(void);
+    void DrawEPGInfo(const cEvent *present, const cEvent *next, bool presentRecording, bool nextRecording);
+    void ClearEPGInfo(void);
+    void DrawStatusIcons(const cChannel *Channel);
+    void ClearStatusIcons(void);
+    void DrawAudioInfo(void);
+    void ClearAudioInfo(void);
+    void DrawScreenResolution(void);
+    void ClearScreenResolution(void);
+    void DrawScraperContent(const cEvent *event);
+    void ClearScraperContent(void);
+    void DrawSignal(void);
+    void DrawSignalBackground(void);
+    void ClearSignal(void);
+    void ClearSignalBackground(void);
+    void DrawDevices(bool initial);
+    void ClearDevices(void);
+    void DrawChannelGroups(const cChannel *Channel, cString ChannelName);
+    void ClearChannelGroups(void);
+    void DisplayMessage(eMessageType Type, const char *Text);
+    void DrawCustomTokens(void);
+    void DrawCurrentWeather(void);
+    void DoStart(void) { Start(); };
+    void Flush(void) { DoFlush(); };
+};
+#endif //__DISPLAYCHANNELVIEW_H
diff --git a/views/displaymenudetailview.c b/views/displaymenudetailview.c
new file mode 100644
index 0000000..80caff7
--- /dev/null
+++ b/views/displaymenudetailview.c
@@ -0,0 +1,871 @@
+#include "displaymenudetailview.h"
+#include "../libcore/helpers.h"
+#include "../services/scraper2vdr.h"
+#include "../services/epgsearch.h"
+
+cDisplayMenuDetailView::cDisplayMenuDetailView(cTemplateView *tmplDetailView) : cView(tmplDetailView) {
+    event = NULL;
+    recording = NULL;
+    text = NULL;
+    detailViewInit = true;
+    isPluginTextView = false;
+    currentTmplTab = NULL;
+    tabView = NULL;
+}
+
+cDisplayMenuDetailView::~cDisplayMenuDetailView() {
+    CancelSave();
+    if (tabView)
+        delete tabView;
+}
+
+void cDisplayMenuDetailView::SetPluginTokens(map<string,string> *plugStringTokens, map<string,int> *plugIntTokens, map<string,vector<map<string,string> > > *plugLoopTokens) {
+    for (map<string,string>::iterator it = plugStringTokens->begin(); it != plugStringTokens->end(); it++) {
+        stringTokens.insert(pair<string,string>(it->first, it->second));
+    }
+
+    for (map<string,int>::iterator it = plugIntTokens->begin(); it != plugIntTokens->end(); it++) {
+        intTokens.insert(pair<string,int>(it->first, it->second));
+    }
+
+    for(map<string,vector<map<string,string> > >::iterator it = plugLoopTokens->begin(); it != plugLoopTokens->end(); it++) {
+        loopTokens.insert(pair<string,vector<map<string,string> > >(it->first, it->second));
+    }
+    isPluginTextView = true;
+}
+
+void cDisplayMenuDetailView::Clear(void) {
+    ClearViewElement(veDetailHeader);
+    ClearViewElement(veScrollbar);
+    ClearViewElement(veTabLabels);
+}
+
+void cDisplayMenuDetailView::Render(void) {
+    if (detailViewInit) {
+        DrawHeader();
+        DoFlush();
+        SetTokens();
+        InitTabs();
+        currentTmplTab = *atIt;
+        detailViewInit = false;
+    }
+    if (!tabView) {
+        tabView = new cDisplayMenuTabView(currentTmplTab);
+        tabView->SetTokens(&intTokens, &stringTokens, &loopTokens);
+        tabView->CreateTab();
+        tabView->Start();
+    }
+    DrawScrollbar();
+    DrawTabLabels();
+}
+
+void cDisplayMenuDetailView::KeyLeft(void) {
+    if (activeTabs.size() > 1) {
+        currentTmplTab = GetPrevTab();
+        delete tabView;
+        tabView = NULL;
+        Render();
+        DoFlush();
+    } else {
+        bool scrolled = tabView->KeyLeft();
+        if (scrolled) {
+            DrawScrollbar();
+            DoFlush();
+        }
+    }
+}
+
+void cDisplayMenuDetailView::KeyRight(void) {
+    if (activeTabs.size() > 1) {
+        currentTmplTab = GetNextTab();
+        delete tabView;
+        tabView = NULL;
+        Render();
+        DoFlush();
+    } else {
+        bool scrolled = tabView->KeyRight();
+        if (scrolled) {
+            DrawScrollbar();
+            DoFlush();
+        }
+    }
+}
+
+void cDisplayMenuDetailView::KeyUp(void) {
+    if (!tabView)
+        return;
+    bool scrolled = tabView->KeyUp();
+    if (scrolled) {
+        DrawScrollbar();
+        DoFlush();
+    }
+}
+
+void cDisplayMenuDetailView::KeyDown(void) {
+    if (!tabView)
+        return;
+    bool scrolled = tabView->KeyDown();
+    if (scrolled) {
+        DrawScrollbar();
+        DoFlush();
+    }
+}
+
+
+void cDisplayMenuDetailView::SetTokens(void) {
+    if (event) {
+        stringTokens.insert(pair<string,string>("title", event->Title() ? event->Title() : ""));
+        stringTokens.insert(pair<string,string>("shorttext", event->ShortText() ? event->ShortText() : ""));
+        stringTokens.insert(pair<string,string>("description", event->Description() ? event->Description() : ""));
+        stringTokens.insert(pair<string,string>("start", *(event->GetTimeString())));
+        stringTokens.insert(pair<string,string>("stop", *(event->GetEndTimeString())));
+        time_t startTime = event->StartTime();
+        stringTokens.insert(pair<string,string>("day", *WeekDayName(startTime)));
+        stringTokens.insert(pair<string,string>("date", *ShortDateString(startTime)));
+        struct tm * sStartTime = localtime(&startTime);
+        intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+        intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+        intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+        string channelID = *(event->ChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+
+        bool isRunning = false;
+        time_t now = time(NULL);
+        if ((now >= event->StartTime()) && (now <= event->EndTime()))
+            isRunning = true;
+        intTokens.insert(pair<string,int>("running", isRunning));
+        if (isRunning) {
+            intTokens.insert(pair<string,int>("elapsed", (now - event->StartTime())/60));
+        } else {
+            intTokens.insert(pair<string,int>("elapsed", 0));
+        }
+        intTokens.insert(pair<string,int>("duration", event->Duration() / 60));    
+        intTokens.insert(pair<string,int>("durationhours", event->Duration() / 3600));
+        stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", (event->Duration() / 60)%60)));
+        if (event->Vps())
+            stringTokens.insert(pair<string,string>("vps", *event->GetVpsString()));
+        else
+            stringTokens.insert(pair<string,string>("vps", ""));
+
+        vector< map< string, string > > reruns;
+        bool hasReruns = LoadReruns(&reruns);
+        loopTokens.insert(pair<string, vector< map< string, string > > >("reruns", reruns));
+
+        intTokens.insert(pair<string,int>("hasreruns", hasReruns));
+
+        SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens);
+        SetEpgPictures(event->EventID());
+
+    } else if (recording) {
+        string name = recording->Name() ? recording->Name() : "";
+        stringTokens.insert(pair<string,string>("name", name));
+        intTokens.insert(pair<string,int>("cutted", recording->IsEdited()));
+
+        const cRecordingInfo *info = recording->Info();
+        if (info) {
+            stringTokens.insert(pair<string,string>("epgname", info->Title() ? info->Title() : name));
+            stringTokens.insert(pair<string,string>("shorttext", info->ShortText() ? info->ShortText() : ""));
+            stringTokens.insert(pair<string,string>("description", info->Description() ? info->Description() : ""));
+            const cEvent *event = info->GetEvent();
+            if (event) {
+                string recDate = *(event->GetDateString());
+                string recTime = *(event->GetTimeString());
+                if (recDate.find("1970") != string::npos) {
+                    time_t start = recording->Start();
+                    recDate = *DateString(start);
+                    recTime = *TimeString(start);
+                }
+                stringTokens.insert(pair<string,string>("date", recDate.c_str()));
+                stringTokens.insert(pair<string,string>("time", recTime.c_str()));
+                time_t startTime = event->StartTime();
+                struct tm * sStartTime = localtime(&startTime);
+                intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+                intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+                intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+                int duration = event->Duration() / 60;
+                int recDuration = recording->LengthInSeconds();
+                recDuration = (recDuration>0)?(recDuration / 60):0;
+                intTokens.insert(pair<string,int>("duration", recDuration));
+                intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+                stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+                intTokens.insert(pair<string,int>("durationevent", duration));
+                intTokens.insert(pair<string,int>("durationeventhours", duration / 60));
+                stringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
+            }
+        } else {
+            stringTokens.insert(pair<string,string>("epgname", ""));
+            stringTokens.insert(pair<string,string>("shorttext", ""));
+            stringTokens.insert(pair<string,string>("description", ""));            
+            int recDuration = recording->LengthInSeconds();
+            recDuration = (recDuration>0)?(recDuration / 60):0;
+            stringTokens.insert(pair<string,string>("date", ""));
+            stringTokens.insert(pair<string,string>("time", ""));
+            intTokens.insert(pair<string,int>("duration", recDuration));
+            intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+            stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+            intTokens.insert(pair<string,int>("durationevent", 0));
+            intTokens.insert(pair<string,int>("durationeventhours", 0));
+            stringTokens.insert(pair<string,string>("durationeventminutes", ""));
+        }
+        LoadRecordingInformation();
+        SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens);
+        SetRecordingImages(recording->FileName());
+    } else if (text) {
+        stringTokens.insert(pair<string,string>("text", text));
+    } else {
+        intTokens.insert(pair<string,int>("running", false));
+        intTokens.insert(pair<string,int>("hasreruns", false));
+    }
+}
+
+void cDisplayMenuDetailView::InitTabs(void) {
+    tmplView->InitViewTabIterator();
+    cTemplateViewTab *tmplTab = NULL;
+    while(tmplTab = tmplView->GetNextViewTab()) {
+        tmplTab->ParseDynamicParameters(&intTokens, true);
+        tmplTab->ClearDynamicFunctionParameters();
+        tmplTab->ParseDynamicFunctionParameters(&stringTokens, &intTokens);
+        if (tmplTab->DoExecute()) {
+            activeTabs.push_back(tmplTab);
+        }
+    }
+    atIt = activeTabs.begin();
+}
+
+bool cDisplayMenuDetailView::LoadReruns(vector< map< string, string > > *reruns) {
+    if (!event)
+        return false;
+    
+    cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
+    if (!epgSearchPlugin)
+        return false;
+
+    if (isempty(event->Title()))
+        return false;
+
+    int maxNumReruns = config.rerunAmount;
+    int rerunDistance = config.rerunDistance * 3600;
+    int rerunNaxChannel = config.rerunMaxChannel;
+
+    Epgsearch_searchresults_v1_0 data;
+    string strQuery = (event->Title()) ? event->Title() : "";
+    data.query = (char *)strQuery.c_str();
+    data.mode = 0;
+    data.channelNr = 0;
+    data.useTitle = true;
+    data.useSubTitle = true;
+    data.useDescription = false;
+
+    bool foundRerun = false;
+    if (epgSearchPlugin->Service("Epgsearch-searchresults-v1.0", &data)) {
+        cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>* list = data.pResultList;
+        if (list && (list->Count() > 1)) {
+            foundRerun = true;
+            int i = 0;
+            for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r && i < maxNumReruns; r = list->Next(r)) {
+                time_t eventStart = event->StartTime();
+                time_t rerunStart = r->event->StartTime();
+                cChannel *channel = Channels.GetByChannelID(r->event->ChannelID(), true, true);
+                //check for identical event
+                if ((event->ChannelID() == r->event->ChannelID()) && (eventStart == rerunStart))
+                    continue;
+                //check for timely distance
+                if (rerunDistance > 0) {
+                    if (rerunStart - eventStart < rerunDistance) {
+                        continue;
+                    }
+                }
+                //check for maxchannel
+                if (rerunNaxChannel > 0) {
+                    if (channel && channel->Number() > rerunNaxChannel) {
+                        continue;
+                    }
+                }
+                i++;
+                map< string, string > rerun;
+                rerun.insert(pair<string, string>("reruns[title]", r->event->Title() ? r->event->Title() : ""));
+                rerun.insert(pair<string, string>("reruns[shorttext]", r->event->ShortText() ? r->event->ShortText() : ""));
+                rerun.insert(pair<string, string>("reruns[start]", *(r->event->GetTimeString())));
+                rerun.insert(pair<string, string>("reruns[start]", *(r->event->GetTimeString())));
+                rerun.insert(pair<string, string>("reruns[stop]", *(r->event->GetEndTimeString())));
+                rerun.insert(pair<string, string>("reruns[date]", *ShortDateString(r->event->StartTime())));
+                rerun.insert(pair<string, string>("reruns[day]", *WeekDayName(r->event->StartTime())));
+                string channelID = *(r->event->ChannelID().ToString());
+                rerun.insert(pair<string, string>("reruns[channelid]", channelID));
+                bool logoExists = imgCache->LogoExists(channelID);
+                rerun.insert(pair<string, string>("reruns[channellogoexists]", logoExists ? "1" : "0"));
+
+                if (channel) {
+                    stringstream channelNumber;
+                    channelNumber << channel->Number();
+                    rerun.insert(pair<string, string>("reruns[channelname]", channel->ShortName(true)));
+                    rerun.insert(pair<string, string>("reruns[channelnumber]", channelNumber.str()));
+                } else {
+                    rerun.insert(pair<string, string>("reruns[channelname]", ""));
+                    rerun.insert(pair<string, string>("reruns[channelnumber]", ""));                    
+                }
+                reruns->push_back(rerun);
+            }
+            delete list;
+        }
+    }
+    return foundRerun;
+}
+
+void cDisplayMenuDetailView::LoadRecordingInformation(void) {
+    const cRecordingInfo *Info = recording->Info();
+    if (!Info)
+        return;
+    unsigned long long nRecSize = -1;
+    unsigned long long nFileSize[1000];
+    nFileSize[0] = 0;
+    int i = 0;
+    struct stat filebuf;
+    cString filename;
+    int rc = 0;
+    do {
+        if (recording->IsPesRecording())
+            filename = cString::sprintf("%s/%03d.vdr", recording->FileName(), ++i);
+        else
+            filename = cString::sprintf("%s/%05d.ts", recording->FileName(), ++i);
+        rc = stat(filename, &filebuf);
+        if (rc == 0)
+            nFileSize[i] = nFileSize[i-1] + filebuf.st_size;
+        else
+            if (ENOENT != errno) {
+                nRecSize = -1;
+            }
+    } while (i <= 999 && !rc);
+    nRecSize = nFileSize[i-1];
+
+    cMarks marks;
+    bool fHasMarks = marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording()) && marks.Count();
+    cIndexFile *index = new cIndexFile(recording->FileName(), false, recording->IsPesRecording());
+
+    int nCutLength = 0;
+    long nCutInFrame = 0;
+    unsigned long long nRecSizeCut = nRecSize < 0 ? -1 : 0;
+    unsigned long long nCutInOffset = 0;
+
+    if (fHasMarks && index) {
+        uint16_t FileNumber;
+        off_t FileOffset;
+
+        bool fCutIn = true;
+        cMark *mark = marks.First();
+        while (mark) {
+            int pos = mark->Position();
+            index->Get(pos, &FileNumber, &FileOffset); //TODO: will disc spin up?
+            if (fCutIn) {
+                nCutInFrame = pos;
+                fCutIn = false;
+                if (nRecSize >= 0)
+                    nCutInOffset = nFileSize[FileNumber-1] + FileOffset;
+            } else {
+                nCutLength += pos - nCutInFrame;
+                fCutIn = true;
+                if (nRecSize >= 0)
+                    nRecSizeCut += nFileSize[FileNumber-1] + FileOffset - nCutInOffset;
+            }
+            cMark *nextmark = marks.Next(mark);
+            mark = nextmark;
+        }
+        if (!fCutIn) {
+            nCutLength += index->Last() - nCutInFrame;
+            index->Get(index->Last() - 1, &FileNumber, &FileOffset);
+            if (nRecSize >= 0)
+                nRecSizeCut += nFileSize[FileNumber-1] + FileOffset - nCutInOffset;
+        }
+    }
+
+    if (nRecSize < 0) {
+        if ((nRecSize = ReadSizeVdr(recording->FileName())) < 0) {
+            nRecSize = DirSizeMB(recording->FileName());
+        }
+    }
+    if (nRecSize >= 0) {
+        cString strRecSize = "";
+        cString strRecSizeCut = "";
+
+        if (fHasMarks) {
+            if (nRecSize > MEGABYTE(1023)) {
+                strRecSize = cString::sprintf("%.2f GB", (float)nRecSize / MEGABYTE(1024));
+                strRecSizeCut = cString::sprintf("%.2f GB", (float)nRecSizeCut / MEGABYTE(1024));
+            } else {
+                strRecSize = cString::sprintf("%lld MB", nRecSize / MEGABYTE(1));
+                strRecSizeCut = cString::sprintf("%lld MB", nRecSizeCut / MEGABYTE(1));
+            }
+        } else {
+            if (nRecSize > MEGABYTE(1023)) {
+                strRecSize = cString::sprintf("%.2f GB", (float)nRecSize / MEGABYTE(1024));
+                strRecSizeCut = strRecSize;
+            } else {
+                strRecSize = cString::sprintf("%lld MB", nRecSize / MEGABYTE(1));
+                strRecSizeCut = strRecSize;
+            }
+        }
+        stringTokens.insert(pair<string,string>("recordingsize", *strRecSize));
+        stringTokens.insert(pair<string,string>("recordingsizecutted", *strRecSizeCut));
+    } else {
+        stringTokens.insert(pair<string,string>("recordingsize", ""));        
+        stringTokens.insert(pair<string,string>("recordingsizecutted", ""));        
+    }
+
+    cChannel *channel = Channels.GetByChannelID(Info->ChannelID());
+    if (channel) {
+        stringTokens.insert(pair<string,string>("recchannelname", channel->Name()));
+        stringTokens.insert(pair<string,string>("recchannelid", *channel->GetChannelID().ToString()));
+        intTokens.insert(pair<string,int>("recchannelnumber", channel->Number()));
+    } else {
+        stringTokens.insert(pair<string,string>("recchannelname", ""));
+        stringTokens.insert(pair<string,string>("recchannelid", ""));
+        intTokens.insert(pair<string,int>("recchannelnumber", 0));
+    }
+
+    if (index) {
+        int nLastIndex = index->Last();
+        if (nLastIndex) {
+            string strLength = *IndexToHMSF(nLastIndex, false, recording->FramesPerSecond());
+            string strLengthCutted = "";
+            if (fHasMarks) {
+                strLengthCutted = *IndexToHMSF(nCutLength, false, recording->FramesPerSecond());
+            } else {
+                strLengthCutted = strLength;
+            }
+            string strBitrate = *cString::sprintf("%.2f MBit/s", (float)nRecSize / nLastIndex * recording->FramesPerSecond() * 8 / MEGABYTE(1));
+            stringTokens.insert(pair<string,string>("recordinglength", strLength));
+            stringTokens.insert(pair<string,string>("recordinglengthcutted", strLengthCutted));
+            stringTokens.insert(pair<string,string>("recordingbitrate", strBitrate));
+        }
+        delete index;
+    }
+    
+    string recFormat = recording->IsPesRecording() ? "PES" : "TS";
+    stringTokens.insert(pair<string,string>("recordingformat", recFormat));
+    
+    bool searchTimerFound = false;
+    if (Info) {
+        const char *aux = NULL;
+        aux = Info->Aux();
+        if (aux) {
+            string strAux = aux;
+            string auxEpgsearch = StripXmlTag(strAux, "epgsearch");
+            if (!auxEpgsearch.empty()) {
+                string searchTimer = StripXmlTag(auxEpgsearch, "searchtimer");
+                if (!searchTimer.empty()) {
+                    stringTokens.insert(pair<string,string>("searchtimer", searchTimer));
+                    searchTimerFound = true;
+                }
+            }
+        }
+    }
+    if (!searchTimerFound)
+        stringTokens.insert(pair<string,string>("searchtimer", "n.a."));
+}
+
+string cDisplayMenuDetailView::StripXmlTag(string &Line, const char *Tag) {
+        // set the search strings
+        stringstream strStart, strStop;
+        strStart << "<" << Tag << ">";
+        strStop << "</" << Tag << ">";
+        // find the strings
+        string::size_type locStart = Line.find(strStart.str());
+        string::size_type locStop = Line.find(strStop.str());
+        if (locStart == string::npos || locStop == string::npos)
+                return "";
+        // extract relevant text
+        int pos = locStart + strStart.str().size();
+        int len = locStop - pos;
+        return len < 0 ? "" : Line.substr(pos, len);
+}
+
+
+int cDisplayMenuDetailView::ReadSizeVdr(const char *strPath) {
+    int dirSize = -1;
+    char buffer[20];
+    char *strFilename = NULL;
+    if (-1 != asprintf(&strFilename, "%s/size.vdr", strPath)) {
+        struct stat st;
+        if (stat(strFilename, &st) == 0) {
+                int fd = open(strFilename, O_RDONLY);
+            if (fd >= 0) {
+                if (safe_read(fd, &buffer, sizeof(buffer)) >= 0) {
+                    dirSize = atoi(buffer);
+                }
+                close(fd);
+            }
+        }
+        free(strFilename);
+    }
+    return dirSize;
+}
+
+void cDisplayMenuDetailView::SetEpgPictures(int eventId) {
+    for (int i=0; i<3; i++) {
+        stringstream picName;
+        picName << eventId << "_" << i;
+        bool epgPicAvailable = FileExists(*config.epgImagePath, picName.str(), "jpg");
+        stringstream available;
+        stringstream path;
+        available << "epgpic" << i+1 << "avaialble";
+        path << "epgpic" << i+1 << "path";
+        if (epgPicAvailable) {
+            intTokens.insert(pair<string,int>(available.str(), true));
+            stringTokens.insert(pair<string,string>(path.str(), *cString::sprintf("%s%s.jpg", *config.epgImagePath, picName.str().c_str())));
+        } else {
+            intTokens.insert(pair<string,int>(available.str(), false));
+            stringTokens.insert(pair<string,string>(path.str(), ""));            
+        }
+    }
+}
+
+void cDisplayMenuDetailView::SetRecordingImages(const char *recPath) {
+    if (!recPath) {
+        intTokens.insert(pair<string,int>("recimg1avaialble", false));
+        intTokens.insert(pair<string,int>("recimg2avaialble", false));
+        intTokens.insert(pair<string,int>("recimg3avaialble", false));
+        stringTokens.insert(pair<string,string>("recimg1path", ""));
+        stringTokens.insert(pair<string,string>("recimg2path", ""));
+        stringTokens.insert(pair<string,string>("recimg3path", ""));
+        return;
+    }
+
+    string path = recPath;
+    DIR *dirHandle;
+    struct dirent *dirEntry;
+    dirHandle = opendir(recPath);
+    if (!dirHandle) {
+        intTokens.insert(pair<string,int>("recimg1avaialble", false));
+        intTokens.insert(pair<string,int>("recimg2avaialble", false));
+        intTokens.insert(pair<string,int>("recimg3avaialble", false));
+        stringTokens.insert(pair<string,string>("recimg1path", ""));
+        stringTokens.insert(pair<string,string>("recimg2path", ""));
+        stringTokens.insert(pair<string,string>("recimg3path", ""));
+        return;        
+    }
+
+    int picsFound = 0;
+    while ( 0 != (dirEntry = readdir(dirHandle))) {
+        if (endswith(dirEntry->d_name, "jpg")) {
+            string fileName = dirEntry->d_name;
+            stringstream available;
+            available << "recimg" << picsFound+1  << "avaialble";
+            stringstream path;
+            path << "recimg" << picsFound+1 << "path";
+            intTokens.insert(pair<string,int>(available.str(), true));
+            stringTokens.insert(pair<string,string>(path.str(), *cString::sprintf("%s/%s", recPath, fileName.c_str())));
+            picsFound++;
+        }
+        if (picsFound == 3) {
+            break;
+        }
+    }
+    for (int i=picsFound; i<3; i++) {
+        stringstream available;
+        available << "recimg" << i+1  << "avaialble";
+        stringstream path;
+        path << "recimg" << i+1 << "path";
+        intTokens.insert(pair<string,int>(available.str(), false));
+        stringTokens.insert(pair<string,string>(path.str(), ""));
+    }
+    closedir(dirHandle);
+}
+
+void cDisplayMenuDetailView::DrawHeader(void) {
+    map < string, string > headerStringTokens;
+    map < string, int > headerIntTokens;
+
+    if (event || recording) {
+        static cPlugin *pScraper = GetScraperPlugin();
+        if (!pScraper) {
+            headerIntTokens.insert(pair<string,int>("ismovie", false));
+            headerIntTokens.insert(pair<string,int>("isseries", false));
+            headerIntTokens.insert(pair<string,int>("posteravailable", false));
+            headerIntTokens.insert(pair<string,int>("banneravailable", false));
+        } else {
+            ScraperGetEventType getType;
+            getType.event = event;
+            getType.recording = recording;
+            if (!pScraper->Service("GetEventType", &getType)) {
+                headerIntTokens.insert(pair<string,int>("ismovie", false));
+                headerIntTokens.insert(pair<string,int>("isseries", false));
+                headerIntTokens.insert(pair<string,int>("posteravailable", false));
+                headerIntTokens.insert(pair<string,int>("banneravailable", false));
+            } else {
+                if (getType.type == tMovie) {
+                    cMovie movie;
+                    movie.movieId = getType.movieId;
+                    pScraper->Service("GetMovie", &movie);
+                    headerIntTokens.insert(pair<string,int>("ismovie", true));
+                    headerIntTokens.insert(pair<string,int>("isseries", false));
+                    headerIntTokens.insert(pair<string,int>("posteravailable", true));
+                    headerIntTokens.insert(pair<string,int>("banneravailable", false));
+                    headerStringTokens.insert(pair<string,string>("posterpath", movie.poster.path));
+                    headerIntTokens.insert(pair<string,int>("posterwidth", movie.poster.width));
+                    headerIntTokens.insert(pair<string,int>("posterheight", movie.poster.height));
+                } else if (getType.type == tSeries) {
+                    cSeries series;
+                    series.seriesId = getType.seriesId;
+                    series.episodeId = getType.episodeId;
+                    pScraper->Service("GetSeries", &series);
+                    headerIntTokens.insert(pair<string,int>("ismovie", false));
+                    headerIntTokens.insert(pair<string,int>("isseries", true));
+                    vector<cTvMedia>::iterator poster = series.posters.begin();
+                    if (poster != series.posters.end()) {
+                        headerIntTokens.insert(pair<string,int>("posterwidth", (*poster).width));
+                        headerIntTokens.insert(pair<string,int>("posterheight", (*poster).height));
+                        headerStringTokens.insert(pair<string,string>("posterpath", (*poster).path));
+                        headerIntTokens.insert(pair<string,int>("posteravailable", true));
+                    } else {
+                        headerIntTokens.insert(pair<string,int>("posterwidth", 0));
+                        headerIntTokens.insert(pair<string,int>("posterheight", 0));
+                        headerStringTokens.insert(pair<string,string>("posterpath", ""));                    
+                        headerIntTokens.insert(pair<string,int>("posteravailable", false));
+                    }
+                    vector<cTvMedia>::iterator banner = series.banners.begin();
+                    if (banner != series.banners.end()) {
+                        headerIntTokens.insert(pair<string,int>("bannerwidth", (*banner).width));
+                        headerIntTokens.insert(pair<string,int>("bannerheight", (*banner).height));
+                        headerStringTokens.insert(pair<string,string>("bannerpath", (*banner).path));
+                        headerIntTokens.insert(pair<string,int>("banneravailable", true));
+                    } else {
+                        headerIntTokens.insert(pair<string,int>("bannerwidth", 0));
+                        headerIntTokens.insert(pair<string,int>("bannerheight", 0));
+                        headerStringTokens.insert(pair<string,string>("bannerpath", ""));                    
+                        headerIntTokens.insert(pair<string,int>("banneravailable", false));
+                    }
+                } else {
+                    headerIntTokens.insert(pair<string,int>("ismovie", false));
+                    headerIntTokens.insert(pair<string,int>("isseries", false));        
+                    headerIntTokens.insert(pair<string,int>("posteravailable", false));
+                    headerIntTokens.insert(pair<string,int>("banneravailable", false));
+                }
+            }
+        }
+    }
+
+    if (event) {
+        headerStringTokens.insert(pair<string,string>("title", event->Title() ? event->Title() : ""));
+        headerStringTokens.insert(pair<string,string>("shorttext", event->ShortText() ? event->ShortText() : ""));
+        headerStringTokens.insert(pair<string,string>("start", *(event->GetTimeString())));
+        headerStringTokens.insert(pair<string,string>("stop", *(event->GetEndTimeString())));
+        
+        time_t startTime = event->StartTime();
+        headerStringTokens.insert(pair<string,string>("day", *WeekDayName(startTime)));
+        headerStringTokens.insert(pair<string,string>("date", *ShortDateString(startTime)));
+        struct tm * sStartTime = localtime(&startTime);
+        headerIntTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+        headerIntTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+        headerIntTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+        const cChannel *channel = Channels.GetByChannelID(event->ChannelID());
+        if (channel) {
+            headerStringTokens.insert(pair<string,string>("channelname", channel->Name() ? channel->Name() : ""));
+            headerIntTokens.insert(pair<string, int>("channelnumber", channel->Number()));
+        } else {
+            headerStringTokens.insert(pair<string,string>("channelname", ""));            
+            headerIntTokens.insert(pair<string, int>("channelnumber", 0));
+        }
+        string channelID = *(channel->GetChannelID().ToString());
+        headerStringTokens.insert(pair<string,string>("channelid", channelID));
+        headerIntTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+
+        bool isRunning = false;
+        time_t now = time(NULL);
+        if ((now >= event->StartTime()) && (now <= event->EndTime()))
+            isRunning = true;
+        headerIntTokens.insert(pair<string,int>("running", isRunning));
+        if (isRunning) {
+            headerIntTokens.insert(pair<string,int>("elapsed", (now - event->StartTime())/60));
+        } else {
+            headerIntTokens.insert(pair<string,int>("elapsed", 0));
+        }
+        headerIntTokens.insert(pair<string,int>("duration", event->Duration() / 60));
+        headerIntTokens.insert(pair<string,int>("durationhours", event->Duration() / 3600));
+        headerStringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", (event->Duration() / 60)%60)));
+        if (event->Vps())
+            headerStringTokens.insert(pair<string,string>("vps", *event->GetVpsString()));
+        else
+            headerStringTokens.insert(pair<string,string>("vps", ""));
+
+        stringstream epgImageName;
+        epgImageName << event->EventID();
+        bool epgPicAvailable = FileExists(*config.epgImagePath, epgImageName.str(), "jpg");
+        if (epgPicAvailable) {
+            headerIntTokens.insert(pair<string,int>("epgpicavailable", true));
+            headerStringTokens.insert(pair<string,string>("epgpicpath", *cString::sprintf("%s%s.jpg", *config.epgImagePath, epgImageName.str().c_str())));
+        } else {
+            epgImageName << "_0";
+            epgPicAvailable = FileExists(*config.epgImagePath, epgImageName.str(), "jpg");
+            if (epgPicAvailable) {
+                headerIntTokens.insert(pair<string,int>("epgpicavailable", true));
+                headerStringTokens.insert(pair<string,string>("epgpicpath", *cString::sprintf("%s%s.jpg", *config.epgImagePath, epgImageName.str().c_str())));
+            } else {
+                headerIntTokens.insert(pair<string,int>("epgpicavailable", false));
+                headerStringTokens.insert(pair<string,string>("epgpicpath", ""));                
+            }
+        }
+
+        DrawViewElement(veDetailHeader, &headerStringTokens, &headerIntTokens);
+        return;
+    } else if (recording) {
+        string name = recording->Name() ? recording->Name() : "";
+        headerStringTokens.insert(pair<string,string>("name", name));
+
+        const cRecordingInfo *info = recording->Info();
+        if (info) {
+            headerStringTokens.insert(pair<string,string>("epgname", info->Title() ? info->Title() : name));
+            headerStringTokens.insert(pair<string,string>("shorttext", info->ShortText() ? info->ShortText() : ""));
+            const cEvent *event = info->GetEvent();
+            if (event) {
+                string recDate = *(event->GetDateString());
+                string recTime = *(event->GetTimeString());
+                if (recDate.find("1970") != string::npos) {
+                    time_t start = recording->Start();
+                    recDate = *DateString(start);
+                    recTime = *TimeString(start);
+                }
+                int duration = event->Duration() / 60;
+                int recDuration = recording->LengthInSeconds();
+                recDuration = (recDuration>0)?(recDuration / 60):0;
+                headerStringTokens.insert(pair<string,string>("date", recDate.c_str()));
+                headerStringTokens.insert(pair<string,string>("time", recTime.c_str()));
+                time_t startTime = event->StartTime();
+                struct tm * sStartTime = localtime(&startTime);
+                headerIntTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+                headerIntTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+                headerIntTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+                headerIntTokens.insert(pair<string,int>("duration", recDuration));
+                headerIntTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+                headerStringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+                headerIntTokens.insert(pair<string,int>("durationevent", duration));
+                headerIntTokens.insert(pair<string,int>("durationeventhours", duration / 60));
+                headerStringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
+            }
+            cChannel *channel = Channels.GetByChannelID(info->ChannelID());
+            if (channel) {
+                headerStringTokens.insert(pair<string,string>("recchannelname", channel->Name()));
+                headerStringTokens.insert(pair<string,string>("recchannelid", *channel->GetChannelID().ToString()));
+                headerIntTokens.insert(pair<string,int>("recchannelnumber", channel->Number()));
+            } else {
+                headerStringTokens.insert(pair<string,string>("recchannelname", ""));
+                headerStringTokens.insert(pair<string,string>("recchannelid", ""));
+                headerIntTokens.insert(pair<string,int>("recchannelnumber", 0));
+            }
+        } else {
+            headerStringTokens.insert(pair<string,string>("shorttext", ""));
+            int recDuration = recording->LengthInSeconds();
+            recDuration = (recDuration>0)?(recDuration / 60):0;
+            headerStringTokens.insert(pair<string,string>("date", ""));
+            headerStringTokens.insert(pair<string,string>("time", ""));
+            headerIntTokens.insert(pair<string,int>("duration", recDuration));
+            headerIntTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+            headerStringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+            headerIntTokens.insert(pair<string,int>("durationevent", 0));
+            headerIntTokens.insert(pair<string,int>("durationeventhours", 0));
+            headerStringTokens.insert(pair<string,string>("durationeventminutes", ""));
+            headerStringTokens.insert(pair<string,string>("recchannelname", ""));
+            headerStringTokens.insert(pair<string,string>("recchannelid", ""));
+            headerIntTokens.insert(pair<string,int>("recchannelnumber", 0));
+        }
+
+        string recImage = "";
+        string path = recording->FileName() ? recording->FileName() : "";
+        string extension =  ".jpg";
+        if (FirstFileInFolder(path, extension, recImage)) {
+            headerIntTokens.insert(pair<string,int>("recimgavailable", true));
+            headerStringTokens.insert(pair<string,string>("recimgpath", *cString::sprintf("%s/%s", path.c_str(), recImage.c_str())));            
+        } else {
+            headerIntTokens.insert(pair<string,int>("recimgavailable", false));
+            headerStringTokens.insert(pair<string,string>("recimgpath", ""));            
+        }
+        DrawViewElement(veDetailHeader, &headerStringTokens, &headerIntTokens);
+        return;
+    }
+
+    if (isPluginTextView) {
+        DrawViewElement(veDetailHeader, &stringTokens, &intTokens);
+    }
+}
+
+void cDisplayMenuDetailView::DrawScrollbar(void) {
+    map < string, string > scrollbarStringTokens;
+    map < string, int > scrollbarIntTokens;
+
+    int barTop = 0;
+    int barHeight = 0;
+    tabView->GetScrollbarPosition(barTop, barHeight);
+    
+    scrollbarIntTokens.insert(pair<string,int>("height", barHeight));
+    scrollbarIntTokens.insert(pair<string,int>("offset", barTop));
+    ClearViewElement(veScrollbar);
+    DrawViewElement(veScrollbar, &scrollbarStringTokens, &scrollbarIntTokens);
+}
+
+void cDisplayMenuDetailView::DrawTabLabels(void) {
+    if (!ViewElementImplemented(veTabLabels)) {
+        return;
+    }
+    map < string, string > labelStringTokens;
+    map < string, int > labelIntTokens;
+    map < string, vector< map< string, string > > > labelLoopTokens;
+
+    string labelPrev = "";
+    string labelPrevTemp = "";
+    string labelCurrent = "";
+    string labelNext = "";
+    bool wasCurrent = false;
+    vector< map< string, string > > tabLabels;
+    for (list<cTemplateViewTab*>::iterator it = activeTabs.begin(); it != activeTabs.end(); it++) {
+        cTemplateViewTab *tab = *it;
+        map< string, string > tabLabel;
+        tabLabel.insert(pair< string, string >("tabs[title]", tab->GetName()));
+        if (wasCurrent) {
+            labelNext = tab->GetName();
+        }
+        if (tab == currentTmplTab) {
+            wasCurrent = true;
+            labelCurrent = tab->GetName();
+            labelPrev = labelPrevTemp;
+            tabLabel.insert(pair< string, string >("tabs[current]", "1"));
+        } else {
+            wasCurrent = false;
+            tabLabel.insert(pair< string, string >("tabs[current]", "0"));            
+        }
+        labelPrevTemp = tab->GetName();
+        tabLabels.push_back(tabLabel);
+    }
+    if (labelNext.size() == 0 && activeTabs.size() > 0) {
+        cTemplateViewTab *firstTab = activeTabs.front();
+        labelNext = firstTab->GetName();
+    }
+    if (labelPrev.size() == 0 && activeTabs.size() > 0) {
+        cTemplateViewTab *lastTab = activeTabs.back();
+        labelPrev = lastTab->GetName();
+    }
+    labelStringTokens.insert(pair< string, string >("currenttab", labelCurrent));
+    labelStringTokens.insert(pair< string, string >("nexttab", labelNext));
+    labelStringTokens.insert(pair< string, string >("prevtab", labelPrev));
+    labelLoopTokens.insert(pair< string, vector< map< string, string > > >("tabs", tabLabels));
+
+    ClearViewElement(veTabLabels);
+    DrawViewElement(veTabLabels, &labelStringTokens, &labelIntTokens, &labelLoopTokens);
+}
+
+cTemplateViewTab *cDisplayMenuDetailView::GetPrevTab(void) {
+    if (atIt == activeTabs.begin()) {
+        atIt = activeTabs.end();
+    }
+    atIt--;
+    return *atIt;
+}
+
+cTemplateViewTab *cDisplayMenuDetailView::GetNextTab(void) {
+    atIt++;
+    if (atIt == activeTabs.end()) {
+        atIt = activeTabs.begin();
+    }
+    return *atIt;
+}
diff --git a/views/displaymenudetailview.h b/views/displaymenudetailview.h
new file mode 100644
index 0000000..1b43687
--- /dev/null
+++ b/views/displaymenudetailview.h
@@ -0,0 +1,52 @@
+#ifndef __DISPLAYMENUDETAILVIEW_H
+#define __DISPLAYMENUDETAILVIEW_H
+
+#include <list>
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "viewhelpers.h"
+#include "displaymenutabview.h"
+
+class cDisplayMenuDetailView : public cView, public cViewHelpers {
+private:
+    bool detailViewInit;
+    bool isPluginTextView;
+    const cEvent *event;
+    const cRecording *recording;
+    const char *text;
+    cTemplateViewTab *currentTmplTab;
+    list<cTemplateViewTab*> activeTabs;
+    list<cTemplateViewTab*>::iterator atIt;
+    cDisplayMenuTabView *tabView;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > loopTokens;
+    void SetTokens(void);
+    void InitTabs(void);
+    bool LoadReruns(vector< map< string, string > > *reruns);
+    void LoadRecordingInformation(void);
+    void SetEpgPictures(int eventId);
+    void SetRecordingImages(const char *recPath);
+    string StripXmlTag(string &Line, const char *Tag);
+    int ReadSizeVdr(const char *strPath);
+    void DrawHeader(void);
+    void DrawScrollbar(void);
+    void DrawTabLabels(void);
+    cTemplateViewTab *GetPrevTab(void);
+    cTemplateViewTab *GetNextTab(void);
+public:
+    cDisplayMenuDetailView(cTemplateView *tmplDetailView);
+    virtual ~cDisplayMenuDetailView();
+    void SetEvent(const cEvent *event) { this->event = event; };
+    void SetRecording(const cRecording *recording) { this->recording = recording; };
+    void SetText(const char *text) { this->text = text; };
+    void SetPluginTokens(map<string,string> *plugStringTokens, map<string,int> *plugIntTokens, map<string,vector<map<string,string> > > *plugLoopTokens);
+    void Clear(void);
+    void Render(void);
+    void KeyLeft(void);
+    void KeyRight(void);
+    void KeyUp(void);
+    void KeyDown(void);
+};
+
+#endif //__DISPLAYMENUDETAILVIEW_H
diff --git a/views/displaymenuitemcurrentview.c b/views/displaymenuitemcurrentview.c
new file mode 100644
index 0000000..4f1994b
--- /dev/null
+++ b/views/displaymenuitemcurrentview.c
@@ -0,0 +1,724 @@
+#include "../services/scraper2vdr.h"
+#include "../libcore/helpers.h"
+#include "../libcore/recfolderinfo.h"
+#include "../libcore/extrecinfo.h"
+#include "displaymenuitemcurrentview.h"
+
+
+cDisplayMenuItemCurrentView::cDisplayMenuItemCurrentView(cTemplateViewElement *tmplCurrent) : cView(tmplCurrent) {
+    delay = tmplItem->GetNumericParameter(ptDelay);
+    SetFadeTime(tmplItem->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayMenuItemCurrentView::~cDisplayMenuItemCurrentView() {
+    CancelSave();
+}
+
+void cDisplayMenuItemCurrentView::SetPosMenuItem(cRect &pos) {
+    posMenuItem.SetX(pos.X()); 
+    posMenuItem.SetY(pos.Y());
+    posMenuItem.SetWidth(pos.Width());
+    posMenuItem.SetHeight(pos.Height());
+}
+
+void cDisplayMenuItemCurrentView::SetTokensPosMenuItem(void) {
+    intTokens.insert(pair<string,int>("menuitemx", posMenuItem.X()));
+    intTokens.insert(pair<string,int>("menuitemy", posMenuItem.Y()));
+    intTokens.insert(pair<string,int>("menuitemwidth", posMenuItem.Width()));
+    intTokens.insert(pair<string,int>("menuitemheight", posMenuItem.Height()));
+}
+
+void cDisplayMenuItemCurrentView::SetScraperPoster(const cEvent *event, const cRecording *recording) {
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (!pScraper || (!event && !recording)) {
+        intTokens.insert(pair<string,int>("hasposter", false));
+        intTokens.insert(pair<string,int>("posterwidth", -1));
+        intTokens.insert(pair<string,int>("posterheight", -1));
+        stringTokens.insert(pair<string,string>("posterpath", ""));
+        return;
+    }
+
+    ScraperGetPoster call;
+    call.event = event;
+    call.recording = recording;
+    if (pScraper->Service("GetPoster", &call)) {
+        intTokens.insert(pair<string,int>("hasposter", FileExists(call.poster.path)));
+        intTokens.insert(pair<string,int>("posterwidth", call.poster.width));
+        intTokens.insert(pair<string,int>("posterheight", call.poster.height));
+        stringTokens.insert(pair<string,string>("posterpath", call.poster.path));
+    } else {
+        intTokens.insert(pair<string,int>("hasposter", false));
+        intTokens.insert(pair<string,int>("posterwidth", -1));
+        intTokens.insert(pair<string,int>("posterheight", -1));
+        stringTokens.insert(pair<string,string>("posterpath", ""));
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentMainView
+*************************************************************/
+
+cDisplayMenuItemCurrentMainView::cDisplayMenuItemCurrentMainView(cTemplateViewElement *tmplCurrent, string number, string label, string icon) 
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+    this->number = number;
+    this->label = label;
+    this->icon = icon;
+}
+
+cDisplayMenuItemCurrentMainView::~cDisplayMenuItemCurrentMainView() {
+}
+
+void cDisplayMenuItemCurrentMainView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentMainView::Render(void) {
+    stringTokens.insert(pair<string,string>("number", number));
+    stringTokens.insert(pair<string,string>("label", label));
+    stringTokens.insert(pair<string,string>("icon", icon));
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuItemCurrentMainView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentMainView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentSchedulesView
+*************************************************************/
+
+cDisplayMenuItemCurrentSchedulesView::cDisplayMenuItemCurrentSchedulesView(cTemplateViewElement *tmplCurrent, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, eMenuCategory cat, bool isEpgSearchFav) 
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+    this->event = event;
+    this->channel = channel;
+    this->timerMatch = timerMatch;
+    this->cat = cat;
+    this->isEpgSearchFav = isEpgSearchFav;
+}
+
+cDisplayMenuItemCurrentSchedulesView::~cDisplayMenuItemCurrentSchedulesView() {
+}
+
+void cDisplayMenuItemCurrentSchedulesView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentSchedulesView::Render(void) {
+    intTokens.insert(pair<string,int>("whatson", (cat == mcSchedule)&&(!isEpgSearchFav) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnow", (cat == mcScheduleNow) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnext", (cat == mcScheduleNext) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonfavorites", isEpgSearchFav ? true: false));
+    if (timerMatch == tmFull) {
+        intTokens.insert(pair<string,int>("timerpartitial", false));
+        intTokens.insert(pair<string,int>("timerfull", true));
+    } else if (timerMatch == tmPartial) {
+        intTokens.insert(pair<string,int>("timerpartitial", true));
+        intTokens.insert(pair<string,int>("timerfull", false));
+    } else {
+        intTokens.insert(pair<string,int>("timerpartitial", false));
+        intTokens.insert(pair<string,int>("timerfull", false));
+    }
+
+    if (event) {
+        stringTokens.insert(pair<string,string>("title", event->Title() ? event->Title() : ""));
+        stringTokens.insert(pair<string,string>("shorttext", event->ShortText() ? event->ShortText() : ""));
+        stringTokens.insert(pair<string,string>("description", event->Description() ? event->Description() : ""));
+        stringTokens.insert(pair<string,string>("start", *(event->GetTimeString())));
+        stringTokens.insert(pair<string,string>("stop", *(event->GetEndTimeString())));
+
+        time_t startTime = event->StartTime();
+        stringTokens.insert(pair<string,string>("day", *WeekDayName(startTime)));
+        stringTokens.insert(pair<string,string>("date", *ShortDateString(startTime)));
+        struct tm * sStartTime = localtime(&startTime);
+        intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+        intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+        intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+        bool isRunning = false;
+        time_t now = time(NULL);
+        if ((now >= event->StartTime()) && (now <= event->EndTime()))
+            isRunning = true;
+        intTokens.insert(pair<string,int>("running", isRunning));
+        if (isRunning) {
+            intTokens.insert(pair<string,int>("elapsed", (now - event->StartTime())/60));
+        } else {
+            intTokens.insert(pair<string,int>("elapsed", 0));
+        }
+        intTokens.insert(pair<string,int>("duration", event->Duration() / 60));
+        intTokens.insert(pair<string,int>("durationhours", event->Duration() / 3600));
+        stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", (event->Duration() / 60)%60)));
+        SetScraperPoster(event);
+    }
+    if (channel) {
+        stringTokens.insert(pair<string,string>("channelname", channel->Name() ? channel->Name() : ""));
+        string channelID = *(channel->GetChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channelnumber", channel->Number()));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+    }
+
+    vector< map<string,string> > schedulesTokens;
+    if (cat == mcScheduleNow || cat == mcScheduleNext) {
+        ReadSchedules(&schedulesTokens);
+    }
+    map < string, vector< map< string, string > > > loopTokens;
+    loopTokens.insert(pair<string, vector< map< string, string > > >("schedule", schedulesTokens));
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayMenuItemCurrentSchedulesView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentSchedulesView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+void cDisplayMenuItemCurrentSchedulesView::ReadSchedules(vector< map<string,string> > *schedulesTokens) {
+    if (!event)
+        return;
+    const cSchedule *schedule = event->Schedule();
+    const cEvent *curEvent = event;
+    int num = 0;
+    for (; curEvent; curEvent = schedule->Events()->Next(curEvent)) {
+        if (num == 0) {
+            num++;
+            continue;
+        }
+        map<string,string> element;
+        element.insert(pair<string,string>("schedule[start]", *(curEvent->GetTimeString())));
+        element.insert(pair<string,string>("schedule[stop]", *(curEvent->GetEndTimeString())));
+        element.insert(pair<string,string>("schedule[title]", curEvent->Title() ? curEvent->Title() : ""));
+        element.insert(pair<string,string>("schedule[shorttext]", curEvent->ShortText() ? curEvent->ShortText() : ""));
+        schedulesTokens->push_back(element);
+        num++;
+        if (num > 10)
+            break;
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentChannelView
+*************************************************************/
+
+cDisplayMenuItemCurrentChannelView::cDisplayMenuItemCurrentChannelView(cTemplateViewElement *tmplCurrent, const cChannel *channel) 
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+    this->channel = channel;
+}
+
+cDisplayMenuItemCurrentChannelView::~cDisplayMenuItemCurrentChannelView() {
+}
+
+void cDisplayMenuItemCurrentChannelView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentChannelView::Render(void) {
+    if (!channel)
+        return;
+    //general channel information
+    intTokens.insert(pair<string,int>("number", channel->Number()));
+    intTokens.insert(pair<string,int>("transponder", channel->Transponder()));
+    intTokens.insert(pair<string,int>("frequency", channel->Frequency()));
+
+    stringTokens.insert(pair<string,string>("name", channel->Name() ? channel->Name() : ""));
+    string channelID = *(channel->GetChannelID().ToString());
+    stringTokens.insert(pair<string,string>("channelid", channelID));
+    intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+
+    //Channel Source Information
+    const cSource *source = Sources.Get(channel->Source());
+    if (source) {
+        stringTokens.insert(pair<string,string>("source", *cSource::ToString(source->Code())));
+        stringTokens.insert(pair<string,string>("sourcedescription", source->Description() ? source->Description() : ""));
+        stringTokens.insert(pair<string,string>("source", *cSource::ToString(source->Code())));
+        intTokens.insert(pair<string,int>("isAtsc", source->IsAtsc(source->Code())));
+        intTokens.insert(pair<string,int>("isCable", source->IsCable(source->Code())));
+        intTokens.insert(pair<string,int>("isSat", source->IsSat(source->Code())));
+        intTokens.insert(pair<string,int>("isTerr", source->IsTerr(source->Code())));
+    }
+
+    //current schedule
+    cSchedulesLock schedulesLock;
+    const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
+    const cSchedule *schedule = NULL;
+    schedule = schedules->GetSchedule(channel);
+    if (schedule) {
+        const cEvent *presentEvent = schedule->GetPresentEvent();
+        if (presentEvent) {
+            stringTokens.insert(pair<string,string>("presenteventtitle", presentEvent->Title() ? presentEvent->Title() : ""));
+            stringTokens.insert(pair<string,string>("presenteventshorttext", presentEvent->ShortText() ? presentEvent->ShortText() : ""));
+            stringTokens.insert(pair<string,string>("presenteventdescription", presentEvent->Description() ? presentEvent->Description() : ""));
+            stringTokens.insert(pair<string,string>("presenteventstart", *presentEvent->GetTimeString()));
+            stringTokens.insert(pair<string,string>("presenteventstop", *presentEvent->GetEndTimeString()));
+            stringTokens.insert(pair<string,string>("presenteventday", *WeekDayName(presentEvent->StartTime())));
+            stringTokens.insert(pair<string,string>("presenteventdate", *ShortDateString(presentEvent->StartTime())));
+            intTokens.insert(pair<string,int>("presenteventelapsed", (time(0) - presentEvent->StartTime())/60));
+            intTokens.insert(pair<string,int>("presenteventduration", presentEvent->Duration() / 60));
+            intTokens.insert(pair<string,int>("presenteventdurationhours", presentEvent->Duration() / 3600));
+            stringTokens.insert(pair<string,string>("presenteventdurationminutes", *cString::sprintf("%.2d", (presentEvent->Duration() / 60)%60)));
+            SetScraperPoster(presentEvent);
+        } else {
+            stringTokens.insert(pair<string,string>("presenteventtitle", ""));
+            stringTokens.insert(pair<string,string>("presenteventshorttext", ""));
+            stringTokens.insert(pair<string,string>("presenteventdescription", ""));
+            stringTokens.insert(pair<string,string>("presenteventstart", ""));
+            stringTokens.insert(pair<string,string>("presenteventstop", ""));
+            stringTokens.insert(pair<string,string>("presenteventday", ""));
+            stringTokens.insert(pair<string,string>("presenteventdate", ""));
+            intTokens.insert(pair<string,int>("presenteventelapsed", 0));
+            intTokens.insert(pair<string,int>("presenteventduration", 0));
+            intTokens.insert(pair<string,int>("presenteventdurationhours", 0));
+            stringTokens.insert(pair<string,string>("presenteventdurationminutes", ""));      
+        }
+        const cList<cEvent> *events = schedule->Events();
+        bool inserted = false;
+        if (events && presentEvent) {
+            const cEvent *nextEvent = events->Next(presentEvent);
+            if (nextEvent) {
+                stringTokens.insert(pair<string,string>("nexteventtitle", nextEvent->Title() ? nextEvent->Title() : ""));
+                stringTokens.insert(pair<string,string>("nexteventshorttext", nextEvent->ShortText() ? nextEvent->ShortText() : ""));
+                stringTokens.insert(pair<string,string>("nexteventdescription", nextEvent->Description() ? nextEvent->Description() : ""));
+                stringTokens.insert(pair<string,string>("nexteventstart", *nextEvent->GetTimeString()));
+                stringTokens.insert(pair<string,string>("nexteventstop", *nextEvent->GetEndTimeString()));
+                stringTokens.insert(pair<string,string>("nexteventday", *WeekDayName(nextEvent->StartTime())));
+                stringTokens.insert(pair<string,string>("nexteventdate", *ShortDateString(nextEvent->StartTime())));
+                intTokens.insert(pair<string,int>("nexteventduration", nextEvent->Duration() / 60));
+                intTokens.insert(pair<string,int>("nexteventdurationhours", nextEvent->Duration() / 3600));
+                stringTokens.insert(pair<string,string>("nexteventdurationminutes", *cString::sprintf("%.2d", (nextEvent->Duration() / 60)%60)));
+                inserted = true;
+            }
+        }
+        if (!inserted) {
+            stringTokens.insert(pair<string,string>("nexteventtitle", ""));
+            stringTokens.insert(pair<string,string>("nexteventshorttext", ""));
+            stringTokens.insert(pair<string,string>("nexteventdescription", ""));
+            stringTokens.insert(pair<string,string>("nexteventstart", ""));
+            stringTokens.insert(pair<string,string>("nexteventstop", ""));
+            stringTokens.insert(pair<string,string>("nexteventday", ""));
+            stringTokens.insert(pair<string,string>("nexteventdate", ""));
+            intTokens.insert(pair<string,int>("nexteventduration", 0));
+            intTokens.insert(pair<string,int>("nexteventdurationhours", 0));
+            stringTokens.insert(pair<string,string>("nexteventdurationminutes", ""));
+        }
+    }
+    
+    vector< map<string,string> > schedulesTokens;
+    ReadSchedules(&schedulesTokens);
+    
+    map < string, vector< map< string, string > > > loopTokens;
+    loopTokens.insert(pair<string, vector< map< string, string > > >("schedule", schedulesTokens));
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayMenuItemCurrentChannelView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentChannelView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+void cDisplayMenuItemCurrentChannelView::ReadSchedules(vector< map<string,string> > *schedulesTokens) {
+    cSchedulesLock schedulesLock;
+    const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
+    const cSchedule *schedule = NULL;
+    schedule = schedules->GetSchedule(channel);
+    if (!schedule) {
+        return;
+    } 
+    const cEvent *curEvent = schedule->GetPresentEvent();
+    int num = 0;
+    for (; curEvent; curEvent = schedule->Events()->Next(curEvent)) {
+        if (num < 2) {
+            num++;
+            continue;
+        }
+        map<string,string> element;
+        element.insert(pair<string,string>("schedule[start]", *(curEvent->GetTimeString())));
+        element.insert(pair<string,string>("schedule[stop]", *(curEvent->GetEndTimeString())));
+        element.insert(pair<string,string>("schedule[title]", curEvent->Title() ? curEvent->Title() : ""));
+        element.insert(pair<string,string>("schedule[shorttext]", curEvent->ShortText() ? curEvent->ShortText() : ""));
+        schedulesTokens->push_back(element);
+        num++;
+        if (num > 11)
+            break;
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentTimerView
+*************************************************************/
+
+cDisplayMenuItemCurrentTimerView::cDisplayMenuItemCurrentTimerView(cTemplateViewElement *tmplCurrent, const cTimer *timer)
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+    this->timer = timer;
+}
+
+cDisplayMenuItemCurrentTimerView::~cDisplayMenuItemCurrentTimerView() {
+}
+
+void cDisplayMenuItemCurrentTimerView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentTimerView::Render(void) {
+    if (!timer)
+        return;
+    intTokens.insert(pair<string,int>("flagactive", timer->HasFlags(tfActive)));
+    intTokens.insert(pair<string,int>("flaginstant", timer->HasFlags(tfInstant)));
+    intTokens.insert(pair<string,int>("flagvps", timer->HasFlags(tfVps)));
+    intTokens.insert(pair<string,int>("flagrecording", timer->Recording()));
+    intTokens.insert(pair<string,int>("flagpending", timer->Pending()));
+
+    const char *file = Setup.FoldersInTimerMenu ? NULL : strrchr(timer->File(), FOLDERDELIMCHAR);
+    if (file && strcmp(file + 1, TIMERMACRO_TITLE) && strcmp(file + 1, TIMERMACRO_EPISODE))
+        file++;
+    else
+        file = timer->File();
+    stringTokens.insert(pair<string,string>("title", file));
+    stringTokens.insert(pair<string,string>("timerstart", *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)));
+    stringTokens.insert(pair<string,string>("timerstop", *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)));
+
+    string day = "";
+    string dayName = "";
+    if (timer->WeekDays())
+        day = timer->PrintDay(0, timer->WeekDays(), false);
+    else if (timer->Day() - time(NULL) < 28 * SECSINDAY) {
+        day = itoa(timer->GetMDay(timer->Day()));
+        dayName = WeekDayName(timer->Day());
+    } else {
+        struct tm tm_r;
+        time_t Day = timer->Day();
+        localtime_r(&Day, &tm_r);
+        char buffer[16];
+        strftime(buffer, sizeof(buffer), "%Y%m%d", &tm_r);
+        day = buffer;
+    }
+
+    struct tm tm_r;
+    time_t timerDate = timer->Day();
+    localtime_r(&timerDate, &tm_r);
+    char buffer[4];
+    strftime(buffer, sizeof(buffer), "%m", &tm_r);
+    int month = atoi(buffer);
+    char buffer2[6];
+    strftime(buffer2, sizeof(buffer2), "%b", &tm_r);
+    string monthName = buffer2;
+    char buffer3[6];
+    strftime(buffer3, sizeof(buffer3), "%Y", &tm_r);
+    int year = atoi(buffer3);
+
+    stringTokens.insert(pair<string,string>("day", day));
+    stringTokens.insert(pair<string,string>("dayname", dayName));
+    intTokens.insert(pair<string,int>("month", month));
+    stringTokens.insert(pair<string,string>("monthname", monthName));
+    intTokens.insert(pair<string,int>("year", year));
+
+    const cChannel *channel = timer->Channel();
+    if (channel) {
+        stringTokens.insert(pair<string,string>("channelname", channel->Name() ? channel->Name() : ""));
+        string channelID = *(channel->GetChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+        intTokens.insert(pair<string,int>("channelnumber", channel->Number()));
+    } else {
+        stringTokens.insert(pair<string,string>("channelname", ""));
+        stringTokens.insert(pair<string,string>("channelid", ""));
+        intTokens.insert(pair<string, int>("channellogoexists", 0));
+        intTokens.insert(pair<string,int>("channelnumber", 0));        
+    }
+
+    const cEvent *event = timer->Event();
+    if (event) {
+        stringTokens.insert(pair<string,string>("eventtitle", event->Title() ? event->Title() : ""));
+        stringTokens.insert(pair<string,string>("eventstart", *event->GetTimeString()));
+        stringTokens.insert(pair<string,string>("eventstop", *event->GetEndTimeString()));
+        stringTokens.insert(pair<string,string>("eventshorttext", event->ShortText() ? event->ShortText() : ""));
+        stringTokens.insert(pair<string,string>("eventdescription", event->Description() ? event->Description() : ""));
+        SetScraperPoster(event);
+    } else {
+        stringTokens.insert(pair<string,string>("eventtitle", ""));
+        stringTokens.insert(pair<string,string>("eventstart", ""));
+        stringTokens.insert(pair<string,string>("eventstop", ""));
+        stringTokens.insert(pair<string,string>("eventshorttext", ""));
+        stringTokens.insert(pair<string,string>("eventdescription", ""));
+    }
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuItemCurrentTimerView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentTimerView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentRecordingView
+*************************************************************/
+
+cDisplayMenuItemCurrentRecordingView::cDisplayMenuItemCurrentRecordingView(cTemplateViewElement *tmplCurrent, const cRecording *recording, int level, int total, int newRecs)
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+    this->recording = recording;
+    this->level = level;
+    this->total = total;
+    this->newRecs = newRecs;
+}
+
+cDisplayMenuItemCurrentRecordingView::~cDisplayMenuItemCurrentRecordingView() {
+}
+
+void cDisplayMenuItemCurrentRecordingView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentRecordingView::Render(void) {
+    if (!recording)
+        return;
+    map < string, vector< map< string, string > > > loopTokens;
+
+    bool isFolder = (total > 0) ? true : false;
+    intTokens.insert(pair<string,int>("folder", isFolder));
+
+    string name = recording->Name() ? recording->Name() : "";
+    string buffer = "";
+    stringstream folderName;
+    try {
+        vector<string> tokens;
+        istringstream f(name.c_str());
+        string s;
+        int i=0;
+        while (getline(f, s, FOLDERDELIMCHAR)) {
+            tokens.push_back(s);
+            if (isFolder && i <= level) {
+                if (i > 0)
+                    folderName << FOLDERDELIMCHAR;
+                folderName << s;
+                i++;
+            }
+        }
+        buffer = tokens.at(level);
+        if (!isFolder && recording->IsEdited()) {
+            buffer = buffer.substr(1);
+        }
+    } catch (...) {
+        buffer = name.c_str();
+    }
+
+    const cRecording *usedRecording = recording;
+
+    if (isFolder) {
+        cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str());
+        if (folderInfo) {
+            cRecording *newestRec = Recordings.GetByName(*folderInfo->LatestFileName);
+            if (newestRec) {
+                usedRecording = newestRec;
+            }
+            delete folderInfo;
+        }
+    }
+
+    stringTokens.insert(pair<string,string>("name", buffer.c_str()));
+    intTokens.insert(pair<string,int>("new", usedRecording->IsNew()));
+    intTokens.insert(pair<string,int>("newrecordingsfolder", newRecs));
+    intTokens.insert(pair<string,int>("numrecordingsfolder", total));
+    intTokens.insert(pair<string,int>("cutted", usedRecording->IsEdited()));
+
+    SetScraperPoster(NULL, usedRecording);
+
+
+    const cRecordingInfo *info = usedRecording->Info();
+    if (!info) return;
+
+    bool extRecinfoAvailable = false;    
+    if (info->Aux()) {
+        cExtRecInfo extRecInfo(info->Aux());
+        if (extRecInfo.Parse()) {
+            extRecinfoAvailable = true;
+            intTokens.insert(pair<string,int>("screenwidth", extRecInfo.resWidth));
+            intTokens.insert(pair<string,int>("screenheight", extRecInfo.resHeight));
+            intTokens.insert(pair<string,int>("isHD", extRecInfo.isHD));
+            intTokens.insert(pair<string,int>("isWideScreen", extRecInfo.isWideScreen));
+            intTokens.insert(pair<string,int>("isDolby", extRecInfo.isDolby));
+            stringTokens.insert(pair<string,string>("resolution", extRecInfo.resString));
+            stringTokens.insert(pair<string,string>("aspect", extRecInfo.aspectratio));
+            stringTokens.insert(pair<string,string>("codec", extRecInfo.codec));
+            stringTokens.insert(pair<string,string>("format", extRecInfo.format));
+            stringTokens.insert(pair<string,string>("framerate", extRecInfo.framerate));
+            stringTokens.insert(pair<string,string>("interlace", extRecInfo.interlace));
+            intTokens.insert(pair<string,int>("numtracks", extRecInfo.tracks.size()));
+            vector< map<string,string> > trackTokens;
+            int  trackNumber = 1;
+            for (vector<tAudioTrack>::iterator track = extRecInfo.tracks.begin(); track != extRecInfo.tracks.end(); track++) {
+                map<string,string> element;
+                stringstream trackNum;
+                trackNum << trackNumber++;
+                element.insert(pair<string,string>("track[num]", trackNum.str()));
+                element.insert(pair<string,string>("track[codec]", (*track).codec));
+                element.insert(pair<string,string>("track[bitrate]", (*track).bitrate));
+                element.insert(pair<string,string>("track[language]", (*track).language));
+                trackTokens.push_back(element);
+            }            
+            loopTokens.insert(pair<string, vector< map< string, string > > >("track", trackTokens));
+        }
+    }
+    intTokens.insert(pair<string,int>("extrecinfoavailable", extRecinfoAvailable));
+
+    stringTokens.insert(pair<string,string>("epgname", info->Title() ? info->Title() : buffer));
+    stringTokens.insert(pair<string,string>("shorttext", info->ShortText() ? info->ShortText() : ""));
+    stringTokens.insert(pair<string,string>("description", info->Description() ? info->Description() : ""));
+    
+    const cEvent *event = info->GetEvent();
+    if (!event) return;
+
+    string recDate = *(event->GetDateString());
+    string recTime = *(event->GetTimeString());
+    if (recDate.find("1970") != string::npos) {
+        time_t start = usedRecording->Start();
+        recDate = *DateString(start);
+        recTime = *TimeString(start);
+    }
+
+    time_t startTime = event->StartTime();
+    struct tm * sStartTime = localtime(&startTime);
+    intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+    intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+    intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+    int duration = event->Duration() / 60;
+    int recDuration = usedRecording->LengthInSeconds();
+    recDuration = (recDuration>0)?(recDuration / 60):0;
+    stringTokens.insert(pair<string,string>("date", recDate.c_str()));
+    stringTokens.insert(pair<string,string>("time", recTime.c_str()));
+    intTokens.insert(pair<string,int>("duration", recDuration));
+    intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+    stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+    intTokens.insert(pair<string,int>("durationevent", duration));
+    intTokens.insert(pair<string,int>("durationeventhours", duration / 60));
+    stringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayMenuItemCurrentRecordingView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentRecordingView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemCurrentPluginView
+*************************************************************/
+
+cDisplayMenuItemCurrentPluginView::cDisplayMenuItemCurrentPluginView(cTemplateViewElement *tmplCurrent, map <string,string> &plugStringTokens, 
+                                                                     map <string,int> &plugIntTokens, map<string,vector<map<string,string> > > &pluginLoopTokens)
+                         : cDisplayMenuItemCurrentView(tmplCurrent) {
+
+    stringTokens = plugStringTokens;
+    intTokens = plugIntTokens;
+    loopTokens = pluginLoopTokens;
+}
+
+cDisplayMenuItemCurrentPluginView::~cDisplayMenuItemCurrentPluginView() {
+}
+
+void cDisplayMenuItemCurrentPluginView::Prepare(void) {
+}
+
+
+void cDisplayMenuItemCurrentPluginView::Render(void) {
+    SetTokensPosMenuItem();
+    DrawViewElement(veMenuCurrentItemDetail, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayMenuItemCurrentPluginView::Clear(void) {
+    
+}
+
+void cDisplayMenuItemCurrentPluginView::Action(void) {
+    SetInitFinished();
+    DoSleep(delay);
+    Render();
+    FadeIn();
+    DoFlush();
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
diff --git a/views/displaymenuitemcurrentview.h b/views/displaymenuitemcurrentview.h
new file mode 100644
index 0000000..680d9c8
--- /dev/null
+++ b/views/displaymenuitemcurrentview.h
@@ -0,0 +1,108 @@
+#ifndef __DISPLAYMENUITEMCURRENTVIEW_H
+#define __DISPLAYMENUITEMCURRENTVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+
+class cDisplayMenuItemCurrentView : public cView {
+private:
+protected:
+    int delay;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    cRect posMenuItem;
+    void SetTokensPosMenuItem(void);
+    void SetScraperPoster(const cEvent *event, const cRecording *recording=NULL);
+public:
+    cDisplayMenuItemCurrentView(cTemplateViewElement *tmplCurrent);
+    virtual ~cDisplayMenuItemCurrentView();
+    void SetPosMenuItem(cRect &pos);
+    virtual void Prepare(void) {};
+    virtual void Render(void) {};
+    virtual void Clear(void) {};
+};
+
+class cDisplayMenuItemCurrentMainView: public cDisplayMenuItemCurrentView {
+private:
+    string number;
+    string label;
+    string icon;
+    void Action(void);
+public:
+    cDisplayMenuItemCurrentMainView(cTemplateViewElement *tmplCurrent, string number, string label, string icon);
+    virtual ~cDisplayMenuItemCurrentMainView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+class cDisplayMenuItemCurrentSchedulesView: public cDisplayMenuItemCurrentView {
+private:
+    const cEvent *event;
+    const cChannel *channel;
+    eTimerMatch timerMatch;
+    eMenuCategory cat;
+    bool isEpgSearchFav; 
+    void Action(void);
+    void ReadSchedules(vector< map<string,string> > *schedulesTokens);
+public:
+    cDisplayMenuItemCurrentSchedulesView(cTemplateViewElement *tmplCurrent, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, eMenuCategory cat, bool isEpgSearchFav);
+    virtual ~cDisplayMenuItemCurrentSchedulesView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+class cDisplayMenuItemCurrentChannelView: public cDisplayMenuItemCurrentView {
+private:
+    const cChannel *channel;
+    void Action(void);
+    void ReadSchedules(vector< map<string,string> > *schedulesTokens);
+public:
+    cDisplayMenuItemCurrentChannelView(cTemplateViewElement *tmplCurrent, const cChannel *channel);
+    virtual ~cDisplayMenuItemCurrentChannelView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+class cDisplayMenuItemCurrentTimerView: public cDisplayMenuItemCurrentView {
+private:
+    const cTimer *timer;
+    void Action(void);
+public:
+    cDisplayMenuItemCurrentTimerView(cTemplateViewElement *tmplCurrent, const cTimer *timer);
+    virtual ~cDisplayMenuItemCurrentTimerView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+class cDisplayMenuItemCurrentRecordingView: public cDisplayMenuItemCurrentView {
+private:
+    const cRecording *recording;
+    int level;
+    int total;
+    int newRecs;
+    void Action(void);
+public:
+    cDisplayMenuItemCurrentRecordingView(cTemplateViewElement *tmplCurrent, const cRecording *recording, int level, int total, int newRecs);
+    virtual ~cDisplayMenuItemCurrentRecordingView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+class cDisplayMenuItemCurrentPluginView: public cDisplayMenuItemCurrentView {
+private:
+    map<string,vector<map<string,string> > > loopTokens;
+    void Action(void);
+public:
+    cDisplayMenuItemCurrentPluginView(cTemplateViewElement *tmplCurrent, map <string,string> &plugStringTokens, map <string,int> &plugIntTokens, map<string,vector<map<string,string> > > &pluginLoopTokens);
+    virtual ~cDisplayMenuItemCurrentPluginView();
+    void Prepare(void);
+    void Render(void);
+    void Clear(void);
+};
+
+#endif //__DISPLAYMENUITEMCURRENTVIEW_H
diff --git a/views/displaymenuitemview.c b/views/displaymenuitemview.c
new file mode 100644
index 0000000..3594396
--- /dev/null
+++ b/views/displaymenuitemview.c
@@ -0,0 +1,870 @@
+#include "displaymenuitemview.h"
+#include "../services/scraper2vdr.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+#include "../libcore/recfolderinfo.h"
+#include <sstream>
+#include <algorithm>
+
+/*************************************************************
+* cDisplayMenuItemView
+*************************************************************/
+
+cDisplayMenuItemView::cDisplayMenuItemView(cTemplateViewList *tmplList, bool current, bool selectable) : cViewListItem(tmplList->GetListElement()) {
+    this->tmplList = tmplList;
+    this->current = current;
+    this->selectable = selectable;
+    itemInit = true;
+    dirty = true;
+    num = 0;
+    currentView = NULL;
+}
+
+cDisplayMenuItemView::~cDisplayMenuItemView() {
+    if (currentView)
+        delete currentView;
+    CancelSave();
+}
+
+void cDisplayMenuItemView::SetCurrent(bool cur) { 
+    current = cur; 
+    intTokens.erase("current");
+    intTokens.insert(pair<string,int>("current", current));
+    dirty = true; 
+};
+
+
+void cDisplayMenuItemView::ArrangeContainer(void) {
+    if (pos > -1)
+        return;
+    SetInitFinished();
+    pos = num;
+    numTotal = tmplList->GetNumericParameter(ptNumElements);
+    container.SetX(tmplList->GetNumericParameter(ptX));
+    container.SetY(tmplList->GetNumericParameter(ptY));
+    container.SetWidth(tmplList->GetNumericParameter(ptWidth));
+    container.SetHeight(tmplList->GetNumericParameter(ptHeight));
+    align = tmplList->GetNumericParameter(ptAlign);
+    listOrientation = tmplList->GetNumericParameter(ptOrientation);
+}
+
+void cDisplayMenuItemView::Clear(void) {
+    ClearListItem();
+    if (currentView) {
+        delete currentView;
+        currentView = NULL;
+    }
+}
+
+void cDisplayMenuItemView::PrepareScrolling(void) {
+    currentlyScrolling = true;
+    ClearListItem();
+    DrawListItem(&stringTokens, &intTokens);
+}
+
+void cDisplayMenuItemView::EndScrolling(void) {
+    const cPoint p(0,0);
+    SetDrawPortPoint(scrollingPix, p);
+    currentlyScrolling = false;
+    ClearListItem();
+    DrawListItem(&stringTokens, &intTokens);
+}
+
+void cDisplayMenuItemView::Action(void) {
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        PrepareScrolling();
+        if (scrollOrientation == orHorizontal) {
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+void cDisplayMenuItemView::Stop(void) {
+    if (Running()) {
+        CancelSave();
+        EndScrolling();
+    }
+}
+
+
+void cDisplayMenuItemView::Debug(void) {
+    esyslog("skindesigner: current %d, selectable %d", current, selectable);
+    esyslog("skindesigner: pos %d, numTotal %d", pos, numTotal);
+    esyslog("skindesigner: container x = %d, y = %d, width = %d, height = %d", container.X(), container.Y(), container.Width(), container.Height());
+}
+
+/*************************************************************
+* cDisplayMenuItemDefaultView
+*************************************************************/
+
+cDisplayMenuItemDefaultView::cDisplayMenuItemDefaultView(cTemplateViewList *tmplList, string *tabTexts, int *tabs, int *tabWidths, bool current, bool selectable) 
+                         : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->tabTexts = tabTexts;
+    this->tabs = tabs;
+    this->tabWidths = tabWidths;
+    maxTabs = cSkinDisplayMenu::MaxTabs;
+}
+
+cDisplayMenuItemDefaultView::~cDisplayMenuItemDefaultView() {
+    delete[] tabTexts;
+}
+
+void cDisplayMenuItemDefaultView::SetTabTexts(string *tabTexts) {
+    delete[] this->tabTexts;
+    this->tabTexts = tabTexts; 
+}
+    
+void cDisplayMenuItemDefaultView::SetTokens(void) {
+    stringTokens.clear();
+    intTokens.clear();
+    for (int i=0; i<maxTabs; i++) {
+        stringstream name;
+        name << "column" << (i+1);
+        stringstream nameUsed;
+        nameUsed << name.str() << "set";
+        stringstream nameX;
+        nameX << name.str() << "x";
+        stringstream nameWidth;
+        nameWidth << name.str() << "width";
+        stringTokens.insert(pair<string,string>(name.str(), tabTexts[i]));
+        if (i>0)
+            intTokens.insert(pair<string,int>(nameUsed.str(), (tabTexts[i].size() > 0) ? 1 : 0 ));
+        intTokens.insert(pair<string,int>(nameX.str(), tabs[i]));
+        intTokens.insert(pair<string,int>(nameWidth.str(), tabWidths[i]));
+    }
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("separator", !selectable));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+}
+
+void cDisplayMenuItemDefaultView::Prepare(void) {
+    ArrangeContainer();
+}
+
+
+void cDisplayMenuItemDefaultView::Render(void) {
+    DrawListItem(&stringTokens, &intTokens);
+    dirty = false;
+}
+
+void cDisplayMenuItemDefaultView::Debug(void) {
+    esyslog("skindesigner: Default Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    for (int i=0; i<maxTabs; i++) {
+        esyslog("skindesigner: tab %d: text: %s, x: %d", i, tabTexts[i].c_str(), tabs[i]);
+    }
+}
+
+/*************************************************************
+* Private Functions
+*************************************************************/
+
+
+/*************************************************************
+* cDisplayMenuItemMainView
+*************************************************************/
+
+cDisplayMenuItemMainView::cDisplayMenuItemMainView(cTemplateViewList *tmplList, string itemText, bool current, bool selectable) 
+                         : cDisplayMenuItemView(tmplList, current, selectable) {
+    text = itemText;
+    number = "";
+    label = "";
+    icon = "";
+}
+
+cDisplayMenuItemMainView::~cDisplayMenuItemMainView() {
+}
+
+void cDisplayMenuItemMainView::SetTokens(void) {
+    if (!itemInit)
+        return;
+    itemInit = false;
+    stringTokens.insert(pair<string,string>("number", number));
+    stringTokens.insert(pair<string,string>("label", label));
+    stringTokens.insert(pair<string,string>("icon", icon));
+
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("separator", !selectable));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+}
+
+void cDisplayMenuItemMainView::Prepare(void) {
+    ArrangeContainer();
+    SplitMenuText();
+    icon = imgCache->GetIconName(label);
+}
+
+
+void cDisplayMenuItemMainView::Render(void) {
+
+    cRect pos = DrawListItem(&stringTokens, &intTokens);
+
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentMainView(tmplCurrent, number, label, icon);
+            currentView->SetPosMenuItem(pos);
+            currentView->Start();
+        }
+    }
+
+    dirty = false;
+}
+
+void cDisplayMenuItemMainView::Debug(void) {
+    esyslog("skindesigner: Main Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: item Text: %s", text.c_str());
+    esyslog("skindesigner: item Number: %s, Label: %s", number.c_str(), label.c_str());
+    esyslog("skindesigner: Icon: %s", icon.c_str());
+}
+
+/*************************************************************
+* Private Functions
+*************************************************************/
+
+void cDisplayMenuItemMainView::SplitMenuText(void) {
+    string textPlain = skipspace(text.c_str());
+    bool found = false;
+    bool doBreak = false;
+    size_t i = 0;
+    for (; i < textPlain.length(); i++) {
+        char s = textPlain.at(i);
+        if (i==0) {
+            //if text directly starts with nonnumeric, break
+            if (!(s >= '0' && s <= '9')) {
+                break;
+            }
+        }
+        if (found) {
+            if (!(s >= '0' && s <= '9')) {
+                doBreak = true;
+            }
+        }
+        if (s >= '0' && s <= '9') {
+            found = true;
+        }
+        if (doBreak)
+            break;
+        if (i>4)
+            break;
+    }
+    if (found) {
+        number = skipspace(textPlain.substr(0,i).c_str());
+        label = skipspace(textPlain.substr(i).c_str());
+    } else {
+        number = "";
+        label = textPlain.c_str();
+    }
+}
+
+/*************************************************************
+* cDisplayMenuItemSchedulesView
+*************************************************************/
+
+cDisplayMenuItemSchedulesView::cDisplayMenuItemSchedulesView(cTemplateViewList *tmplList, const cEvent *event, 
+                                                             const cChannel *channel, eTimerMatch timerMatch, 
+                                                             eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable) 
+                                                            : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->event = event;
+    this->channel = channel;
+    this->timerMatch = timerMatch;
+    this->cat = cat;
+    this->isEpgSearchFav = isEpgSearchFav;
+}
+
+cDisplayMenuItemSchedulesView::~cDisplayMenuItemSchedulesView() {
+}
+
+void cDisplayMenuItemSchedulesView::SetTokens(void) {
+    if (!itemInit)
+        return;
+    itemInit = false;
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("separator", !selectable));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+    intTokens.insert(pair<string,int>("whatson", (cat == mcSchedule)&&(!isEpgSearchFav) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnow", (cat == mcScheduleNow) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnext", (cat == mcScheduleNext) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonfavorites", isEpgSearchFav ? true: false));
+    if (timerMatch == tmFull) {
+        intTokens.insert(pair<string,int>("timerpartitial", false));
+        intTokens.insert(pair<string,int>("timerfull", true));
+    } else if (timerMatch == tmPartial) {
+        intTokens.insert(pair<string,int>("timerpartitial", true));
+        intTokens.insert(pair<string,int>("timerfull", false));
+    } else {
+        intTokens.insert(pair<string,int>("timerpartitial", false));
+        intTokens.insert(pair<string,int>("timerfull", false));
+    }
+
+    if (event) {
+        if (selectable) {
+            stringTokens.insert(pair<string,string>("title", event->Title() ? event->Title() : ""));
+            stringTokens.insert(pair<string,string>("shorttext", event->ShortText() ? event->ShortText() : ""));
+            stringTokens.insert(pair<string,string>("start", *(event->GetTimeString())));
+            stringTokens.insert(pair<string,string>("stop", *(event->GetEndTimeString())));
+            time_t startTime = event->StartTime();
+            stringTokens.insert(pair<string,string>("day", *WeekDayName(startTime)));
+            stringTokens.insert(pair<string,string>("date", *ShortDateString(startTime)));
+            struct tm * sStartTime = localtime(&startTime);
+            intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+            intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+            intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+            bool isRunning = false;
+            time_t now = time(NULL);
+            if ((now >= event->StartTime()) && (now <= event->EndTime()))
+                isRunning = true;
+            intTokens.insert(pair<string,int>("running", isRunning));
+            if (isRunning) {
+                intTokens.insert(pair<string,int>("elapsed", (now - event->StartTime())/60));
+            } else {
+                intTokens.insert(pair<string,int>("elapsed", 0));
+            }
+            intTokens.insert(pair<string,int>("duration", event->Duration() / 60));
+            intTokens.insert(pair<string,int>("durationhours", event->Duration() / 3600));
+            stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", (event->Duration() / 60)%60)));
+            intTokens.insert(pair<string,int>("hasVPS", (bool)event->Vps()));
+        } else {
+            stringTokens.insert(pair<string,string>("title", event->Title() ? ParseSeparator(event->Title()) : ""));
+        }
+    }
+    if (channel) {
+        stringTokens.insert(pair<string,string>("channelname", channel->Name() ? channel->Name() : ""));
+        string channelID = *(channel->GetChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channelnumber", channel->Number()));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+        if (!event && !selectable) {
+            stringTokens.insert(pair<string,string>("title", channel->Name() ? ParseSeparator(channel->Name()) : ""));
+        }
+    } else {
+        stringTokens.insert(pair<string,string>("channelname", ""));
+        stringTokens.insert(pair<string,string>("channelid", ""));
+        intTokens.insert(pair<string, int>("channelnumber", 0));
+        intTokens.insert(pair<string, int>("channellogoexists", 0));
+    }
+}
+
+
+void cDisplayMenuItemSchedulesView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemSchedulesView::Render(void) {
+
+    DrawListItem(&stringTokens, &intTokens);
+    
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentSchedulesView(tmplCurrent, event, channel, timerMatch, cat, isEpgSearchFav);
+            currentView->Start();
+        }
+    }
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemSchedulesView::Debug(void) {
+    esyslog("skindesigner: Schedules Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: Event: %s", event ? event->Title() : "Event is NULL");
+}
+
+/*************************************************************
+* Private Functions
+*************************************************************/
+
+string cDisplayMenuItemSchedulesView::ParseSeparator(string sep) {
+    string separator = sep;
+    try {
+        if (separator.find_first_not_of("-") > 0)
+            separator.erase(0, separator.find_first_not_of("-")+1);
+        if (separator.find_last_not_of("-") != string::npos)
+            separator.erase(separator.find_last_not_of("-")+1);
+    } catch (...) {}
+    return separator;
+}
+
+/*************************************************************
+* cDisplayMenuItemChannelsView
+*************************************************************/
+
+cDisplayMenuItemChannelsView::cDisplayMenuItemChannelsView(cTemplateViewList *tmplList, const cChannel *channel, 
+                                                           bool withProvider, bool current, bool selectable) 
+                                                           : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->channel = channel;
+    this->withProvider = withProvider;
+}
+
+cDisplayMenuItemChannelsView::~cDisplayMenuItemChannelsView() {
+}
+
+void cDisplayMenuItemChannelsView::SetTokens(void) {
+    if (!itemInit)
+        return;
+    itemInit = false;
+    if (!channel)
+        return;
+    //general channel information
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("separator", !selectable));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+    intTokens.insert(pair<string,int>("number", channel->Number()));
+    intTokens.insert(pair<string,int>("transponder", channel->Transponder()));
+    intTokens.insert(pair<string,int>("frequency", channel->Frequency()));
+
+    stringTokens.insert(pair<string,string>("name", channel->Name() ? channel->Name() : ""));
+    string channelID = *(channel->GetChannelID().ToString());
+    stringTokens.insert(pair<string,string>("channelid", channelID));
+    intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+
+    //Channel Source Information
+    const cSource *source = Sources.Get(channel->Source());
+    if (source) {
+        stringTokens.insert(pair<string,string>("source", *cSource::ToString(source->Code())));
+        stringTokens.insert(pair<string,string>("sourcedescription", source->Description() ? source->Description() : ""));
+        stringTokens.insert(pair<string,string>("source", *cSource::ToString(source->Code())));
+        intTokens.insert(pair<string,int>("isAtsc", source->IsAtsc(source->Code())));
+        intTokens.insert(pair<string,int>("isCable", source->IsCable(source->Code())));
+        intTokens.insert(pair<string,int>("isSat", source->IsSat(source->Code())));
+        intTokens.insert(pair<string,int>("isTerr", source->IsTerr(source->Code())));
+    }
+
+    //current schedule
+    cSchedulesLock schedulesLock;
+    const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
+    const cSchedule *schedule = NULL;
+    schedule = schedules->GetSchedule(channel);
+    bool inserted = false;
+    if (schedule) {
+        const cEvent *presentEvent = schedule->GetPresentEvent();
+        if (presentEvent) {
+            stringTokens.insert(pair<string,string>("presenteventtitle", presentEvent->Title() ? presentEvent->Title() : ""));
+            stringTokens.insert(pair<string,string>("presenteventstart", *presentEvent->GetTimeString()));
+            stringTokens.insert(pair<string,string>("presenteventstop", *presentEvent->GetEndTimeString()));
+            inserted = true;
+        }
+    }
+    if (!inserted) {
+        stringTokens.insert(pair<string,string>("presenteventtitle", ""));
+        stringTokens.insert(pair<string,string>("presenteventstart", ""));
+        stringTokens.insert(pair<string,string>("presenteventstop", ""));        
+    }
+}
+
+
+void cDisplayMenuItemChannelsView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemChannelsView::Render(void) {
+
+    DrawListItem(&stringTokens, &intTokens);
+    
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentChannelView(tmplCurrent, channel);
+            currentView->Start();
+        }
+    }
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemChannelsView::Debug(void) {
+    esyslog("skindesigner: Channels Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: Channel: %s", channel ? channel->Name() : "Channel is NULL");
+}
+
+/*************************************************************
+* Private Functions
+*************************************************************/
+
+/*************************************************************
+* cDisplayMenuItemTimersView
+*************************************************************/
+
+cDisplayMenuItemTimersView::cDisplayMenuItemTimersView(cTemplateViewList *tmplList, const cTimer *timer, bool current, bool selectable) 
+                                                           : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->timer = timer;
+}
+
+cDisplayMenuItemTimersView::~cDisplayMenuItemTimersView() {
+}
+
+void cDisplayMenuItemTimersView::SetTokens(void) {
+    if (!timer)
+        return;
+    if (!itemInit) {
+        intTokens.erase("flagactive");    
+        intTokens.insert(pair<string,int>("flagactive", timer->HasFlags(tfActive)));
+        return;
+    }
+    itemInit = false;
+ 
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+    intTokens.insert(pair<string,int>("flagactive", timer->HasFlags(tfActive)));
+    intTokens.insert(pair<string,int>("flaginstant", timer->HasFlags(tfInstant)));
+    intTokens.insert(pair<string,int>("flagvps", timer->HasFlags(tfVps)));
+    intTokens.insert(pair<string,int>("flagrecording", timer->Recording()));
+    intTokens.insert(pair<string,int>("flagpending", timer->Pending()));
+
+    
+    const char *file = Setup.FoldersInTimerMenu ? NULL : strrchr(timer->File(), FOLDERDELIMCHAR);
+    if (file && strcmp(file + 1, TIMERMACRO_TITLE) && strcmp(file + 1, TIMERMACRO_EPISODE))
+        file++;
+    else
+        file = timer->File();
+    stringTokens.insert(pair<string,string>("title", file));
+    stringTokens.insert(pair<string,string>("timerstart", *cString::sprintf("%02d:%02d", timer->Start() / 100, timer->Start() % 100)));
+    stringTokens.insert(pair<string,string>("timerstop", *cString::sprintf("%02d:%02d", timer->Stop() / 100, timer->Stop() % 100)));
+
+    string day = "";
+    string dayName = "";
+    if (timer->WeekDays())
+        day = timer->PrintDay(0, timer->WeekDays(), false);
+    else if (timer->Day() - time(NULL) < 28 * SECSINDAY) {
+        day = itoa(timer->GetMDay(timer->Day()));
+        dayName = WeekDayName(timer->Day());
+    } else {
+        struct tm tm_r;
+        time_t Day = timer->Day();
+        localtime_r(&Day, &tm_r);
+        char buffer[16];
+        strftime(buffer, sizeof(buffer), "%Y%m%d", &tm_r);
+        day = buffer;
+    }
+    
+    struct tm tm_r;
+    time_t timerDate = timer->Day();
+    localtime_r(&timerDate, &tm_r);
+    char buffer[4];
+    strftime(buffer, sizeof(buffer), "%m", &tm_r);
+    int month = atoi(buffer);
+    char buffer2[6];
+    strftime(buffer2, sizeof(buffer2), "%b", &tm_r);
+    string monthName = buffer2;
+    char buffer3[6];
+    strftime(buffer3, sizeof(buffer3), "%Y", &tm_r);
+    int year = atoi(buffer3);
+
+    stringTokens.insert(pair<string,string>("day", day));
+    stringTokens.insert(pair<string,string>("dayname", dayName));
+    intTokens.insert(pair<string,int>("month", month));
+    stringTokens.insert(pair<string,string>("monthname", monthName));
+    intTokens.insert(pair<string,int>("year", year));
+
+    const cChannel *channel = timer->Channel();
+    if (channel) {
+        stringTokens.insert(pair<string,string>("channelname", channel->Name() ? channel->Name() : ""));
+        string channelID = *(channel->GetChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+        intTokens.insert(pair<string,int>("channelnumber", channel->Number()));
+    } else {
+        stringTokens.insert(pair<string,string>("channelname", ""));
+        stringTokens.insert(pair<string,string>("channelid", ""));
+        intTokens.insert(pair<string, int>("channellogoexists", 0));
+        intTokens.insert(pair<string,int>("channelnumber", 0));        
+    }
+
+    const cEvent *event = timer->Event();
+    if (event) {
+        stringTokens.insert(pair<string,string>("eventtitle", event->Title() ? event->Title() : ""));
+        stringTokens.insert(pair<string,string>("eventstart", *event->GetTimeString()));
+        stringTokens.insert(pair<string,string>("eventstop", *event->GetEndTimeString()));
+    } else {
+        stringTokens.insert(pair<string,string>("eventtitle", ""));
+        stringTokens.insert(pair<string,string>("eventtitle", ""));
+        stringTokens.insert(pair<string,string>("eventstop", ""));
+    }
+}
+
+
+void cDisplayMenuItemTimersView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemTimersView::Render(void) {
+
+    DrawListItem(&stringTokens, &intTokens);
+    
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentTimerView(tmplCurrent, timer);
+            currentView->Start();
+        }
+    }
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemTimersView::Debug(void) {
+    esyslog("skindesigner: Timers Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: Timer: %s", timer ? *(timer->ToDescr()) : "Timer is NULL");
+}
+
+/*************************************************************
+* Private Functions
+*************************************************************/
+
+
+/*************************************************************
+* cDisplayMenuItemRecordingView
+*************************************************************/
+
+cDisplayMenuItemRecordingView::cDisplayMenuItemRecordingView(cTemplateViewList *tmplList, const cRecording *recording, int level, int total, int newRecs, bool current, bool selectable) 
+                                                           : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->recording = recording;
+    this->level = level;
+    this->total = total;
+    this->newRecs = newRecs;
+}
+
+cDisplayMenuItemRecordingView::~cDisplayMenuItemRecordingView() {
+}
+
+void cDisplayMenuItemRecordingView::SetTokens(void) {
+    if (!itemInit) return;
+    itemInit = false;
+    if (!recording) return;
+
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+    bool isFolder = (total > 0) ? true : false;
+    intTokens.insert(pair<string,int>("folder", isFolder));
+
+    string name = recording->Name() ? recording->Name() : "";
+    string buffer = "";
+    stringstream folderName;
+    try {
+        vector<string> tokens;
+        istringstream f(name.c_str());
+        string s;
+        int i=0;
+        while (getline(f, s, FOLDERDELIMCHAR)) {
+            tokens.push_back(s);
+            if (isFolder && i <= level) {
+                if (i > 0)
+                    folderName << FOLDERDELIMCHAR;
+                folderName << s;
+                i++;
+            }
+        }
+        buffer = tokens.at(level);
+        if (!isFolder && recording->IsEdited()) {
+            buffer = buffer.substr(1);
+        }
+    } catch (...) {
+        buffer = name.c_str();
+    }
+
+    const cRecording *usedRecording = recording;
+
+    if (isFolder) {
+        cRecordingsFolderInfo::cFolderInfo *folderInfo = recFolderInfo.Get(folderName.str().c_str());
+        if (folderInfo) {
+            cRecording *newestRec = Recordings.GetByName(*folderInfo->LatestFileName);
+            if (newestRec) {
+                usedRecording = newestRec;
+            }
+            delete folderInfo;
+        }
+    }
+
+    stringTokens.insert(pair<string,string>("name", buffer.c_str()));
+    intTokens.insert(pair<string,int>("new", usedRecording->IsNew()));
+    intTokens.insert(pair<string,int>("newrecordingsfolder", newRecs));
+    intTokens.insert(pair<string,int>("numrecordingsfolder", total));
+    intTokens.insert(pair<string,int>("cutted", usedRecording->IsEdited()));
+
+    const cEvent *event = NULL;
+    const cRecordingInfo *info = usedRecording->Info();
+    if (!info) return;
+    event = info->GetEvent();
+    if (!event) return;
+
+
+    string recDate = *(event->GetDateString());
+    string recTime = *(event->GetTimeString());
+    if (recDate.find("1970") != string::npos) {
+        time_t start = usedRecording->Start();
+        recDate = *DateString(start);
+        recTime = *TimeString(start);
+    }
+
+    time_t startTime = event->StartTime();
+    struct tm * sStartTime = localtime(&startTime);
+    intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+    intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+    intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+
+    int duration = event->Duration() / 60;
+    int recDuration = usedRecording->LengthInSeconds();
+    recDuration = (recDuration>0)?(recDuration / 60):0;
+    stringTokens.insert(pair<string,string>("date", recDate.c_str()));
+    stringTokens.insert(pair<string,string>("time", recTime.c_str()));
+    intTokens.insert(pair<string,int>("duration", recDuration));
+    intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+    stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+    intTokens.insert(pair<string,int>("durationevent", duration));
+    intTokens.insert(pair<string,int>("durationeventhours", duration / 60));
+    stringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
+
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (!pScraper || !usedRecording) {
+        intTokens.insert(pair<string,int>("hasposterthumbnail", false));
+        intTokens.insert(pair<string,int>("thumbnailbwidth", -1));
+        intTokens.insert(pair<string,int>("thumbnailheight", -1));
+        stringTokens.insert(pair<string,string>("thumbnailpath", ""));
+        return;
+    }
+
+    ScraperGetPosterThumb call;
+    call.event = NULL;
+    call.recording = usedRecording;
+    if (pScraper->Service("GetPosterThumb", &call)) {
+        intTokens.insert(pair<string,int>("hasposterthumbnail", FileExists(call.poster.path)));
+        intTokens.insert(pair<string,int>("thumbnailbwidth", call.poster.width));
+        intTokens.insert(pair<string,int>("thumbnailheight", call.poster.height));
+        stringTokens.insert(pair<string,string>("thumbnailpath", call.poster.path));
+    } else {
+        intTokens.insert(pair<string,int>("hasposterthumbnail", false));
+        intTokens.insert(pair<string,int>("thumbnailbwidth", -1));
+        intTokens.insert(pair<string,int>("thumbnailheight", -1));
+        stringTokens.insert(pair<string,string>("thumbnailpath", ""));
+    }
+}
+
+
+void cDisplayMenuItemRecordingView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemRecordingView::Render(void) {
+    
+    DrawListItem(&stringTokens, &intTokens);
+    
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentRecordingView(tmplCurrent, recording, level, total, newRecs);
+            currentView->Start();
+        }
+    }
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemRecordingView::Debug(void) {
+    esyslog("skindesigner: Recording Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: Recording: %s", recording ? recording->Title() : "Recording is NULL");
+}
+
+/*************************************************************
+* cDisplayMenuItemPluginView
+*************************************************************/
+
+cDisplayMenuItemPluginView::cDisplayMenuItemPluginView(cTemplateViewList *tmplList, map<string,string> *plugStringTokens, map<string,int> *plugIntTokens, 
+                                                       map<string,vector<map<string,string> > > *pluginLoopTokens, int index, bool current, bool selectable) 
+                                                       : cDisplayMenuItemView(tmplList, current, selectable) {
+
+    for (map<string,string>::iterator it = plugStringTokens->begin(); it != plugStringTokens->end(); it++) {
+        stringTokens.insert(pair<string,string>(it->first, it->second));
+    }
+
+    for (map<string,int>::iterator it = plugIntTokens->begin(); it != plugIntTokens->end(); it++) {
+        intTokens.insert(pair<string,int>(it->first, it->second));
+    }
+
+    for(map<string,vector<map<string,string> > >::iterator it = pluginLoopTokens->begin(); it != pluginLoopTokens->end(); it++) {
+        loopTokens.insert(pair<string,vector<map<string,string> > >(it->first, it->second));
+    }
+}
+
+cDisplayMenuItemPluginView::~cDisplayMenuItemPluginView() {
+}
+
+void cDisplayMenuItemPluginView::SetTokens(void) {
+    if (!itemInit) return;
+    itemInit = false;
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("nummenuitem", num+1));
+}
+
+
+void cDisplayMenuItemPluginView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemPluginView::Render(void) {
+    
+    DrawListItem(&stringTokens, &intTokens);
+    
+    if (current) {
+        cTemplateViewElement *tmplCurrent = tmplList->GetListElementCurrent();
+        if (tmplCurrent) {
+            currentView = new cDisplayMenuItemCurrentPluginView(tmplCurrent, stringTokens, intTokens, loopTokens);
+            currentView->Start();
+        }
+    }
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemPluginView::Debug(void) {
+    esyslog("skindesigner: Plugin Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+}
+
+/*************************************************************
+* cDisplayMenuItemTrackView
+*************************************************************/
+
+cDisplayMenuItemTrackView::cDisplayMenuItemTrackView(cTemplateViewList *tmplList, const char *title, bool current, bool selectable, int numTracks) 
+                                                           : cDisplayMenuItemView(tmplList, current, selectable) {
+    this->title = title;
+    this->numTracks = numTracks;
+}
+
+cDisplayMenuItemTrackView::~cDisplayMenuItemTrackView() {
+}
+
+void cDisplayMenuItemTrackView::SetTokens(void) {
+    if (!itemInit) return;
+    itemInit = false;
+    if (!title) return;
+
+    stringTokens.insert(pair<string,string>("title", title));
+}
+
+
+void cDisplayMenuItemTrackView::Prepare(void) {
+    ArrangeContainer();
+}
+
+void cDisplayMenuItemTrackView::Render(void) {
+    
+    DrawListItem(&stringTokens, &intTokens);
+    
+    dirty = false;
+}
+
+void cDisplayMenuItemTrackView::Debug(void) {
+    esyslog("skindesigner: Tracks Menu Item ---------------");
+    cDisplayMenuItemView::Debug();
+    esyslog("skindesigner: Title: %s", title);
+}
+
diff --git a/views/displaymenuitemview.h b/views/displaymenuitemview.h
new file mode 100644
index 0000000..e9cfd5f
--- /dev/null
+++ b/views/displaymenuitemview.h
@@ -0,0 +1,154 @@
+#ifndef __DISPLAYMENUITEMVIEW_H
+#define __DISPLAYMENUITEMVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "displaymenuitemcurrentview.h"
+
+class cDisplayMenuItemView : public cViewListItem {
+private:
+protected:
+    bool itemInit;
+    bool dirty;
+    bool current;
+    bool selectable;
+    int num;
+    cTemplateViewList *tmplList;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    cDisplayMenuItemCurrentView *currentView;
+    virtual void Action(void);
+public:
+    cDisplayMenuItemView(cTemplateViewList *tmplList, bool current, bool selectable);
+    virtual ~cDisplayMenuItemView();
+    void SetCurrent(bool cur);
+    void SetNumber(int n) { num = n; };
+    void ArrangeContainer(void);
+    bool Current(void) { return current; };
+    void PrepareScrolling(void);
+    void EndScrolling(void);
+    virtual void SetTokens(void) {};
+    virtual void Prepare(void) {};
+    virtual void Render(void) {};
+    virtual void Clear(void);
+    bool Dirty(void) { return dirty; };
+    void Stop(void);
+    virtual void Debug(void);
+};
+
+class cDisplayMenuItemDefaultView: public cDisplayMenuItemView {
+private:
+    int *tabs;
+    int *tabWidths;
+    string *tabTexts;
+    int maxTabs;
+public:
+    cDisplayMenuItemDefaultView(cTemplateViewList *tmplList, string *tabTexts, int *tabs, int *tabWidths, bool current, bool selectable);
+    virtual ~cDisplayMenuItemDefaultView();
+    void SetTabTexts(string *tabTexts);
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemMainView: public cDisplayMenuItemView {
+private:
+    string text;
+    string number;
+    string label;
+    string icon;
+    void SplitMenuText(void);
+public:
+    cDisplayMenuItemMainView(cTemplateViewList *tmplList, string itemText, bool current, bool selectable);
+    virtual ~cDisplayMenuItemMainView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemSchedulesView: public cDisplayMenuItemView {
+private:
+    const cEvent *event;
+    const cChannel *channel;
+    eTimerMatch timerMatch;
+    eMenuCategory cat;
+    bool isEpgSearchFav;
+    string ParseSeparator(string sep);
+public:
+    cDisplayMenuItemSchedulesView(cTemplateViewList *tmplList, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, 
+                                  eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable);
+    virtual ~cDisplayMenuItemSchedulesView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemChannelsView: public cDisplayMenuItemView {
+private:
+    const cChannel *channel;
+    bool withProvider;
+public:
+    cDisplayMenuItemChannelsView(cTemplateViewList *tmplList, const cChannel *channel, bool withProvider, bool current, bool selectable);
+    virtual ~cDisplayMenuItemChannelsView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemTimersView: public cDisplayMenuItemView {
+private:
+    const cTimer *timer;
+public:
+    cDisplayMenuItemTimersView(cTemplateViewList *tmplList, const cTimer *timer, bool current, bool selectable);
+    virtual ~cDisplayMenuItemTimersView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemRecordingView: public cDisplayMenuItemView {
+private:
+    const cRecording *recording;
+    int level;
+    int total;
+    int newRecs;
+public:
+    cDisplayMenuItemRecordingView(cTemplateViewList *tmplList, const cRecording *recording, int level, int total, int newRecs, bool current, bool selectable);
+    virtual ~cDisplayMenuItemRecordingView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemPluginView: public cDisplayMenuItemView {
+private:
+    map<string,vector<map<string,string> > > loopTokens;
+public:
+    cDisplayMenuItemPluginView(cTemplateViewList *tmplList, map<string,string> *plugStringTokens, map<string,int> *plugIntTokens, map<string,vector<map<string,string> > > *pluginLoopTokens, int index, bool current, bool selectable);
+    virtual ~cDisplayMenuItemPluginView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+class cDisplayMenuItemTrackView: public cDisplayMenuItemView {
+private:
+    const char *title;
+    int numTracks;
+public:
+    cDisplayMenuItemTrackView(cTemplateViewList *tmplList, const char *title, bool current, bool selectable, int numTracks);
+    virtual ~cDisplayMenuItemTrackView();
+    void SetTokens(void);
+    void Prepare(void);
+    void Render(void);
+    void Debug(void);
+};
+
+#endif //__DISPLAYMENUITEMVIEW_H
diff --git a/views/displaymenulistview.c b/views/displaymenulistview.c
new file mode 100644
index 0000000..3a51b82
--- /dev/null
+++ b/views/displaymenulistview.c
@@ -0,0 +1,243 @@
+#include <vdr/menu.h>
+#include "displaymenulistview.h"
+
+
+cDisplayMenuListView::cDisplayMenuListView(cTemplateViewList *tmplList, int count) {
+    oneColumn = true;
+    this->tmplList = tmplList;
+    if (count < 0) {
+        //if count is not set, the fixed number of items is configured in the template
+        itemCount = tmplList->GetNumericParameter(ptNumElements);
+    } else {
+        //else use the actual numbers of elements
+        itemCount = count;
+        map < string, int > intTokens;
+        intTokens.insert(pair<string,int>("numelements", count));
+        tmplList->CalculateListParameters(&intTokens);
+    }
+    menuItems = new cDisplayMenuItemView*[itemCount];
+    for (int i=0; i<itemCount; i++)
+        menuItems[i] = NULL;
+    tabs = new int[cSkinDisplayMenu::MaxTabs];
+    for (int i=0; i<cSkinDisplayMenu::MaxTabs; i++)
+        tabs[i] = 0;
+    tabWidths = new int[cSkinDisplayMenu::MaxTabs];
+    for (int i=0; i<cSkinDisplayMenu::MaxTabs; i++)
+        tabWidths[i] = 0;
+}
+
+cDisplayMenuListView::~cDisplayMenuListView() {
+    Clear();
+    delete[] menuItems;
+    delete[] tabs;
+    delete[] tabWidths;
+}
+
+void cDisplayMenuListView::SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5) {
+
+    int menuItemWidth = 1920;
+    int averageFontWidth = 20;
+    if (tmplList) {
+        menuItemWidth = tmplList->GetMenuItemWidth();
+        averageFontWidth = tmplList->GetAverageFontWidth();
+    }
+
+    if (!tab1) {
+        tabs[0] = 0;
+        tabWidths[0] = menuItemWidth;
+    } else {
+        tabs[0] = 0;
+        if (!tab2) {
+            tabs[1] = menuItemWidth/2;
+            tabWidths[0] = tabs[1];
+            tabWidths[1] = tabs[1];        
+        } else {
+            tabs[0] = 0;
+            tabs[1] = tab1 ? tabs[0] + tab1 : 0;
+            tabs[2] = tab2 ? tabs[1] + tab2 : 0;
+            tabs[3] = tab3 ? tabs[2] + tab3 : 0;
+            tabs[4] = tab4 ? tabs[3] + tab4 : 0;
+            tabs[5] = tab5 ? tabs[4] + tab5 : 0;
+            for (int i = 1; i < cSkinDisplayMenu::MaxTabs; i++)
+                tabs[i] *= averageFontWidth;
+
+            for (int i = 0; i < cSkinDisplayMenu::MaxTabs; i++) {
+                if (i == cSkinDisplayMenu::MaxTabs - 1) {
+                    tabWidths[i] = menuItemWidth - tabs[i];
+                } else {
+                    tabWidths[i] = tabs[i+1] - tabs[i];
+                }
+            }
+        }
+    }
+}
+
+int cDisplayMenuListView::GetListWidth(void) {
+    if (tmplList) {
+        return tmplList->GetMenuItemWidth();
+    }
+    return 1920;
+}
+
+
+void cDisplayMenuListView::Clear(void) {
+    for (int i=0; i<itemCount; i++) {
+        if (menuItems[i]) {
+            delete menuItems[i];
+            menuItems[i] = NULL;
+        }
+    }
+    oneColumn = true;
+    for (int i=0; i<cSkinDisplayMenu::MaxTabs; i++) {
+        tabs[i] = 0;
+        tabWidths[i] = 0;
+    }
+}
+
+void cDisplayMenuListView::AddDefaultMenuItem(int index, string *tabTexts, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        cDisplayMenuItemDefaultView *menuItem = dynamic_cast<cDisplayMenuItemDefaultView*>(menuItems[index]);
+        if (!menuItem)
+            return;
+        menuItem->SetCurrent(current);
+        menuItem->SetTabTexts(tabTexts);
+        return;
+    }
+    for (int i=1; i<cSkinDisplayMenu::MaxTabs; i++) {
+        if (tabTexts[i].size() > 0) {
+            oneColumn = false;
+            break;
+        }
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemDefaultView(tmplList, tabTexts, tabs, tabWidths, current, selectable);
+    menuItems[index] = item;
+}
+
+void cDisplayMenuListView::AddMainMenuItem(int index, const char *itemText, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemMainView(tmplList, itemText, current, selectable);
+    menuItems[index] = item;
+}
+
+void cDisplayMenuListView::AddSetupMenuItem(int index, const char *itemText, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemMainView(tmplList, itemText, current, selectable);
+    menuItems[index] = item;
+}
+
+void cDisplayMenuListView::AddSchedulesMenuItem(int index, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, 
+                                                eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemSchedulesView(tmplList, event, channel, timerMatch, cat, isEpgSearchFav, current, selectable);
+    menuItems[index] = item;
+}
+
+void cDisplayMenuListView::AddChannelsMenuItem(int index, const cChannel *channel, bool withProvider, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemChannelsView(tmplList, channel, withProvider, current, selectable);
+    menuItems[index] = item;    
+}
+
+void cDisplayMenuListView::AddTimersMenuItem(int index, const cTimer *timer, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemTimersView(tmplList, timer, current, selectable);
+    menuItems[index] = item;        
+}
+
+void cDisplayMenuListView::AddRecordingMenuItem(int index, const cRecording *recording, int level, int total, int isNew, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemRecordingView(tmplList, recording, level, total, isNew, current, selectable);
+    menuItems[index] = item;            
+}
+
+void cDisplayMenuListView::AddPluginMenuItem(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int index, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemPluginView(tmplList, stringTokens, intTokens, loopTokens, index, current, selectable);
+    menuItems[index] = item;
+}
+
+void cDisplayMenuListView::AddTracksMenuItem(int index, const char *title, bool current, bool selectable) {
+    if (index >= itemCount)
+        return;
+    if (menuItems[index]) {
+        menuItems[index]->SetCurrent(current);
+        return;
+    }
+    cDisplayMenuItemView *item = new cDisplayMenuItemTrackView(tmplList, title, current, selectable, itemCount);
+    menuItems[index] = item;            
+}
+
+void cDisplayMenuListView::Render(void) {
+    if (tabs[1] && oneColumn) {
+        tabs[0] = 0;
+        tabWidths[0] = tmplList->GetMenuItemWidth();
+        for (int i=1; i<cSkinDisplayMenu::MaxTabs; i++) {
+            tabs[i] = 0;
+            tabWidths[i] = 0;
+        }
+    }
+    int current = -1;
+    for (int i=0; i<itemCount; i++) {
+        if (menuItems[i] && menuItems[i]->Dirty()) {
+            menuItems[i]->Clear();
+            menuItems[i]->SetNumber(i);
+            menuItems[i]->Prepare();
+            menuItems[i]->SetTokens();
+            menuItems[i]->Render();
+            if (menuItems[i]->Current()) {
+                current = i;
+            } else {
+                menuItems[i]->Stop();
+            }
+        }
+    }
+    if (current > -1) {
+        menuItems[current]->Start();        
+    }
+}
+
+void cDisplayMenuListView::Debug(void) {
+    for (int i=0; i<itemCount; i++) {
+        esyslog("skindesigner: item %d", i);
+        if (menuItems[i]) {
+            menuItems[i]->Debug();
+        }
+    }
+}
diff --git a/views/displaymenulistview.h b/views/displaymenulistview.h
new file mode 100644
index 0000000..a407020
--- /dev/null
+++ b/views/displaymenulistview.h
@@ -0,0 +1,36 @@
+#ifndef __DISPLAYMENULISTVIEW_H
+#define __DISPLAYMENULISTVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "displaymenuitemview.h"
+
+class cDisplayMenuListView {
+private:
+    cTemplateViewList *tmplList;
+    int itemCount;
+    cDisplayMenuItemView **menuItems;
+    int *tabs;
+    int *tabWidths;
+    bool oneColumn;
+public:
+    cDisplayMenuListView(cTemplateViewList *tmplList, int count = -1);
+    virtual ~cDisplayMenuListView();
+    void Clear(void);
+    void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5);
+    int GetMaxItems(void) { return itemCount; };
+    int GetListWidth(void);
+    void AddDefaultMenuItem(int index, string *tabTexts, bool current, bool selectable);
+    void AddMainMenuItem(int index, const char *itemText, bool current, bool selectable);
+    void AddSetupMenuItem(int index, const char *itemText, bool current, bool selectable);
+    void AddSchedulesMenuItem(int index, const cEvent *event, const cChannel *channel, eTimerMatch timerMatch, eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable);
+    void AddChannelsMenuItem(int index, const cChannel *channel, bool withProvider, bool current, bool selectable);
+    void AddTimersMenuItem(int index, const cTimer *timer, bool current, bool selectable);
+    void AddRecordingMenuItem(int index, const cRecording *recording, int level, int total, int isNew, bool current, bool selectable);
+    void AddPluginMenuItem(map<string,string> *stringTokens, map<string,int> *intTokens, map<string, vector<map<string,string> > > *loopTokens, int index, bool current, bool selectable);
+    void AddTracksMenuItem(int index, const char *title, bool current, bool selectable);
+    void Render(void);
+    void Debug(void);
+};
+
+#endif //__DISPLAYMENULISTVIEW_H
diff --git a/views/displaymenurootview.c b/views/displaymenurootview.c
new file mode 100644
index 0000000..4caf2e5
--- /dev/null
+++ b/views/displaymenurootview.c
@@ -0,0 +1,627 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include <vdr/videodir.h>
+#include "displaymenurootview.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+
+cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(rootView) {
+    cat = mcUndefined;
+    viewType = svUndefined;
+    subView = NULL;
+    subViewAvailable = false;
+    pluginName = "";
+    pluginMenu = -1;
+    pluginMenuType = mtUnknown;
+    pluginMenuChanged = false;
+    view = NULL;
+    listView = NULL;
+    detailView = NULL;
+    buttonTexts[0] = "";
+    buttonTexts[1] = "";
+    buttonTexts[2] = "";
+    buttonTexts[3] = "";
+    defaultBackgroundDrawn = false;
+    defaultHeaderDrawn = false;
+    defaultButtonsDrawn = false;
+    defaultDateTimeDrawn = false;
+    defaultMessageDrawn = false;
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayMenuRootView::~cDisplayMenuRootView() {
+    if (view) {
+        delete view;
+        view = NULL;
+    }
+    if (listView) {
+        delete listView;
+        listView = NULL;
+    }
+    if (detailView) {
+        delete detailView;
+        detailView = NULL;
+    }
+}
+
+/*******************************************************************
+* Public Functions
+*******************************************************************/
+
+bool cDisplayMenuRootView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+/* Categories:
+-1 mcUndefined,
+0  mcUnknown,
+1  mcMain,
+2  mcSchedule,
+3  mcScheduleNow,
+4  mcScheduleNext,
+5  mcChannel,
+6  mcChannelEdit,
+7  mcTimer,
+8  mcTimerEdit,
+9  mcRecording,
+10 mcRecordingInfo,
+11 mcRecordingEdit,
+12 mcPlugin,
+13 mcPluginSetup,
+14 mcSetup,
+15 mcSetupOsd,
+16 mcSetupEpg,
+17 mcSetupDvb,
+18 mcSetupLnb,
+19 mcSetupCam,
+20 mcSetupRecord,
+21 mcSetupReplay,
+22 mcSetupMisc,
+23 mcSetupPlugins,
+24 mcCommand,
+25 mcEvent,
+26 mcText,
+27 mcFolder,
+28 mcCam
+*/
+
+void cDisplayMenuRootView::SetMenu(eMenuCategory menuCat, bool menuInit) {
+    eSubView newViewType = svUndefined;
+    cat = menuCat;
+    bool isListView = true;
+    if (menuCat != mcPlugin) {
+        pluginName = "";
+        pluginMenu = -1;
+        pluginMenuType = mtUnknown;
+        pluginMenuChanged = false;
+    }
+    switch (menuCat) {
+        case mcMain:
+            newViewType = svMenuMain;
+            break;
+       case mcSetup:
+            newViewType = svMenuSetup;
+            break;
+        case mcSchedule:
+        case mcScheduleNow:
+        case mcScheduleNext:
+            newViewType = svMenuSchedules;
+            if (view)
+                view->SetMenuCat(menuCat);
+            break;
+        case mcChannel:
+            newViewType = svMenuChannels;
+            break;
+        case mcTimer:
+            newViewType = svMenuTimers;
+            break;
+        case mcRecording:
+            newViewType = svMenuRecordings;
+            break;
+        case mcEvent:
+            newViewType = svMenuDetailedEpg;
+            isListView = false;
+            break;
+        case mcRecordingInfo:
+            newViewType = svMenuDetailedRecording;
+            isListView = false;
+            break;
+        case mcText:
+            newViewType = svMenuDetailedText;
+            isListView = false;
+            break;
+        case mcPlugin:
+            newViewType = svMenuPlugin;
+            isListView = ( pluginMenuType == mtList ) ? true : false;
+            break;
+        default:
+            newViewType = svMenuDefault;
+            break;
+    }
+    if (newViewType != viewType || pluginMenuChanged) {
+        if (newViewType == svMenuPlugin) {
+            subView = tmplView->GetPluginView(pluginName, pluginMenu);
+            if (!subView) {
+                subViewAvailable = false;
+                if (isListView)
+                    subView = tmplView->GetSubView(svMenuDefault);
+                else
+                    subView = tmplView->GetSubView(svMenuDetailedText);
+            } else {
+                subViewAvailable = true;
+            }
+        } else {
+            subView = tmplView->GetSubView(newViewType);
+            if (!subView) {
+                subViewAvailable = false;
+                subView = tmplView->GetSubView(svMenuDefault);
+            } else {
+                subViewAvailable = true;
+            }
+        }
+        //Cleanup
+        if (view) {
+            delete view;
+            view = NULL;
+        }
+        if (listView) {
+            delete listView;
+            listView = NULL;
+        }
+        if (detailView) {
+            delete detailView;
+            detailView = NULL;
+        }
+        //Create new View
+        switch (newViewType) {
+            case svMenuMain:
+                view = new cDisplayMenuMainView(subView, menuInit);
+                break;
+            case svMenuSchedules:
+                if (subViewAvailable)
+                    view = new cDisplayMenuSchedulesView(subView, menuCat, menuInit);
+                else
+                    view = new cDisplayMenuView(subView, menuInit);
+                break;
+            default:
+                view = new cDisplayMenuView(subView, menuInit);
+        }
+        view->SetMenuCat(cat);
+        view->SetButtonTexts(buttonTexts);
+        //Cleanup root view
+        ClearRootView();
+        if (isListView) {
+            //Create menu item list
+            cTemplateViewList *tmplMenuItems = subView->GetViewList(vlMenuItem);
+            if (!tmplMenuItems)
+                return;
+            listView = new cDisplayMenuListView(tmplMenuItems);
+        } else {
+            //Create detailed view
+            detailView = new cDisplayMenuDetailView(subView);
+        }
+        viewType = newViewType;
+    }
+}
+
+void cDisplayMenuRootView::CorrectDefaultMenu(void) {
+    if (viewType > svMenuDefault && viewType != svMenuPlugin) {
+        SetMenu(mcUnknown, true);
+    }
+}
+
+void cDisplayMenuRootView::SetPluginMenu(string name, int menu, int type) {
+    if (pluginName.compare(name) || menu != pluginMenu || type != pluginMenuType)
+        pluginMenuChanged = true;
+    else
+        pluginMenuChanged = false;
+    pluginName = name; 
+    pluginMenu = menu; 
+    pluginMenuType = (ePluginMenuType)type;
+}
+
+void cDisplayMenuRootView::SetTitle(const char *title) {
+    menuTitle = title;
+    if (view)
+        view->SetTitle(title);
+}
+
+void cDisplayMenuRootView::SetButtonTexts(const char *Red, const char *Green, const char *Yellow, const char *Blue) {
+    if (Red)
+        buttonTexts[0] = Red;
+    else
+        buttonTexts[0] = "";
+    if (Green)
+        buttonTexts[1] = Green;
+    else
+        buttonTexts[1] = "";
+    if (Yellow)
+        buttonTexts[2] = Yellow;
+    else
+        buttonTexts[2] = "";
+    if (Blue)
+        buttonTexts[3] = Blue;
+    else
+        buttonTexts[3] = "";
+    if (view)
+        view->SetButtonTexts(buttonTexts);
+}
+
+void cDisplayMenuRootView::SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5) {
+    if (listView) {
+        listView->SetTabs(tab1, tab2, tab3, tab4, tab5);
+    }  
+}
+
+void cDisplayMenuRootView::SetMessage(eMessageType type, const char *text) {
+    if (!view)
+        return;
+    if (!view->DrawMessage(type, text)) {
+        defaultMessageDrawn = true;
+        DrawMessage(type, text);
+    } else {
+        defaultMessageDrawn = false;
+    }
+}
+
+void cDisplayMenuRootView::SetDetailedViewEvent(const cEvent *event) {
+    if (!detailView) {
+        if (viewType != svMenuDetailedEpg) {
+            SetMenu(mcEvent, true);
+        } else {
+            detailView = new cDisplayMenuDetailView(subView);
+        }
+    }
+    detailView->SetEvent(event);
+}
+
+void cDisplayMenuRootView::SetDetailedViewRecording(const cRecording *recording) {
+    if (!detailView) {
+        if (viewType != svMenuDetailedRecording) {
+            SetMenu(mcRecordingInfo, true);
+        } else {
+            detailView = new cDisplayMenuDetailView(subView);
+        }
+    }
+    detailView->SetRecording(recording);
+}
+
+void cDisplayMenuRootView::SetDetailedViewText(const char *text) {
+    if (!detailView) {
+        if (viewType != svMenuDetailedText) {
+            SetMenu(mcText, true);
+        } else {
+            detailView = new cDisplayMenuDetailView(subView);
+        }
+    }
+    detailView->SetText(text);
+}
+
+bool cDisplayMenuRootView::SetDetailedViewPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens) {
+    if (!detailView) {
+        SetMenu(mcPlugin, true);
+    }
+    if (!subViewAvailable)
+        return false;
+    detailView->SetPluginTokens(stringTokens, intTokens, loopTokens);
+    return true;
+}
+
+void cDisplayMenuRootView::KeyInput(bool up, bool page) {
+    if (!detailView)
+        return;
+
+    if (up && page) {
+        detailView->KeyLeft();
+    } else if (!up && page) {
+        detailView->KeyRight();
+    } else if (up && !page) {
+        detailView->KeyUp();
+    } else if (!up && !page) {
+        detailView->KeyDown();
+    }
+}
+
+void cDisplayMenuRootView::Clear(void) {
+    if (view) {
+        view->ClearChannel();
+        view->ClearEpgSearchFavorite();
+    }
+    if (listView) {
+        listView->Clear();
+    }
+    if (detailView) {
+        delete detailView;
+        detailView = NULL;
+    }
+}
+
+void cDisplayMenuRootView::ClearRootView(void) {
+    if (defaultBackgroundDrawn && view && view->BackgroundImplemented())
+        ClearViewElement(veBackground);
+    if (defaultHeaderDrawn)
+        ClearViewElement(veHeader);
+    if (defaultButtonsDrawn)
+        ClearViewElement(veButtons);
+    if (defaultDateTimeDrawn)
+        ClearViewElement(veDateTime);
+    if (defaultMessageDrawn)
+        ClearViewElement(veMessage);
+}
+
+int cDisplayMenuRootView::GetMaxItems(void) {
+    if (listView) {
+        return listView->GetMaxItems();
+    }
+    //wrong menucat
+    SetMenu(mcUnknown, true);
+    return listView->GetMaxItems();
+}
+
+int cDisplayMenuRootView::GetListViewWidth(void) {
+    if (listView) {
+        return listView->GetListWidth();
+    }
+    return 0;    
+}
+
+int cDisplayMenuRootView::GetTextAreaWidth(void) {
+    if (!tmplView)
+        return 1900;
+    cTemplateView *tmplSubView = tmplView->GetSubView(svMenuDefault);
+    if (!tmplSubView)
+        return 1900;
+    int areaWidth = tmplSubView->GetNumericParameter(ptWidth);
+    if (areaWidth > 0)
+        return areaWidth;
+    return 1900;
+}
+
+cFont *cDisplayMenuRootView::GetTextAreaFont(void) {
+    if (!tmplView)
+        return NULL;
+    cTemplateView *tmplSubViewDefault = tmplView->GetSubView(svMenuDefault);
+    if (!tmplSubViewDefault)
+        return NULL;
+
+    cTemplateViewList *tmplViewList = tmplSubViewDefault->GetViewList(vlMenuItem);
+    if (!tmplViewList)
+        return NULL;
+
+    return tmplViewList->GetTextAreaFont();
+}
+
+
+void cDisplayMenuRootView::Render(void) {
+    if (!view)
+        return;
+    if (!view->DrawBackground()) {
+        defaultBackgroundDrawn = true;
+        DrawBackground();
+    } else {
+        defaultBackgroundDrawn = false;
+    }
+
+    if (!view->DrawHeader()) {
+        defaultHeaderDrawn = true;
+        DrawHeader();
+    } else {
+        defaultHeaderDrawn = false;
+    }
+
+    if (!view->DrawColorButtons()) {
+        defaultButtonsDrawn = true;
+        DrawColorButtons();
+    } else {
+        defaultButtonsDrawn = false;
+    }
+
+    view->DrawStaticViewElements();
+    view->DrawDynamicViewElements();
+}
+
+void cDisplayMenuRootView::RenderMenuItems(void) {
+    if (listView)
+        listView->Render();
+}
+
+void cDisplayMenuRootView::RenderDetailView(void) {
+    if (detailView)
+        detailView->Render();
+}
+
+void cDisplayMenuRootView::RenderMenuScrollBar(int Total, int Offset) {
+    if (!listView)
+        return;
+    view->DrawScrollbar(listView->GetMaxItems(), Total, Offset);
+}
+
+bool cDisplayMenuRootView::RenderDynamicElements(void) {
+    if (!view)
+        return false;
+    bool updated = false;
+    if (view->DrawTime()) {
+        updated = true;
+    } else if (DrawTime()) {
+        updated = true;
+    }
+    if (view->DrawDynamicViewElements()){
+        updated = true;
+    }
+
+    if (!view->DrawDateTime()) {
+        defaultDateTimeDrawn = true;
+        DrawDateTime();
+    } else {
+        defaultDateTimeDrawn = false;
+    }
+
+    return updated;
+}
+
+/*******************************************************************
+* Private Functions
+*******************************************************************/
+
+void cDisplayMenuRootView::DrawBackground(void) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+void cDisplayMenuRootView::DrawHeader(void) {
+    if (!ViewElementImplemented(veHeader)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("title", menuTitle));
+    stringTokens.insert(pair<string,string>("vdrversion", VDRVERSION));
+
+    //check for standard menu entries
+    bool hasIcon = false;
+
+    string icon = imgCache->GetIconName(menuTitle, cat);
+    if (imgCache->MenuIconExists(icon))
+        hasIcon = true;
+
+    stringTokens.insert(pair<string,string>("icon", icon));
+    intTokens.insert(pair<string,int>("hasicon", hasIcon));
+
+    //Disc Usage
+    string vdrUsageString = *cVideoDiskUsage::String();
+    int discUsage = cVideoDiskUsage::UsedPercent();
+    bool discAlert = (discUsage > 95) ? true : false;
+    string freeTime = *cString::sprintf("%02d:%02d", cVideoDiskUsage::FreeMinutes() / 60, cVideoDiskUsage::FreeMinutes() % 60);
+    int freeGB = cVideoDiskUsage::FreeMB() / 1024;
+
+    intTokens.insert(pair<string, int>("usedpercent", discUsage));
+    intTokens.insert(pair<string, int>("freepercent", 100-discUsage));
+    intTokens.insert(pair<string, int>("discalert", discAlert));
+    intTokens.insert(pair<string, int>("freegb", freeGB));
+    stringTokens.insert(pair<string,string>("freetime", freeTime));
+    stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
+
+    ClearViewElement(veHeader);
+    DrawViewElement(veHeader, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuRootView::DrawDateTime(void) {
+    if (!ViewElementImplemented(veDateTime)) {
+        return;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    if (!SetDate(stringTokens, intTokens)) {
+        return;
+    }
+
+    ClearViewElement(veDateTime);
+    DrawViewElement(veDateTime, &stringTokens, &intTokens);
+}
+
+bool cDisplayMenuRootView::DrawTime(void) {
+    if (!ViewElementImplemented(veTime)) {
+        return false;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    if (!SetTime(stringTokens, intTokens)) {
+        return false;
+    }
+
+    ClearViewElement(veTime);
+    DrawViewElement(veTime, &stringTokens, &intTokens);
+    return true;
+}
+
+
+void cDisplayMenuRootView::DrawColorButtons(void) {
+    if (!ViewElementImplemented(veButtons)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("red", buttonTexts[0]));
+    stringTokens.insert(pair<string,string>("green", buttonTexts[1]));
+    stringTokens.insert(pair<string,string>("yellow", buttonTexts[2]));
+    stringTokens.insert(pair<string,string>("blue", buttonTexts[3]));
+
+    int colorKeys[4] = { Setup.ColorKey0, Setup.ColorKey1, Setup.ColorKey2, Setup.ColorKey3 };
+
+    for (int button = 1; button < 5; button++) {
+        string red = *cString::sprintf("red%d", button);
+        string green = *cString::sprintf("green%d", button);
+        string yellow = *cString::sprintf("yellow%d", button);
+        string blue = *cString::sprintf("blue%d", button);
+        bool isRed = false;
+        bool isGreen = false;
+        bool isYellow = false;
+        bool isBlue = false;
+        switch (colorKeys[button-1]) {
+            case 0:
+                isRed = true;
+                break;
+            case 1:
+                isGreen = true;
+                break;
+            case 2:
+                isYellow = true;
+                break;
+            case 3:
+                isBlue = true;
+                break;
+            default:
+                break;
+        }
+        intTokens.insert(pair<string, int>(red, isRed));
+        intTokens.insert(pair<string, int>(green, isGreen));
+        intTokens.insert(pair<string, int>(yellow, isYellow));
+        intTokens.insert(pair<string, int>(blue, isBlue));
+    }
+
+    ClearViewElement(veButtons);
+    DrawViewElement(veButtons, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuRootView::DrawMessage(eMessageType type, const char *text) {
+    if (!text) {
+        ClearViewElement(veMessage);
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string, int>("status",  (type == mtStatus)  ? true : false));
+    intTokens.insert(pair<string, int>("info",    (type == mtInfo)    ? true : false));
+    intTokens.insert(pair<string, int>("warning", (type == mtWarning) ? true : false));
+    intTokens.insert(pair<string, int>("error",   (type == mtError)   ? true : false));
+    stringTokens.insert(pair<string,string>("text", text));
+
+    ClearViewElement(veMessage);
+    DrawViewElement(veMessage, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuRootView::Action(void) {
+    if (!view)
+        return;
+    SetInitFinished();
+    Render();
+    view->Start();
+    FadeIn();
+    DoFlush();
+}
diff --git a/views/displaymenurootview.h b/views/displaymenurootview.h
new file mode 100644
index 0000000..b9c8c81
--- /dev/null
+++ b/views/displaymenurootview.h
@@ -0,0 +1,75 @@
+#ifndef __DISPLAYMENUROOTVIEW_H
+#define __DISPLAYMENUROOTVIEW_H
+
+#include "../libtemplate/template.h"
+#include "displaymenuview.h"
+#include "displaymenulistview.h"
+#include "displaymenudetailview.h"
+
+enum ePluginMenuType {
+    mtList,
+    mtText,
+    mtUnknown
+};
+
+class cDisplayMenuRootView : public cView, public cViewHelpers  {
+private:
+    eMenuCategory cat;
+    eSubView viewType;
+    cTemplateView *subView;
+    bool subViewAvailable;
+    string pluginName;
+    int pluginMenu;
+    ePluginMenuType pluginMenuType;
+    bool pluginMenuChanged;
+    cDisplayMenuView *view;
+    cDisplayMenuListView *listView;
+    cDisplayMenuDetailView *detailView;
+    string menuTitle;
+    string buttonTexts[4];
+    bool defaultBackgroundDrawn;
+    bool defaultHeaderDrawn;
+    bool defaultButtonsDrawn;
+    bool defaultDateTimeDrawn;
+    bool defaultMessageDrawn;
+    void DrawBackground(void);
+    void DrawHeader(void);
+    void DrawDateTime(void);
+    bool DrawTime(void);
+    void DrawColorButtons(void);
+    void DrawMessage(eMessageType type, const char *text);
+    void ClearRootView(void);
+    virtual void Action(void);
+public:
+    cDisplayMenuRootView(cTemplateView *rootView);
+    virtual ~cDisplayMenuRootView();
+    bool createOsd(void);
+    void SetMenu(eMenuCategory menuCat, bool menuInit);
+    void CorrectDefaultMenu(void);
+    void SetPluginMenu(string name, int menu, int type);
+    void SetTitle(const char *title);
+    void SetChannel(const cChannel *channel) { view->SetChannel(channel); };
+    const cChannel *GetChannel(void) { return view->GetChannel(); };
+    void SetEpgSearchFavorite(void) { if (view) view->SetEpgSearchFavorite(); };
+    void SetButtonTexts(const char *Red, const char *Green, const char *Yellow, const char *Blue);
+    void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5);
+    void SetMessage(eMessageType type, const char *text);
+    void SetDetailedViewEvent(const cEvent *event);
+    void SetDetailedViewRecording(const cRecording *recording);
+    void SetDetailedViewText(const char *text);
+    bool SetDetailedViewPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens);
+    void KeyInput(bool up, bool page);
+    void Clear(void);
+    int GetMaxItems(void);
+    int GetListViewWidth(void);
+    int GetTextAreaWidth(void);
+    cFont *GetTextAreaFont(void);
+    bool SubViewAvailable(void) { return subViewAvailable; };
+    cDisplayMenuListView *GetListView(void) { return listView; };
+    void Render(void);
+    void RenderMenuItems(void);
+    void RenderDetailView(void);
+    void RenderMenuScrollBar(int Total, int Offset);
+    bool RenderDynamicElements(void);
+};
+#endif //__DISPLAYMENUROOTVIEW_H
diff --git a/views/displaymenutabview.c b/views/displaymenutabview.c
new file mode 100644
index 0000000..f9e03f9
--- /dev/null
+++ b/views/displaymenutabview.c
@@ -0,0 +1,126 @@
+#include "displaymenutabview.h"
+
+
+cDisplayMenuTabView::cDisplayMenuTabView(cTemplateViewTab *tmplTab) : cView(tmplTab) {
+}
+
+cDisplayMenuTabView::~cDisplayMenuTabView() {
+    CancelSave();
+}
+
+void cDisplayMenuTabView::SetTokens(map < string, int > *intTokens, map < string, string > *stringTokens, map < string, vector< map< string, string > > > *loopTokens) {
+    this->intTokens = intTokens;
+    this->stringTokens = stringTokens;
+    this->loopTokens = loopTokens;
+}
+
+void cDisplayMenuTabView::Clear(void) {
+    Fill(0, clrTransparent);
+}
+
+void cDisplayMenuTabView::CreateTab(void) {
+    //Create Pixmap
+    if (!PixmapExists(0)) {
+        cSize drawportSize;
+        scrolling = tmplTab->CalculateDrawPortSize(drawportSize, loopTokens);
+        if (scrolling) {
+            CreateScrollingPixmap(0, tmplTab, drawportSize);
+            scrollingPix = 0;
+            scrollOrientation = orVertical; 
+            scrollMode = smNone;
+        } else {
+            CreateViewPixmap(0, tmplTab);              
+        }
+    }    
+}
+
+
+void cDisplayMenuTabView::Render(void) {
+    if (tmplTab->DoDebug()) {
+        tmplTab->Debug();
+    }
+    //Draw Tab, flushing every loop
+    DrawPixmap(0, tmplTab, loopTokens, true);
+}
+
+bool cDisplayMenuTabView::KeyUp(void) { 
+    if (!scrolling)
+        return false;
+    int scrollStep = tmplTab->GetScrollStep();
+    int aktHeight = DrawportY(0);
+    if (aktHeight >= 0) {
+        return false;
+    }
+    int newY = aktHeight + scrollStep;
+    if (newY > 0)
+        newY = 0;
+    SetDrawPortPoint(0, cPoint(0, newY));
+    return true;
+}
+
+bool cDisplayMenuTabView::KeyDown(void) {
+    if (!scrolling)
+        return false;
+
+    int scrollStep = tmplTab->GetScrollStep();
+    int aktHeight = DrawportY(0);
+    int totalHeight = DrawportHeight(0);
+    int screenHeight = Height(0);
+    
+    if (totalHeight - ((-1)*aktHeight) == screenHeight) {
+        return false;
+    } 
+    int newY = aktHeight - scrollStep;
+    if ((-1)*newY > totalHeight - screenHeight)
+        newY = (-1)*(totalHeight - screenHeight);
+    SetDrawPortPoint(0, cPoint(0, newY));
+    return true;
+}
+
+bool cDisplayMenuTabView::KeyLeft(void) {
+    if (!scrolling)
+        return false;
+    if (!PixmapExists(0))
+        return false;
+    int aktHeight = DrawportY(0);
+    int screenHeight = Height(0);
+    int newY = aktHeight + screenHeight;
+    if (newY > 0)
+        newY = 0;
+    SetDrawPortPoint(0, cPoint(0, newY));
+    return true;
+}
+
+bool cDisplayMenuTabView::KeyRight(void) {
+    if (!scrolling)
+        return false;
+    if (!PixmapExists(0))
+        return false;
+    int aktHeight = DrawportY(0);
+    int screenHeight = Height(0);
+    int totalHeight = DrawportHeight(0);
+    int newY = aktHeight - screenHeight;
+    if ((-1)*newY > totalHeight - screenHeight)
+        newY = (-1)*(totalHeight - screenHeight);
+    SetDrawPortPoint(0, cPoint(0, newY));
+    return true;
+}
+
+void cDisplayMenuTabView::GetScrollbarPosition(int &barTop, int &barHeight) {
+    int y = (-1)*DrawportY(0);
+    int totalHeight = DrawportHeight(0);
+    int screenHeight = Height(0);
+    if (totalHeight == 0)
+        return;
+    if (totalHeight <= screenHeight)
+        barHeight = 1000;
+    else {
+        barHeight = (double)screenHeight / (double) totalHeight * 1000; 
+    }
+    barTop = (double)y / (double) totalHeight * 1000;
+}
+
+void cDisplayMenuTabView::Action(void) {
+    Render();
+    DoFlush();
+}
\ No newline at end of file
diff --git a/views/displaymenutabview.h b/views/displaymenutabview.h
new file mode 100644
index 0000000..70a7447
--- /dev/null
+++ b/views/displaymenutabview.h
@@ -0,0 +1,27 @@
+#ifndef __DISPLAYMENUTABVIEW_H
+#define __DISPLAYMENUTABVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+
+class cDisplayMenuTabView : public cView {
+private:
+    map < string, string > *stringTokens;
+    map < string, int > *intTokens;
+    map < string, vector< map< string, string > > > *loopTokens;
+    void Action(void);
+public:
+    cDisplayMenuTabView(cTemplateViewTab *tmplTab);
+    virtual ~cDisplayMenuTabView();
+    void SetTokens(map < string, int > *intTokens, map < string, string > *stringTokens, map < string, vector< map< string, string > > > *loopTokens);
+    void Clear(void);
+    void CreateTab(void);
+    void Render(void);
+    bool KeyUp(void);
+    bool KeyDown(void);
+    bool KeyLeft(void);
+    bool KeyRight(void);
+    void GetScrollbarPosition(int &barTop, int &barHeight);
+};
+
+#endif //__DISPLAYMENUTABVIEW_H
diff --git a/views/displaymenuview.c b/views/displaymenuview.c
new file mode 100644
index 0000000..32a00ba
--- /dev/null
+++ b/views/displaymenuview.c
@@ -0,0 +1,662 @@
+#define __STL_CONFIG_H
+#include <fstream>
+#include <iostream>
+#include <vdr/menu.h>
+#include <vdr/videodir.h>
+#include "displaymenuview.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+#include "../libcore/timers.h"
+#include "../services/scraper2vdr.h"
+
+cDisplayMenuView::cDisplayMenuView(cTemplateView *tmplView, bool menuInit) : cView(tmplView) {
+    if (menuInit)
+        SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+    else
+        SetFadeTime(0);
+    cat = mcUndefined;
+    buttonTexts = NULL;
+}
+
+cDisplayMenuView::~cDisplayMenuView() {
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayMenuView::DrawBackground(void) {
+    if (!ViewElementImplemented(veBackground)) {
+        return false;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+    return true;
+}
+
+bool cDisplayMenuView::DrawHeader(void) {
+    if (!ViewElementImplemented(veHeader)) {
+        return false;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("title", menuTitle));
+    stringTokens.insert(pair<string,string>("vdrversion", VDRVERSION));
+
+    //check for standard menu entries
+    bool hasIcon = false;
+    string icon = imgCache->GetIconName(menuTitle, cat);
+    if (imgCache->MenuIconExists(icon))
+        hasIcon = true;
+    stringTokens.insert(pair<string,string>("icon", icon));
+    intTokens.insert(pair<string,int>("hasicon", hasIcon));
+
+    //Disc Usage
+    string vdrUsageString = *cVideoDiskUsage::String();
+    int discUsage = cVideoDiskUsage::UsedPercent();
+    bool discAlert = (discUsage > 95) ? true : false;
+    string freeTime = *cString::sprintf("%02d:%02d", cVideoDiskUsage::FreeMinutes() / 60, cVideoDiskUsage::FreeMinutes() % 60);
+    int freeGB = cVideoDiskUsage::FreeMB() / 1024;
+
+    intTokens.insert(pair<string, int>("usedpercent", discUsage));
+    intTokens.insert(pair<string, int>("freepercent", 100-discUsage));
+    intTokens.insert(pair<string, int>("discalert", discAlert));
+    intTokens.insert(pair<string, int>("freegb", freeGB));
+    stringTokens.insert(pair<string,string>("freetime", freeTime));
+    stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
+
+    ClearViewElement(veHeader);
+    DrawViewElement(veHeader, &stringTokens, &intTokens);
+    return true;
+}
+
+bool cDisplayMenuView::DrawDateTime(void) {
+    if (!ViewElementImplemented(veDateTime)) {
+        return false;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    if (!SetDate(stringTokens, intTokens)) {
+        return false;
+    }
+
+    ClearViewElement(veDateTime);
+    DrawViewElement(veDateTime, &stringTokens, &intTokens);
+    return true;
+}
+
+bool cDisplayMenuView::DrawTime(void) {
+    if (!ViewElementImplemented(veTime)) {
+        return false;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    if (!SetTime(stringTokens, intTokens)) {
+        return false;
+    }    
+
+    ClearViewElement(veTime);
+    DrawViewElement(veTime, &stringTokens, &intTokens);
+
+    return true;
+}
+
+bool cDisplayMenuView::DrawColorButtons(void) {
+    if (!ViewElementImplemented(veButtons)) {
+        return false;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("red", buttonTexts ? buttonTexts[0] : ""));
+    stringTokens.insert(pair<string,string>("green", buttonTexts ? buttonTexts[1]: ""));
+    stringTokens.insert(pair<string,string>("yellow", buttonTexts ? buttonTexts[2]: ""));
+    stringTokens.insert(pair<string,string>("blue", buttonTexts ? buttonTexts[3] : ""));
+
+    int colorKeys[4] = { Setup.ColorKey0, Setup.ColorKey1, Setup.ColorKey2, Setup.ColorKey3 };
+
+    for (int button = 1; button < 5; button++) {
+        string red = *cString::sprintf("red%d", button);
+        string green = *cString::sprintf("green%d", button);
+        string yellow = *cString::sprintf("yellow%d", button);
+        string blue = *cString::sprintf("blue%d", button);
+        bool isRed = false;
+        bool isGreen = false;
+        bool isYellow = false;
+        bool isBlue = false;
+        switch (colorKeys[button-1]) {
+            case 0:
+                isRed = true;
+                break;
+            case 1:
+                isGreen = true;
+                break;
+            case 2:
+                isYellow = true;
+                break;
+            case 3:
+                isBlue = true;
+                break;
+            default:
+                break;
+        }
+        intTokens.insert(pair<string, int>(red, isRed));
+        intTokens.insert(pair<string, int>(green, isGreen));
+        intTokens.insert(pair<string, int>(yellow, isYellow));
+        intTokens.insert(pair<string, int>(blue, isBlue));
+    }
+
+    ClearViewElement(veButtons);
+    DrawViewElement(veButtons, &stringTokens, &intTokens);
+    return true;
+}
+
+bool cDisplayMenuView::DrawMessage(eMessageType type, const char *text) {
+    if (!ViewElementImplemented(veMessage)) {
+        return false;
+    }
+    if (!text) {
+        ClearViewElement(veMessage);
+        return true;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string, int>("status",  (type == mtStatus)  ? true : false));
+    intTokens.insert(pair<string, int>("info",    (type == mtInfo)    ? true : false));
+    intTokens.insert(pair<string, int>("warning", (type == mtWarning) ? true : false));
+    intTokens.insert(pair<string, int>("error",   (type == mtError)   ? true : false));
+    stringTokens.insert(pair<string,string>("text", text));
+    
+    ClearViewElement(veMessage);
+    DrawViewElement(veMessage, &stringTokens, &intTokens);
+    return true;
+}
+
+void cDisplayMenuView::DrawScrollbar(int numMax, int numDisplayed, int offset) {
+    if (!ViewElementImplemented(veScrollbar)) {
+        return;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    if (numDisplayed < 1)
+        return;
+    
+    int barHeight = 0;
+    if (numDisplayed < numMax)
+        barHeight = 1000;
+    else
+        barHeight = (double)numMax * 1000 / (double)numDisplayed;
+    
+    int barOffset = (double)offset * 1000 / (double)numDisplayed;
+
+    intTokens.insert(pair<string, int>("height", barHeight));
+    intTokens.insert(pair<string, int>("offset", barOffset));
+
+    ClearViewElement(veScrollbar);
+    DrawViewElement(veScrollbar, &stringTokens, &intTokens);
+}
+
+bool cDisplayMenuView::BackgroundImplemented(void) {
+    if (!ViewElementImplemented(veBackground)) {
+        return false;
+    }
+    return true;
+}
+
+
+void cDisplayMenuView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+}
+
+/************************************************************************
+* cDisplayMenuMainView
+************************************************************************/
+
+cDisplayMenuMainView::cDisplayMenuMainView(cTemplateView *tmplView, bool menuInit) : cDisplayMenuView(tmplView, menuInit) {
+    initial = true;
+    lastSystemLoad = 0.0;
+    InitDevices();
+}
+
+cDisplayMenuMainView::~cDisplayMenuMainView() {
+    CancelSave();
+    FadeOut();
+}
+
+void cDisplayMenuMainView::DrawStaticViewElements(void) {
+    DrawTimers();
+    DrawDiscUsage();
+    DrawTemperatures();
+    DrawCurrentSchedule();
+    DrawCurrentWeather();
+    DrawCustomTokens();
+}
+
+bool cDisplayMenuMainView::DrawDynamicViewElements(void) {
+    bool loadChanged = DrawLoad();
+    bool devicesChanged = DrawDevices();
+    initial = false;
+    return loadChanged || devicesChanged;
+
+}
+
+void cDisplayMenuMainView::DrawTimers(void) {
+    if (!ViewElementImplemented(veTimers)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    map < string, vector< map< string, string > > > timerLoopTokens;
+    vector< map< string, string > > timers;
+
+    cGlobalSortedTimers SortedTimers;// local and remote timers
+    int numTimers = SortedTimers.Size();
+
+    intTokens.insert(pair<string, int>("numtimers", numTimers));
+
+    int numTimerConflicts = SortedTimers.NumTimerConfilicts();
+    intTokens.insert(pair<string, int>("numtimerconflicts", numTimerConflicts));
+
+    for (int i=0; i<15; i++) {
+        stringstream name;
+        name << "timer" << i+1 << "exists";
+        if (i < numTimers) {
+            intTokens.insert(pair<string, int>(name.str(), true));
+        } else {
+            intTokens.insert(pair<string, int>(name.str(), false));
+        }
+    }
+
+    for (int i = 0; i < numTimers; i++) {
+        if (i >=15)
+            break;
+        map< string, string > timerVals;
+        const cTimer *Timer = SortedTimers[i];
+        const cEvent *event = Timer->Event();
+        if (event) {
+            timerVals.insert(pair< string, string >("timers[title]", event->Title()));
+        } else {
+            const char *File = Setup.FoldersInTimerMenu ? NULL : strrchr(Timer->File(), FOLDERDELIMCHAR);
+            if (File && strcmp(File + 1, TIMERMACRO_TITLE) && strcmp(File + 1, TIMERMACRO_EPISODE))
+                File++;
+            else
+                File = Timer->File();
+            timerVals.insert(pair< string, string >("timers[title]", File));            
+        }
+        const cChannel *channel = Timer->Channel();
+        if (channel) {
+            timerVals.insert(pair< string, string >("timers[channelname]", channel->Name()));
+            stringstream chanNum;
+            chanNum << channel->Number();
+            timerVals.insert(pair< string, string >("timers[channelnumber]", chanNum.str()));
+            string channelID = *(channel->GetChannelID().ToString());
+            timerVals.insert(pair< string, string >("timers[channelid]", channelID));
+            bool logoExists = imgCache->LogoExists(channelID);
+            timerVals.insert(pair< string, string >("timers[channellogoexists]", logoExists ? "1" : "0"));
+        } else {
+            timerVals.insert(pair< string, string >("timers[channelname]", ""));
+            timerVals.insert(pair< string, string >("timers[channelnumber]", "0"));
+            timerVals.insert(pair< string, string >("timers[channelid]", ""));  
+            timerVals.insert(pair< string, string >("timers[channellogoexists]", "0"));
+        }
+        
+        timerVals.insert(pair< string, string >("timers[recording]", Timer->Recording() ? "1" : "0"));
+
+        cString timerDate("");
+        if (Timer->Recording()) {
+            timerDate = cString::sprintf("-%s", *TimeString(Timer->StopTime()));
+        } else {
+            time_t Now = time(NULL);
+            cString Today = WeekDayName(Now);
+            cString Time = TimeString(Timer->StartTime());
+            cString Day = WeekDayName(Timer->StartTime());
+            if (Timer->StartTime() > Now + 6 * SECSINDAY) {
+                time_t ttm = Timer->StartTime();
+                struct tm * timerTime = localtime(&ttm);
+                timerDate = cString::sprintf("%02d.%02d %s", timerTime->tm_mday, timerTime->tm_mon + 1, *Time);
+            } else if (strcmp(Day, Today) != 0)
+                timerDate = cString::sprintf("%s %s", *Day, *Time);
+            else
+                timerDate = Time;
+            if (Timer->Flags() & tfVps)
+                timerDate = cString::sprintf("VPS %s", *timerDate);
+        }
+        timerVals.insert(pair< string, string >("timers[datetime]", *timerDate));
+
+        timers.push_back(timerVals);
+    }
+
+    timerLoopTokens.insert(pair< string, vector< map< string, string > > >("timers", timers));
+
+    ClearViewElement(veTimers);
+    DrawViewElement(veTimers, &stringTokens, &intTokens, &timerLoopTokens);
+}
+
+void cDisplayMenuMainView::DrawDiscUsage(void) {
+    if (!ViewElementImplemented(veDiscUsage)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    string vdrUsageString = *cVideoDiskUsage::String();
+    int discUsage = cVideoDiskUsage::UsedPercent();
+    bool discAlert = (discUsage > 95) ? true : false;
+    string freeTime = *cString::sprintf("%02d:%02d", cVideoDiskUsage::FreeMinutes() / 60, cVideoDiskUsage::FreeMinutes() % 60);
+    int freeGB = cVideoDiskUsage::FreeMB() / 1024;
+
+    intTokens.insert(pair<string, int>("usedpercent", discUsage));
+    intTokens.insert(pair<string, int>("freepercent", 100-discUsage));
+    intTokens.insert(pair<string, int>("discalert", discAlert));
+    intTokens.insert(pair<string, int>("freegb", freeGB));
+    stringTokens.insert(pair<string,string>("freetime", freeTime));
+    stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
+
+    ClearViewElement(veDiscUsage);
+    DrawViewElement(veDiscUsage, &stringTokens, &intTokens);
+}
+
+bool cDisplayMenuMainView::DrawLoad(void) {
+    if (!ViewElementImplemented(veSystemLoad)) {
+        return false;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    double systemLoad;
+    if (getloadavg(&systemLoad, 1) > 0) {
+        if (lastSystemLoad == systemLoad) {
+            return false;
+        }
+        string load = *cString::sprintf("%.2f", systemLoad);
+        int loadHand = systemLoad * 1000;
+        int loadHandValue = 0;
+        if (loadHand > 2500)
+            loadHandValue = 2525;
+        else {
+
+            int loadHandDec = loadHand - (loadHand / 100) * 100;
+
+            if (loadHandDec <= 12)
+                loadHandDec = 0;
+            else if (loadHandDec <= 37)
+                loadHandDec = 25;
+            else if (loadHandDec <= 62)
+                loadHandDec = 50;
+            else if (loadHandDec <= 87)
+                loadHandDec = 75;
+            else
+                loadHandDec = 0;
+
+            loadHandValue = loadHand / 100 * 100 + loadHandDec;
+        }
+
+        stringTokens.insert(pair<string,string>("load", load));
+        intTokens.insert(pair<string,int>("loadhand", loadHandValue));
+        lastSystemLoad = systemLoad;
+    }
+
+    ClearViewElement(veSystemLoad);
+    DrawViewElement(veSystemLoad, &stringTokens, &intTokens);
+
+    return true;
+}
+
+void cDisplayMenuMainView::DrawTemperatures(void) {
+    if (!ViewElementImplemented(veTemperatures)) {
+        return;
+    }
+    cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/temperatures\"", SCRIPTFOLDER, SCRIPTFOLDER);
+    system(*execCommand);
+
+    string tempCPU, tempGPU;
+    int cpu, gpu;
+
+    cString itemFilename = cString::sprintf("%s/cpu", SCRIPTOUTPUTPATH );
+    ifstream file(*itemFilename, ifstream::in);
+    if( file.is_open() ) {
+        std::getline(file, tempCPU);
+        if (tempCPU.size() > 2) {
+            cpu = atoi(tempCPU.substr(0,2).c_str());
+        } else
+            cpu = 0;
+        file.close();
+    } else {
+        tempCPU = "0°C";
+        cpu = 0;
+    }
+
+    itemFilename = cString::sprintf("%s/gpu", SCRIPTOUTPUTPATH );
+    ifstream file2(*itemFilename, ifstream::in);
+    if( file2.is_open() ) {
+        std::getline(file2, tempGPU);
+        if (tempGPU.size() > 2) {
+            gpu = atoi(tempGPU.substr(0,2).c_str());
+        } else
+            gpu = 0;
+        file2.close();
+    } else {
+        tempGPU = "0°C";
+        gpu = 0;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("cputemp", cpu));
+    intTokens.insert(pair<string,int>("gputemp", gpu));
+
+    ClearViewElement(veTemperatures);
+    DrawViewElement(veTemperatures, &stringTokens, &intTokens);
+}
+
+bool cDisplayMenuMainView::DrawDevices(void) {
+    if (!ViewElementImplemented(veDevices)) {
+        return false;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > deviceLoopTokens;
+    vector< map< string, string > > devices;
+
+    bool changed = SetDevices(initial, &intTokens, &devices);
+    if (!changed)
+        return false;
+
+    deviceLoopTokens.insert(pair< string, vector< map< string, string > > >("devices", devices));
+    
+    ClearViewElement(veDevices);
+    DrawViewElement(veDevices, &stringTokens, &intTokens, &deviceLoopTokens);
+    return true;
+}
+
+void cDisplayMenuMainView::DrawCurrentSchedule(void) {
+    if (!ViewElementImplemented(veCurrentSchedule)) {
+        return;
+    }
+
+    cDevice *device = cDevice::PrimaryDevice();
+    const cChannel *channel = NULL;
+    if (!device->Replaying() || device->Transferring()) {
+        channel = Channels.GetByNumber(device->CurrentChannel());
+    }
+    if (!channel)
+        return;
+
+    const cEvent *event = NULL;
+    cSchedulesLock SchedulesLock;
+    if (const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock))
+        if (const cSchedule *Schedule = Schedules->GetSchedule(channel))
+            event = Schedule->GetPresentEvent();
+    if (!event)
+        return;
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("title", (event->Title())?event->Title():""));
+    stringTokens.insert(pair<string,string>("subtitle", (event->ShortText())?event->ShortText():""));
+    stringTokens.insert(pair<string,string>("start", *event->GetTimeString()));
+    stringTokens.insert(pair<string,string>("stop", *event->GetEndTimeString()));
+    intTokens.insert(pair<string,int>("duration", event->Duration() / 60));
+    intTokens.insert(pair<string,int>("durationhours", event->Duration() / 3600));
+    stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", (event->Duration() / 60)%60)));
+    intTokens.insert(pair<string,int>("elapsed", (int)round((time(NULL) - event->StartTime())/60)));
+    intTokens.insert(pair<string,int>("remaining", (int)round((event->EndTime() - time(NULL))/60)));
+
+    int mediaWidth = 0;
+    int mediaHeight = 0;
+    string mediaPath = "";
+    bool isBanner = false;
+    int posterWidth = 0;
+    int posterHeight = 0;
+    string posterPath = "";
+    bool hasPoster = false;
+    int bannerWidth = 0;
+    int bannerHeight = 0;
+    string bannerPath = "";
+    bool hasBanner = false;
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (pScraper) {
+        ScraperGetPosterBanner call;
+        call.event = event;
+        if (pScraper->Service("GetPosterBanner", &call)) {
+            if ((call.type == tSeries) && call.banner.path.size() > 0) {
+                mediaWidth = call.banner.width;
+                mediaHeight = call.banner.height;
+                mediaPath = call.banner.path;
+                isBanner = true;
+                bannerWidth = mediaWidth;
+                bannerHeight = mediaHeight;
+                bannerPath = mediaPath;
+                hasBanner = true;
+                ScraperGetPoster callPoster;
+                callPoster.event = event;
+                callPoster.recording = NULL;
+                if (pScraper->Service("GetPoster", &callPoster)) {
+                    posterWidth = callPoster.poster.width;
+                    posterHeight = callPoster.poster.height;
+                    posterPath = callPoster.poster.path;
+                    hasPoster = true;
+                }
+            } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) {
+                mediaWidth = call.poster.width;
+                mediaHeight = call.poster.height;
+                mediaPath = call.poster.path;
+                posterWidth = call.poster.width;
+                posterHeight = call.poster.height;
+                posterPath = call.poster.path;
+                hasPoster = true;
+            }
+        }
+    }
+    intTokens.insert(pair<string,int>("mediawidth", mediaWidth));
+    intTokens.insert(pair<string,int>("mediaheight", mediaHeight));
+    intTokens.insert(pair<string,int>("isbanner", isBanner));
+    stringTokens.insert(pair<string,string>("mediapath", mediaPath));
+    intTokens.insert(pair<string,int>("posterwidth", posterWidth));
+    intTokens.insert(pair<string,int>("posterheight", posterHeight));
+    stringTokens.insert(pair<string,string>("posterpath", posterPath));
+    intTokens.insert(pair<string,int>("hasposter", hasPoster));
+    intTokens.insert(pair<string,int>("bannerwidth", bannerWidth));
+    intTokens.insert(pair<string,int>("bannerheight", bannerHeight));
+    stringTokens.insert(pair<string,string>("bannerpath", bannerPath));
+    intTokens.insert(pair<string,int>("hasbanner", hasBanner));
+
+    ClearViewElement(veCurrentSchedule);
+    DrawViewElement(veCurrentSchedule, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuMainView::DrawCurrentWeather(void) {
+    if (!ViewElementImplemented(veCurrentWeather)) {
+        return;
+    }
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    if (!SetCurrentWeatherTokens(stringTokens, intTokens)){
+        ClearViewElement(veCurrentWeather);
+        return;
+    }
+    
+    ClearViewElement(veCurrentWeather);
+    DrawViewElement(veCurrentWeather, &stringTokens, &intTokens);
+}
+
+void cDisplayMenuMainView::DrawCustomTokens(void) {
+    if (!ViewElementImplemented(veCustomTokens)) {
+        return;
+    }
+    if (!tmplView)
+        return;
+    map < string, string > stringTokens = tmplView->GetCustomStringTokens();
+    map < string, int > intTokens = tmplView->GetCustomIntTokens();
+    DrawViewElement(veCustomTokens, &stringTokens, &intTokens);
+}
+
+/************************************************************************
+* cDisplayMenuSchedulesView
+************************************************************************/
+
+cDisplayMenuSchedulesView::cDisplayMenuSchedulesView(cTemplateView *tmplView, eMenuCategory menuCat, bool menuInit) : cDisplayMenuView(tmplView, menuInit) {
+    cat = menuCat;
+    channel = NULL;
+    isEpgSearchFavoritesMenu = false;
+}
+
+cDisplayMenuSchedulesView::~cDisplayMenuSchedulesView() {
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayMenuSchedulesView::DrawHeader(void) {
+    if (!ViewElementImplemented(veHeader)) {
+        return false;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("whatson", (cat == mcSchedule)&&(!isEpgSearchFavoritesMenu) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnow", (cat == mcScheduleNow) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonnext", (cat == mcScheduleNext) ? true: false));
+    intTokens.insert(pair<string,int>("whatsonfavorites", isEpgSearchFavoritesMenu ? true: false));
+
+    stringTokens.insert(pair<string,string>("title", menuTitle));
+    stringTokens.insert(pair<string,string>("vdrversion", VDRVERSION));
+    if (channel) {
+        stringTokens.insert(pair<string,string>("channelnumber", *cString::sprintf("%d", channel->Number())));
+        stringTokens.insert(pair<string,string>("channelname", channel->Name()));
+        string channelID = *(channel->GetChannelID().ToString());
+        stringTokens.insert(pair<string,string>("channelid", channelID));
+        intTokens.insert(pair<string, int>("channellogoexists", imgCache->LogoExists(channelID)));
+    } else {
+        stringTokens.insert(pair<string,string>("channelnumber", ""));
+        stringTokens.insert(pair<string,string>("channelname", ""));
+        stringTokens.insert(pair<string,string>("channelid", ""));
+        intTokens.insert(pair<string, int>("channellogoexists", 0));        
+    }
+    bool hasIcon = false;
+    string icon = imgCache->GetIconName(menuTitle, cat);
+    if (icon.size() > 0)
+        hasIcon = true;
+
+    stringTokens.insert(pair<string,string>("icon", icon));
+    intTokens.insert(pair<string,int>("hasicon", hasIcon));
+    ClearViewElement(veHeader);
+    DrawViewElement(veHeader, &stringTokens, &intTokens);
+    return true;
+}
\ No newline at end of file
diff --git a/views/displaymenuview.h b/views/displaymenuview.h
new file mode 100644
index 0000000..c7aa7eb
--- /dev/null
+++ b/views/displaymenuview.h
@@ -0,0 +1,71 @@
+#ifndef __DISPLAYMENUVIEW_H
+#define __DISPLAYMENUVIEW_H
+
+#include "../libtemplate/template.h"
+#include "viewhelpers.h"
+#include "displaymenulistview.h"
+
+class cDisplayMenuView : public cView, public cViewHelpers {
+protected:
+    eMenuCategory cat;
+    string menuTitle;
+    string *buttonTexts;
+    virtual void Action(void);
+public:
+    cDisplayMenuView(cTemplateView *tmplView, bool menuInit);
+    virtual ~cDisplayMenuView();
+    void SetMenuCat(eMenuCategory newCat) { cat = newCat; };
+    void SetTitle(const char *title) {menuTitle = title; };
+    virtual void SetChannel(const cChannel *channel) {};
+    virtual const cChannel *GetChannel(void) { return NULL; };
+    virtual void ClearChannel(void) {};
+    virtual void SetEpgSearchFavorite(void) {};
+    virtual void ClearEpgSearchFavorite(void) {};
+    void SetButtonTexts(string *buttonTexts) { this->buttonTexts = buttonTexts; };
+    bool DrawBackground(void);
+    virtual bool DrawHeader(void);
+    bool DrawDateTime(void);
+    bool DrawTime(void);
+    bool DrawColorButtons(void);
+    bool DrawMessage(eMessageType type, const char *text);
+    void DrawScrollbar(int numMax, int numDisplayed, int offset);
+    virtual void DrawStaticViewElements(void) {};
+    virtual bool DrawDynamicViewElements(void) { return false; };
+    bool BackgroundImplemented(void);
+};
+
+class cDisplayMenuMainView : public cDisplayMenuView {
+private:
+    bool initial;
+    double lastSystemLoad;
+    void DrawTimers(void);
+    void DrawDiscUsage(void);
+    bool DrawLoad(void);
+    void DrawTemperatures(void);
+    bool DrawDevices(void);
+    void DrawCurrentSchedule(void);
+    void DrawCurrentWeather(void);
+    void DrawCustomTokens(void);
+public:
+    cDisplayMenuMainView(cTemplateView *tmplView, bool menuInit);
+    virtual ~cDisplayMenuMainView();
+    void DrawStaticViewElements(void);
+    bool DrawDynamicViewElements(void);
+};
+
+class cDisplayMenuSchedulesView : public cDisplayMenuView {
+private:
+    const cChannel *channel;
+    bool isEpgSearchFavoritesMenu;
+public:
+    cDisplayMenuSchedulesView(cTemplateView *tmplView, eMenuCategory menuCat, bool menuInit);
+    virtual ~cDisplayMenuSchedulesView();
+    void SetChannel(const cChannel *channel) { if (channel) this->channel = channel; };
+    const cChannel *GetChannel(void) { return channel; };
+    void ClearChannel(void) { channel = NULL; };
+    void SetEpgSearchFavorite(void) { isEpgSearchFavoritesMenu = true; };
+    void ClearEpgSearchFavorite(void) { isEpgSearchFavoritesMenu = false; };
+    bool DrawHeader(void);
+};
+
+#endif //__DISPLAYMENUVIEW_H
diff --git a/views/displaymessageview.c b/views/displaymessageview.c
new file mode 100644
index 0000000..c1ffe47
--- /dev/null
+++ b/views/displaymessageview.c
@@ -0,0 +1,53 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include "displaymessageview.h"
+
+cDisplayMessageView::cDisplayMessageView(cTemplateView *tmplView) : cView(tmplView) {
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayMessageView::~cDisplayMessageView() {
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayMessageView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+void cDisplayMessageView::DrawBackground(void) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+
+void cDisplayMessageView::DrawMessage(eMessageType type, const char *text) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("text", text));
+
+    intTokens.insert(pair<string,int>("status",  (type == mtStatus)  ? true : false));
+    intTokens.insert(pair<string,int>("info",    (type == mtInfo)    ? true : false));
+    intTokens.insert(pair<string,int>("warning", (type == mtWarning) ? true : false));
+    intTokens.insert(pair<string,int>("error",   (type == mtError)   ? true : false));
+
+    DrawViewElement(veMessage, &stringTokens, &intTokens);
+}
+
+void cDisplayMessageView::ClearMessage(void) {
+    ClearViewElement(veMessage);
+}
+
+void cDisplayMessageView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+    cView::Action();
+}
diff --git a/views/displaymessageview.h b/views/displaymessageview.h
new file mode 100644
index 0000000..2fc1428
--- /dev/null
+++ b/views/displaymessageview.h
@@ -0,0 +1,20 @@
+#ifndef __DISPLAYMESSAGEVIEW_H
+#define __DISPLAYMESSAGEVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+
+class cDisplayMessageView : public cView {
+private:
+    virtual void Action(void);
+public:
+    cDisplayMessageView(cTemplateView *tmplView);
+    virtual ~cDisplayMessageView();
+    bool createOsd(void);
+    void DrawBackground(void);
+    void DrawMessage(eMessageType type, const char *text);
+    void ClearMessage(void);
+    void DoFadeIn(void) { Start(); };
+    void Flush(void) { DoFlush(); };
+};
+#endif //__DISPLAYMESSAGEVIEW_H
diff --git a/views/displayreplayonpauseview.c b/views/displayreplayonpauseview.c
new file mode 100644
index 0000000..27aaa50
--- /dev/null
+++ b/views/displayreplayonpauseview.c
@@ -0,0 +1,107 @@
+#define __STL_CONFIG_H
+#include <vdr/player.h>
+#include "displayreplayonpauseview.h"
+
+cDisplayReplayOnPauseView::cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement) : cView(tmplViewElement) {
+    tmplViewElement->SetPixOffset(0);
+    delay = tmplViewElement->GetNumericParameter(ptDelay) * 1000;
+    SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime));
+    resetSleep = false;
+}
+
+cDisplayReplayOnPauseView::~cDisplayReplayOnPauseView() {
+    CancelSave();
+    FadeOut();
+}
+
+void cDisplayReplayOnPauseView::Render(void) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > loopTokens;
+    const cRecording *recording = NULL;
+    cControl *control = cControl::Control();
+    if (control) {
+        recording = control->GetRecording();
+    }
+    if (recording) {
+        string name = recording->Name() ? recording->Name() : "";
+        stringTokens.insert(pair<string,string>("name", name));
+        const cRecordingInfo *info = recording->Info();
+        if (info) {
+            stringTokens.insert(pair<string,string>("shorttext", info->ShortText() ? info->ShortText() : ""));
+            stringTokens.insert(pair<string,string>("description", info->Description() ? info->Description() : ""));
+            const cEvent *event = info->GetEvent();
+            if (event) {
+                string recDate = *(event->GetDateString());
+                string recTime = *(event->GetTimeString());
+                if (recDate.find("1970") != string::npos) {
+                    time_t start = recording->Start();
+                    recDate = *DateString(start);
+                    recTime = *TimeString(start);
+                }
+                stringTokens.insert(pair<string,string>("date", recDate.c_str()));
+                stringTokens.insert(pair<string,string>("time", recTime.c_str()));
+                time_t startTime = event->StartTime();
+                struct tm * sStartTime = localtime(&startTime);
+                intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
+                intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
+                intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
+                int duration = event->Duration() / 60;
+                int recDuration = recording->LengthInSeconds();
+                recDuration = (recDuration>0)?(recDuration / 60):0;
+                intTokens.insert(pair<string,int>("duration", recDuration));
+                intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+                stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+                intTokens.insert(pair<string,int>("durationevent", duration));
+                intTokens.insert(pair<string,int>("durationeventhours", duration / 60));
+                stringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
+            }
+        } else {
+            stringTokens.insert(pair<string,string>("shorttext", ""));
+            stringTokens.insert(pair<string,string>("description", ""));            
+            int recDuration = recording->LengthInSeconds();
+            recDuration = (recDuration>0)?(recDuration / 60):0;
+            stringTokens.insert(pair<string,string>("date", ""));
+            stringTokens.insert(pair<string,string>("time", ""));
+            intTokens.insert(pair<string,int>("duration", recDuration));
+            intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
+            stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
+            intTokens.insert(pair<string,int>("durationevent", 0));
+            intTokens.insert(pair<string,int>("durationeventhours", 0));
+            stringTokens.insert(pair<string,string>("durationeventminutes", ""));
+        }
+    } else {
+        stringTokens.insert(pair<string,string>("name", ""));
+        stringTokens.insert(pair<string,string>("shorttext", ""));
+        stringTokens.insert(pair<string,string>("description", ""));
+        stringTokens.insert(pair<string,string>("date", ""));
+        stringTokens.insert(pair<string,string>("time", ""));
+        stringTokens.insert(pair<string,string>("durationminutes", ""));
+        stringTokens.insert(pair<string,string>("durationeventminutes", ""));
+    }
+    SetScraperTokens(NULL, recording, stringTokens, intTokens, loopTokens);
+    DrawViewElement(veOnPause, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayReplayOnPauseView::Action(void) {
+    bool doContinue;
+    int sleepSlice = 10;
+    do {
+        doContinue = false;
+        for (int i = 0; Running() && (i*sleepSlice < delay); i++) {
+            cCondWait::SleepMs(sleepSlice);
+            if (resetSleep) {
+                doContinue = true;
+                resetSleep = false;
+                break;
+            }
+        }
+    } while (doContinue);
+
+    if (!Running())
+        return;
+    Render();
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+}
diff --git a/views/displayreplayonpauseview.h b/views/displayreplayonpauseview.h
new file mode 100644
index 0000000..b3498af
--- /dev/null
+++ b/views/displayreplayonpauseview.h
@@ -0,0 +1,20 @@
+#ifndef __DISPLAYREPLAYONPAUSEVIEW_H
+#define __DISPLAYREPLAYONPAUSEVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "viewhelpers.h"
+
+class cDisplayReplayOnPauseView : public cView, public cViewHelpers {
+private:
+    int delay;
+    bool resetSleep;
+    virtual void Action(void);
+public:
+    cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement);
+    virtual ~cDisplayReplayOnPauseView();
+    void ResetSleep(void) { resetSleep = true; };
+    void Render(void);
+    void Flush(void) { DoFlush(); };
+};
+#endif //__DISPLAYREPLAYONPAUSEVIEW_H
diff --git a/views/displayreplayview.c b/views/displayreplayview.c
new file mode 100644
index 0000000..dbd4cd3
--- /dev/null
+++ b/views/displayreplayview.c
@@ -0,0 +1,478 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include "../services/scraper2vdr.h"
+#include "displayreplayview.h"
+#include "../libcore/helpers.h"
+
+cDisplayReplayView::cDisplayReplayView(cTemplateView *tmplView) : cView(tmplView) {
+    onPauseView = NULL;
+    numMarksLast = 0;
+    lastMarks = NULL;
+    markActive = -1;
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayReplayView::~cDisplayReplayView() {
+    if (lastMarks) {
+        delete[] lastMarks;
+    }
+    if (onPauseView) {
+        delete onPauseView;
+    }
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayReplayView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+void cDisplayReplayView::DrawBackground(bool modeOnly) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    if (modeOnly)
+        DrawViewElement(veBackgroundModeOnly, &stringTokens, &intTokens);
+    else
+        DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawDate(void) {
+    if (!ViewElementImplemented(veDateTime)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    if (!SetDate(stringTokens, intTokens)) {
+        return;
+    }
+
+    ClearViewElement(veDateTime);
+    DrawViewElement(veDateTime, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawTime(void) {
+    if (!ViewElementImplemented(veTime)) {
+        return;
+    }
+
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    if (!SetTime(stringTokens, intTokens)) {
+        return;
+    }    
+    ClearViewElement(veTime);
+    DrawViewElement(veTime, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawTitle(const cRecording *recording) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    const char *recName = NULL;
+    const cRecordingInfo *recInfo = recording->Info();
+    if (recInfo) {
+        recName = recInfo->Title();
+    }
+    if (!recName)
+        recName = recording->Name();
+    string recShortText = recInfo->ShortText() ? recInfo->ShortText() : "";
+    string recDate = *ShortDateString(recording->Start());
+    string recTime = *TimeString(recording->Start());
+
+    stringTokens.insert(pair<string,string>("rectitle", recName ? recName : ""));
+    stringTokens.insert(pair<string,string>("recsubtitle", recShortText));
+    stringTokens.insert(pair<string,string>("recdate", recDate));
+    stringTokens.insert(pair<string,string>("rectime", recTime));
+
+    DrawViewElement(veRecTitle, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawTitle(const char *title) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    stringTokens.insert(pair<string,string>("rectitle", title));
+    stringTokens.insert(pair<string,string>("recsubtitle", ""));
+    stringTokens.insert(pair<string,string>("recdate", ""));
+    stringTokens.insert(pair<string,string>("rectime", ""));
+
+    DrawViewElement(veRecTitle, &stringTokens, &intTokens);
+}
+
+
+void cDisplayReplayView::DrawRecordingInformation(const cRecording *recording) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    int screenWidth = 0;
+    int screenHeight = 0;
+    double aspect = 0;
+    cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, aspect);
+    bool isHD = false;
+    string resName = GetScreenResolutionString(screenWidth, screenHeight, &isHD);
+    bool isWideScreen = false;
+    string aspectName = GetScreenAspectString(aspect, &isWideScreen);
+
+    intTokens.insert(pair<string,int>("screenwidth", screenWidth));
+    intTokens.insert(pair<string,int>("screenheight", screenHeight));
+    intTokens.insert(pair<string,int>("isHD", isHD));
+    intTokens.insert(pair<string,int>("isWideScreen", isWideScreen));
+    stringTokens.insert(pair<string,string>("resolution", resName));
+    stringTokens.insert(pair<string,string>("aspect", aspectName));
+
+    ClearViewElement(veRecInfo);
+    DrawViewElement(veRecInfo, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawScraperContent(const cRecording *recording) {
+    if (!recording)
+        return;
+
+    if (!ViewElementImplemented(veScraperContent)) {
+        return;
+    }
+
+    int mediaWidth = 0;
+    int mediaHeight = 0;
+    string mediaPath = "";
+    bool isBanner = false;
+    int posterWidth = 0;
+    int posterHeight = 0;
+    string posterPath = "";
+    bool hasPoster = false;
+    int bannerWidth = 0;
+    int bannerHeight = 0;
+    string bannerPath = "";
+    bool hasBanner = false;
+
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (pScraper) {
+        ScraperGetPosterBannerV2 call;
+        call.event = NULL;
+        call.recording = recording;
+        if (pScraper->Service("GetPosterBannerV2", &call)) {
+            if ((call.type == tSeries) && call.banner.path.size() > 0) {
+                mediaWidth = call.banner.width;
+                mediaHeight = call.banner.height;
+                mediaPath = call.banner.path;
+                isBanner = true;
+                bannerWidth = mediaWidth;
+                bannerHeight = mediaHeight;
+                bannerPath = mediaPath;
+                hasBanner = true;
+
+                ScraperGetPoster callPoster;
+                callPoster.event = NULL;
+                callPoster.recording = recording;
+                if (pScraper->Service("GetPoster", &callPoster)) {
+                    posterWidth = callPoster.poster.width;
+                    posterHeight = callPoster.poster.height;
+                    posterPath = callPoster.poster.path;
+                    hasPoster = true;
+                }
+            } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) {
+                mediaWidth = call.poster.width;
+                mediaHeight = call.poster.height;
+                mediaPath = call.poster.path;
+                posterWidth = call.poster.width;
+                posterHeight = call.poster.height;
+                posterPath = call.poster.path;
+                hasPoster = true;
+            }
+        }
+    }
+    map < string, int > intTokens;
+    map < string, string > stringTokens;
+    intTokens.insert(pair<string,int>("mediawidth", mediaWidth));
+    intTokens.insert(pair<string,int>("mediaheight", mediaHeight));
+    intTokens.insert(pair<string,int>("isbanner", isBanner));
+    stringTokens.insert(pair<string,string>("mediapath", mediaPath));
+    intTokens.insert(pair<string,int>("posterwidth", posterWidth));
+    intTokens.insert(pair<string,int>("posterheight", posterHeight));
+    stringTokens.insert(pair<string,string>("posterpath", posterPath));
+    intTokens.insert(pair<string,int>("hasposter", hasPoster));
+    intTokens.insert(pair<string,int>("bannerwidth", bannerWidth));
+    intTokens.insert(pair<string,int>("bannerheight", bannerHeight));
+    stringTokens.insert(pair<string,string>("bannerpath", bannerPath));
+    intTokens.insert(pair<string,int>("hasbanner", hasBanner));
+    ClearViewElement(veScraperContent);
+    DrawViewElement(veScraperContent, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawCurrent(const char *current) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    stringTokens.insert(pair<string,string>("reccurrent", current));
+
+    ClearViewElement(veRecCurrent);
+    DrawViewElement(veRecCurrent, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawTotal(const char *total) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    stringTokens.insert(pair<string,string>("rectotal", total));
+
+    ClearViewElement(veRecTotal);
+    DrawViewElement(veRecTotal, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawProgressBar(int current, int total) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    intTokens.insert(pair<string,int>("current", current));
+    intTokens.insert(pair<string,int>("total", total));
+    stringTokens.insert(pair<string,string>("dummy", ""));
+    ClearViewElement(veRecProgressBar);
+    DrawViewElement(veRecProgressBar, &stringTokens, &intTokens);    
+}
+
+void cDisplayReplayView::DrawMarks(const cMarks *marks, int current, int total) {
+    if (!marks)
+        return;
+    if (!MarksChanged(marks, current))
+        return;
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    map < string, vector< map< string, string > > > loopTokens;
+    vector< map< string, string > > markTokens;
+    stringstream tot;
+    tot << total;
+
+    bool isStartMark = true;
+    for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
+        map< string, string > markVals;
+        stringstream pos;
+        pos << m->Position();
+        markVals.insert(pair< string, string >("marks[position]", pos.str()));
+        markVals.insert(pair< string, string >("marks[total]", tot.str()));
+        markVals.insert(pair< string, string >("marks[startmark]", isStartMark ? "1" : "0"));
+        markVals.insert(pair< string, string >("marks[active]", (m->Position() == current) ? "1" : "0"));
+        const cMark *m2 = marks->Next(m);
+        if (m2) { 
+            stringstream posNext;
+            posNext << m2->Position();
+            markVals.insert(pair< string, string >("marks[endposition]", posNext.str()));
+        } else {
+            markVals.insert(pair< string, string >("marks[endposition]", tot.str()));            
+        }
+        isStartMark = !isStartMark;
+        markTokens.push_back(markVals);
+    }
+    loopTokens.insert(pair< string, vector< map< string, string > > >("marks", markTokens));
+
+    ClearViewElement(veCuttingMarks);
+    DrawViewElement(veCuttingMarks, &stringTokens, &intTokens, &loopTokens);
+}
+
+void cDisplayReplayView::DrawControlIcons(bool play, bool forward, int speed, bool modeOnly) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    bool isPlay = false;
+    bool isPause = false;
+    bool isFF = false;
+    bool isFF1x = false;
+    bool isFF2x = false;
+    bool isFF3x = false;
+    bool isRew = false;
+    bool isRew1x = false;
+    bool isRew2x = false;
+    bool isRew3x = false;
+
+    if (speed == -1) {
+        if (play) {
+            isPlay = true;
+        } else {
+            isPause = true;
+        }
+    } else if (forward) {
+        if (!play) {
+            isPause = true;
+        }
+        if (speed == 1) {
+            isFF1x = true;
+        } else if (speed == 2) {
+            isFF2x = true;
+        } else if (speed == 3) {
+            isFF3x = true;
+        } else {
+            isFF = true;
+        }
+    } else {
+        if (!play) {
+            isPause = true;
+        }
+        if (speed == 1) {
+            isRew1x = true;
+        } else if (speed == 2) {
+            isRew2x = true;
+        } else if (speed == 3) {
+            isRew3x = true;
+        } else {
+            isRew = true;
+        }
+    }
+    intTokens.insert(pair<string,int>("play", isPlay));
+    intTokens.insert(pair<string,int>("pause", isPause));
+    intTokens.insert(pair<string,int>("forward", isFF));
+    intTokens.insert(pair<string,int>("forward1x", isFF1x));
+    intTokens.insert(pair<string,int>("forward2x", isFF2x));
+    intTokens.insert(pair<string,int>("forward3x", isFF3x));
+    intTokens.insert(pair<string,int>("rewind", isRew));
+    intTokens.insert(pair<string,int>("rewind1x", isRew1x));
+    intTokens.insert(pair<string,int>("rewind2x", isRew2x));
+    intTokens.insert(pair<string,int>("rewind3x", isRew3x));
+
+    if (modeOnly) {
+        ClearViewElement(veControlIconsModeOnly);
+        DrawViewElement(veControlIconsModeOnly, &stringTokens, &intTokens);
+    } else {
+        ClearViewElement(veControlIcons);
+        DrawViewElement(veControlIcons, &stringTokens, &intTokens);
+    }
+}
+
+void cDisplayReplayView::DrawJump(const char *jump) {
+    if (!jump) {
+        ClearViewElement(veRecJump);
+        return;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    stringTokens.insert(pair<string,string>("jump", jump));
+
+    ClearViewElement(veRecJump);
+    DrawViewElement(veRecJump, &stringTokens, &intTokens);        
+}
+
+void cDisplayReplayView::DrawMessage(eMessageType type, const char *text) {
+    if (!text) {
+        ClearViewElement(veMessage);
+        return;
+    }
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    
+    stringTokens.insert(pair<string,string>("text", text));
+
+    intTokens.insert(pair<string,int>("status",  (type == mtStatus)  ? true : false));
+    intTokens.insert(pair<string,int>("info",    (type == mtInfo)    ? true : false));
+    intTokens.insert(pair<string,int>("warning", (type == mtWarning) ? true : false));
+    intTokens.insert(pair<string,int>("error",   (type == mtError)   ? true : false));
+    
+    ClearViewElement(veMessage);
+    DrawViewElement(veMessage, &stringTokens, &intTokens);
+}
+
+void cDisplayReplayView::DrawOnPause(bool modeOnly) {
+    eViewElement veTmplOnPause = modeOnly ? veOnPauseModeOnly : veOnPause;
+    cTemplateViewElement *tmplOnPause = tmplView->GetViewElement(veTmplOnPause);
+    if (!tmplOnPause)
+        return;
+    onPauseView = new cDisplayReplayOnPauseView(tmplOnPause);
+    onPauseView->Start();
+}
+
+void cDisplayReplayView::ClearOnPause(void) {
+    if (onPauseView) {
+        delete onPauseView;
+        onPauseView = NULL;
+    }
+}
+
+void cDisplayReplayView::DelayOnPause(void) {
+    if (onPauseView) {
+        onPauseView->ResetSleep();
+    }
+}
+
+void cDisplayReplayView::DrawCustomTokens(void) {
+    if (!ViewElementImplemented(veCustomTokens)) {
+        return;
+    }
+    if (!tmplView)
+        return;
+    map < string, string > stringTokens = tmplView->GetCustomStringTokens();
+    map < string, int > intTokens = tmplView->GetCustomIntTokens();
+    DrawViewElement(veCustomTokens, &stringTokens, &intTokens);
+}
+
+/****************************************************************************************
+* Private Functions
+*****************************************************************************************/
+
+bool cDisplayReplayView::MarksChanged(const cMarks *marks, int current) {
+    if (!marks)
+        return false;
+
+    bool redraw = false;
+    //if mark was active, we redraw always
+    if (markActive >= 0) {
+        markActive = -1;
+        redraw = true;
+    }
+    //check if current position in recording hits mark exactly
+    for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
+        if (m->Position() == current) {
+            markActive = current;
+            redraw = true;
+            break;
+        }
+    }
+    if (redraw)
+        return true;
+    //if number of marks has changed, redraw
+    int numMarks = marks->Count();
+    if (numMarks != numMarksLast) {
+        RememberMarks(marks);
+        return true;
+    }
+    if (!lastMarks)
+        return false;
+    //if position has changed, redraw
+    int i=0;
+    for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
+        if (m->Position() != lastMarks[i]) {
+            RememberMarks(marks);
+            return true;
+        }
+        i++;
+    }
+    return false;
+}
+
+void cDisplayReplayView::RememberMarks(const cMarks *marks) {
+    if (!marks)
+        return;
+    numMarksLast = marks->Count();
+    if (numMarksLast < 1)
+        return;
+    if (lastMarks) {
+        delete[] lastMarks;
+    }
+    lastMarks = new int[numMarksLast];
+    int i=0;
+    for (const cMark *m = marks->First(); m; m = marks->Next(m)) {
+        lastMarks[i] = m->Position();
+        i++;
+    }
+}
+
+void cDisplayReplayView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+    cView::Action();
+}
diff --git a/views/displayreplayview.h b/views/displayreplayview.h
new file mode 100644
index 0000000..d5342c1
--- /dev/null
+++ b/views/displayreplayview.h
@@ -0,0 +1,42 @@
+#ifndef __DISPLAYREPLAYVIEW_H
+#define __DISPLAYREPLAYVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+#include "displayreplayonpauseview.h"
+
+class cDisplayReplayView : public cView, public cViewHelpers {
+private:
+    cDisplayReplayOnPauseView *onPauseView;
+    int numMarksLast;
+    int *lastMarks;
+    int markActive;
+    bool MarksChanged(const cMarks *marks, int current);
+    void RememberMarks(const cMarks *marks);
+    virtual void Action(void);
+public:
+    cDisplayReplayView(cTemplateView *tmplView);
+    virtual ~cDisplayReplayView();
+    bool createOsd(void);
+    void DrawBackground(bool modeOnly);
+    void DrawDate(void);
+    void DrawTime(void);
+    void DrawTitle(const cRecording *recording);
+    void DrawTitle(const char *title);
+    void DrawRecordingInformation(const cRecording *recording);
+    void DrawScraperContent(const cRecording *recording);
+    void DrawCurrent(const char *current);
+    void DrawTotal(const char *total);
+    void DrawProgressBar(int current, int total);
+    void DrawMarks(const cMarks *marks, int current, int total);
+    void DrawControlIcons(bool play, bool forward, int speed, bool modeOnly);
+    void DrawJump(const char *jump);
+    void DrawMessage(eMessageType type, const char *text);
+    void DrawOnPause(bool modeOnly);
+    void ClearOnPause(void);
+    void DelayOnPause(void);
+    void DrawCustomTokens(void);
+    void DoFadeIn(void) { Start(); };
+    void Flush(void) { DoFlush(); };
+};
+#endif //__DISPLAYREPLAYVIEW_H
diff --git a/views/displayvolumeview.c b/views/displayvolumeview.c
new file mode 100644
index 0000000..4ab2fdd
--- /dev/null
+++ b/views/displayvolumeview.c
@@ -0,0 +1,55 @@
+#define __STL_CONFIG_H
+#include <vdr/menu.h>
+#include "displayvolumeview.h"
+
+cDisplayVolumeView::cDisplayVolumeView(cTemplateView *tmplView) : cView(tmplView) {
+    volumeLast = -1;
+    muteLast = false;
+    DeleteOsdOnExit();
+    SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+}
+
+cDisplayVolumeView::~cDisplayVolumeView() {
+    CancelSave();
+    FadeOut();
+}
+
+bool cDisplayVolumeView::createOsd(void) {
+    cRect osdSize = tmplView->GetOsdSize();
+    bool ok = CreateOsd(cOsd::OsdLeft() + osdSize.X(),
+                        cOsd::OsdTop() + osdSize.Y(),
+                        osdSize.Width(),
+                        osdSize.Height());
+    return ok;
+}
+
+void cDisplayVolumeView::DrawBackground(void) {
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+    DrawViewElement(veBackground, &stringTokens, &intTokens);
+}
+
+void cDisplayVolumeView::DrawVolume(int current, int total, bool mute) {
+    if ((volumeLast == current) && (muteLast == mute))
+        return;
+    volumeLast = current;
+    muteLast = mute;
+    
+    map < string, string > stringTokens;
+    map < string, int > intTokens;
+
+    intTokens.insert(pair<string,int>("volume", current));
+    intTokens.insert(pair<string,int>("maxvolume", total));
+    intTokens.insert(pair<string,int>("volpercent", (double)current *100 / (double)total));
+    intTokens.insert(pair<string,int>("mute", mute));
+
+    ClearViewElement(veVolume);
+    DrawViewElement(veVolume, &stringTokens, &intTokens);
+}
+
+void cDisplayVolumeView::Action(void) {
+    SetInitFinished();
+    FadeIn();
+    DoFlush();
+    cView::Action();
+}
diff --git a/views/displayvolumeview.h b/views/displayvolumeview.h
new file mode 100644
index 0000000..544426e
--- /dev/null
+++ b/views/displayvolumeview.h
@@ -0,0 +1,21 @@
+#ifndef __DISPLAYVOLUMEVIEW_H
+#define __DISPLAYVOLUMEVIEW_H
+
+#include "../libtemplate/template.h"
+#include "view.h"
+
+class cDisplayVolumeView : public cView {
+private:
+    int volumeLast;
+    bool muteLast;
+    virtual void Action(void);
+public:
+    cDisplayVolumeView(cTemplateView *tmplView);
+    virtual ~cDisplayVolumeView();
+    bool createOsd(void);
+    void DrawBackground(void);
+    void DrawVolume(int current, int total, bool mute);
+    void DoFadeIn(void) { Start(); };
+    void Flush(void) { DoFlush(); };
+};
+#endif //__DISPLAYVOLUMEVIEW_H
diff --git a/views/view.c b/views/view.c
new file mode 100644
index 0000000..2b9c4bf
--- /dev/null
+++ b/views/view.c
@@ -0,0 +1,839 @@
+#include "view.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+#include "../libcore/imageloader.h"
+
+using namespace std;
+
+cView::cView(cTemplateView *tmplView) : cPixmapContainer(tmplView->GetNumPixmaps()) {
+    this->tmplView = tmplView;
+    tvScaled = tmplView->GetScalingWindow(scalingWindow);
+    if (tvScaled) {
+        cDevice::PrimaryDevice()->ScaleVideo(scalingWindow);
+    }
+    tmplItem = NULL;
+    tmplTab = NULL;
+    Init();
+}
+
+cView::cView(cTemplateViewElement *tmplItem) : cPixmapContainer(tmplItem->GetNumPixmaps()) {
+    this->tmplItem = tmplItem;
+    tmplView = NULL;
+    tmplTab = NULL;
+    tvScaled = false;
+    Init();
+}
+
+cView::cView(cTemplateViewTab *tmplTab) : cPixmapContainer(1) {
+    this->tmplTab = tmplTab;
+    tmplView = NULL;
+    tmplItem = NULL;
+    tvScaled = false;
+    Init();
+}
+
+cView::~cView() {
+    if (tvScaled) {
+        cDevice::PrimaryDevice()->ScaleVideo(cRect::Null);
+    }
+}
+
+void cView::Init(void) {
+    viewInit = true;
+    scrolling = false;
+    veScroll = veUndefined;
+    scrollingPix = -1;
+    scrollOrientation = orHorizontal;
+    scrollDelay = 0;
+    scrollMode = smNone;
+    scrollSpeed = ssMedium;
+    currentlyScrolling = false;
+}
+
+void cView::Action(void) {
+    if (scrolling) {
+        DoSleep(scrollDelay);
+        if (scrollOrientation == orHorizontal) {
+            ActivateScrolling();
+            ScrollHorizontal(scrollingPix, scrollDelay, scrollSpeed, scrollMode);
+        } else {
+            ScrollVertical(scrollingPix, scrollDelay, scrollSpeed);
+        }
+    }
+}
+
+void cView::Stop(void) {
+    CancelSave();
+}
+
+/********************************************************************************
+* Protected Functions
+********************************************************************************/
+
+void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens, map <string,int> *intTokens, map < string, vector< map< string, string > > > *loopTokens) {
+    //setting correct ViewElement, depending which constructor was used
+    cTemplateViewElement *viewElement;
+    if (tmplItem && (ve == veMenuCurrentItemDetail || ve == veOnPause)) {
+        viewElement = tmplItem;
+    } else if (tmplView) {
+        viewElement = tmplView->GetViewElement(ve);
+    }
+    if (!viewElement)
+        return;
+
+    if (viewElement->DebugTokens()) {
+        DebugTokens(tmplView ? (tmplView->GetViewElementName(ve)) : "current view", stringTokens, intTokens, loopTokens);
+    }
+    //iterate through pixmaps of viewelement
+    int pixCurrent = viewElement->GetPixOffset();
+    if (pixCurrent < 0)
+        return;
+    viewElement->InitIterator();
+    cTemplatePixmap *pix = NULL;
+    while(pix = viewElement->GetNextPixmap()) {
+        //reset Template 
+        pix->ClearDynamicParameters();
+        //create Pixmap if already fully parsed
+        if (!PixmapExists(pixCurrent) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
+            CreateViewPixmap(pixCurrent, pix);
+        }
+        //check if pixmap needs dynamic parameters  
+        if ((!pix->Ready() || !pix->DoExecute()) && !pix->Scrolling()) {
+            //parse dynamic parameters and initiate functions
+            pix->ParseDynamicParameters(intTokens, true);
+            if (pix->Ready() && pix->DoExecute()) {
+                CreateViewPixmap(pixCurrent, pix);
+            }
+        } else {
+            //parse dynamic parameters but not initiate functions
+            pix->ParseDynamicParameters(intTokens, false);
+        }
+        //if pixmap still not valid, skip
+        if (!pix->Ready() && !pix->Scrolling()) {
+            pixCurrent++;
+            continue;
+        }
+        //if condition for pixmap set, check if cond is true 
+        if (!pix->DoExecute()) {
+            pixCurrent++;
+            continue;
+        }
+        //parse dynamic tokens of pixmap functions
+        pix->ClearDynamicFunctionParameters();
+        pix->ParseDynamicFunctionParameters(stringTokens, intTokens);
+
+        if (!PixmapExists(pixCurrent) && pix->Scrolling()) {
+            cSize drawportSize;
+            scrolling = pix->CalculateDrawPortSize(drawportSize, loopTokens);
+            if (scrolling) {
+                CreateScrollingPixmap(pixCurrent, pix, drawportSize);
+                pix->SetScrollingTextWidth();
+                veScroll = ve;
+                scrollingPix = pixCurrent;
+                scrollOrientation = pix->GetNumericParameter(ptOrientation); 
+                scrollMode = pix->GetNumericParameter(ptScrollMode);
+                scrollDelay = pix->GetNumericParameter(ptDelay);
+                scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
+            } else {
+                CreateViewPixmap(pixCurrent, pix);              
+            }
+        }
+        if (pix->DoDebug()) {
+            pix->Debug();
+        }
+        
+        DrawPixmap(pixCurrent, pix, loopTokens);
+        pixCurrent++; 
+    }
+}
+
+void cView::ClearViewElement(eViewElement ve) {
+    if (!tmplView)
+        return;
+    cTemplateViewElement *viewElement = tmplView->GetViewElement(ve);
+    if (!viewElement)
+        return;
+    int pixCurrent = viewElement->GetPixOffset();
+    if (pixCurrent < 0)
+        return;
+    cTemplatePixmap *pix = NULL;
+    viewElement->InitIterator();
+    while(pix = viewElement->GetNextPixmap()) {
+        Fill(pixCurrent, clrTransparent);
+        pixCurrent++; 
+    }
+}
+
+void cView::ActivateScrolling(void) {
+    if (veScroll == veUndefined)
+        return;
+    cTemplateViewElement *scrollViewElement = NULL;
+    if (tmplView) {
+        scrollViewElement = tmplView->GetViewElement(veScroll);
+    }
+    if (!scrollViewElement)
+        return;
+
+    ClearViewElement(veScroll);
+    currentlyScrolling = true;
+    
+    int pixCurrent = scrollViewElement->GetPixOffset();
+    if (pixCurrent < 0)
+        return;
+    scrollViewElement->InitIterator();
+    cTemplatePixmap *pix = NULL;
+    while(pix = scrollViewElement->GetNextPixmap()) {
+        DrawPixmap(pixCurrent, pix);
+        pixCurrent++;
+    }
+}
+
+bool cView::ViewElementImplemented(eViewElement ve) {
+    return tmplView->GetNumPixmapsViewElement(ve);
+}
+
+void cView::CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size) {
+    cRect pixSize;
+    if (size) {
+        pixSize = *size;
+    } else {
+        pixSize = pix->GetPixmapSize();
+    }
+    int layer = pix->GetNumericParameter(ptLayer);
+    int transparency = pix->GetNumericParameter(ptTransparency);
+    SetTransparency(num, transparency);
+    CreatePixmap(num, layer, pixSize);
+}
+
+void cView::CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize) {
+    cRect pixViewPort = pix->GetPixmapSize();
+    cRect drawPort;
+    drawPort.SetX(0);
+    drawPort.SetY(0);
+    drawPort.SetWidth(drawportSize.Width());
+    drawPort.SetHeight(drawportSize.Height());
+    int layer = pix->GetNumericParameter(ptLayer);
+    int transparency = pix->GetNumericParameter(ptTransparency);
+    SetTransparency(num, transparency);
+    CreatePixmap(num, layer, pixViewPort, drawPort);
+}
+
+void cView::DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< string, string > > > *loopTokens, bool flushPerLoop) {
+    pix->InitIterator();
+    cTemplateFunction *func = NULL;
+    while(func = pix->GetNextFunction()) {
+        eFuncType type = func->GetType();
+        if (func->DoDebug()) {
+            func->Debug();
+        }
+        if (!func->DoExecute()) {
+            continue;
+        }
+        switch (type) {
+            case ftFill:
+                DoFill(num, func);
+                break;
+            case ftDrawText:
+                DoDrawText(num, func);
+                break;
+            case ftDrawTextBox: {
+                int floating = func->GetNumericParameter(ptFloat);
+                if (floating > flNone) {
+                    DoDrawFloatingTextBox(num, func);
+                } else {
+                    DoDrawTextBox(num, func);
+                }
+                break; }
+            case ftDrawRectangle:
+                DoDrawRectangle(num, func);
+                break;
+            case ftDrawEllipse:
+                DoDrawEllipse(num, func);
+                break;
+            case ftDrawSlope:
+                DoDrawSlope(num, func);
+                break;
+            case ftDrawImage:
+                DoDrawImage(num, func);
+                break;
+            case ftLoop:
+                if (loopTokens)
+                    DrawLoop(num, func, loopTokens);
+                break;
+            default:
+                break;
+        }
+        if (flushPerLoop) {
+            DoFlush();
+        }
+    }
+}
+
+void cView::DrawLoop(int numPixmap, cTemplateFunction *func, map < string, vector< map< string, string > > > *loopTokens) {
+    cTemplateLoopFunction *loopFunc = dynamic_cast<cTemplateLoopFunction*>(func);
+    if (!loopFunc)
+        return;
+    
+    int loopX0 = loopFunc->GetNumericParameter(ptX);
+    if (loopX0 < 0) loopX0 = 0;
+    int loopY0 = loopFunc->GetNumericParameter(ptY);
+    if (loopY0 < 0) loopY0 = 0;
+    int orientation = loopFunc->GetNumericParameter(ptOrientation);
+    int loopWidth = loopFunc->GetNumericParameter(ptWidth);
+    if (loopWidth <= 0)
+        loopWidth = loopFunc->GetContainerWidth();
+    int loopHeight = loopFunc->GetNumericParameter(ptHeight);
+    if (loopHeight <= 0)
+        loopHeight = loopFunc->GetContainerHeight();
+    int columnWidth = loopFunc->GetNumericParameter(ptColumnWidth);
+    int rowHeight = loopFunc->GetNumericParameter(ptRowHeight);
+    int overflow = loopFunc->GetNumericParameter(ptOverflow);
+    int maxItems = loopFunc->GetNumericParameter(ptNumElements);
+
+    int x0 = loopX0;
+    int y0 = loopY0;
+
+    string loopTokenName = loopFunc->GetParameter(ptName);
+
+    map < string, vector< map< string, string > > >::iterator hit = loopTokens->find(loopTokenName);
+    if (hit == loopTokens->end())
+        return;
+    vector< map<string,string> > loopToken = hit->second;
+    int lineNumber=0;
+    for (vector< map<string,string> >::iterator line = loopToken.begin(); line != loopToken.end(); line++) {
+        //check overflow behaviour
+        if (overflow == otCut) {
+            if (orientation == orHorizontal) {
+                if (lineNumber * columnWidth > loopWidth) {
+                    return;
+                }
+            } else if (orientation == orVertical) {
+                if (lineNumber * rowHeight > loopHeight) {
+                    return;
+                }                
+            }
+        } else if (overflow == otWrap && orientation == orHorizontal) {
+            if (x0 + columnWidth > loopWidth) {
+                x0 = loopX0;
+                if (rowHeight > 0) {
+                    y0 += rowHeight;
+                } else {
+                    y0 += loopFunc->GetLoopElementsHeight();
+                } 
+            }
+        }
+        map<string,string> tokens = *line;
+        loopFunc->ClearDynamicParameters();
+        loopFunc->ParseDynamicParameters(&tokens);
+        loopFunc->InitIterator();
+        cTemplateFunction *func = NULL;
+        while(func = loopFunc->GetNextFunction()) {
+            //do debug?
+            if (func->DoDebug())
+                func->Debug();
+            //check if set condition is true
+            if (!func->DoExecute()) {
+                continue;
+            }
+            //execute
+            eFuncType type = func->GetType();
+            switch (type) {
+                case ftDrawText:
+                    DoDrawText(numPixmap, func, x0, y0);
+                    break;
+                case ftDrawTextBox:
+                    DoDrawTextBox(numPixmap, func, x0, y0);
+                    break;
+                case ftDrawRectangle:
+                    DoDrawRectangle(numPixmap, func, x0, y0);
+                    break;
+                case ftDrawEllipse:
+                    DoDrawEllipse(numPixmap, func, x0, y0);
+                    break;
+                case ftDrawSlope:
+                    DoDrawSlope(numPixmap, func, x0, y0);
+                    break;
+                case ftDrawImage:
+                    DoDrawImage(numPixmap, func, x0, y0);
+                    break;
+                default:
+                    break;
+            }
+        }
+        //calculate position of next loop element 
+        if (orientation == orHorizontal) {
+            if (columnWidth > 0) {
+                x0 += columnWidth;
+            } else {
+                x0 += loopFunc->GetLoopElementsWidth();
+            }
+        } else if (orientation == orVertical) {
+            if (rowHeight > 0) {
+                y0 += rowHeight;
+            } else {
+                y0 += loopFunc->GetLoopElementsHeight();
+            }
+        }
+        lineNumber++;
+        //DoFlush();
+    }
+}
+
+void cView::DebugTokens(string viewElement, map<string,string> *stringTokens, map<string,int> *intTokens, map < string, vector< map< string, string > > > *loopTokens) {
+    esyslog("skindesigner: ------------------------------ Tokens for %s:", viewElement.c_str());
+    if (stringTokens) {
+        for (map<string,string>::iterator st = stringTokens->begin(); st != stringTokens->end(); st++) {
+            esyslog("skindesigner: string var \"%s\" = \"%s\"", (st->first).c_str(), (st->second).c_str());
+        }
+    }
+    if (intTokens) {
+        for (map<string,int>::iterator it = intTokens->begin(); it != intTokens->end(); it++) {
+            esyslog("skindesigner: int var \"%s\" = %d", (it->first).c_str(), it->second);
+        }
+    }
+    if (loopTokens) {
+        for(map < string, vector< map< string, string > > >::iterator it1 = loopTokens->begin(); it1 != loopTokens->end(); it1++) {
+            int line = 0;
+            string tokenName = it1->first; 
+            vector< map<string,string> > tokens = it1->second;
+            esyslog("skindesigner: loop token %s", tokenName.c_str());
+            for (vector< map<string,string> >::iterator it2 = tokens.begin(); it2 != tokens.end(); it2++) {
+                esyslog("skindesigner: loop tokens line %d:", line++);
+                map<string,string> element = *it2;
+                for (map<string,string>::iterator el = element.begin(); el != element.end(); el++) {
+                    esyslog("skindesigner: name: %s, value: %s", (el->first).c_str(), (el->second).c_str());
+                }
+            }
+        }
+    }
+}
+
+/*****************************************************************
+* Private Functions
+*****************************************************************/
+
+void cView::DoFill(int num, cTemplateFunction *func) {
+    tColor col = func->GetColorParameter(ptColor);
+    Fill(num, col);
+}
+
+void cView::DoDrawText(int num, cTemplateFunction *func, int x0, int y0) {
+    int x = func->GetNumericParameter(ptX);
+    if (x < 0) x = 0;
+    x += x0;
+    int y = func->GetNumericParameter(ptY);
+    if (y < 0) y = 0;
+    y += y0;
+    cPoint pos(x,y);
+    string fontName = func->GetFontName();
+    int fontSize = func->GetNumericParameter(ptFontSize);
+    tColor clr = func->GetColorParameter(ptColor);
+    tColor clrBack = clrTransparent;
+    string text = "";
+    if (!currentlyScrolling) {
+        text = func->GetText(true);
+    } else {
+        text = func->GetText(false);
+    }
+    DrawText(num, pos, text.c_str(), clr, clrBack, fontName, fontSize);
+}
+
+void cView::DoDrawTextBox(int num, cTemplateFunction *func, int x0, int y0) {
+    string text = func->GetText(false);
+    if (text.size() < 3)
+        return;
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+        x += x0;
+    if (y < 0) y = 0;
+        y += y0;        
+    int width = func->GetNumericParameter(ptWidth);
+    int height = func->GetNumericParameter(ptHeight);
+    string fontName = func->GetFontName();
+    int fontSize = func->GetNumericParameter(ptFontSize);
+    int align = func->GetNumericParameter(ptAlign);
+    int maxLines = func->GetNumericParameter(ptMaxLines);
+    tColor clr = func->GetColorParameter(ptColor);
+    tColor clrBack = clrTransparent;
+    const cFont *font = fontManager->Font(fontName, fontSize);
+    if (!font)
+        return;
+    cTextWrapper wrapper;
+    wrapper.Set(text.c_str(), font, width);
+    int fontHeight = fontManager->Height(fontName, fontSize);
+    int lines = wrapper.Lines();
+    int yLine = y;
+    for (int line=0; line < lines; line++) {
+        int xLine = x;
+        if (align == alCenter) {
+            int textWidth = font->Width(wrapper.GetLine(line));
+            xLine += (width - textWidth)/2;
+        } else if (align == alRight) {
+            int textWidth = font->Width(wrapper.GetLine(line));
+            xLine += (width - textWidth);           
+        }
+        cPoint pos(xLine, yLine);
+        if (maxLines > 0 && line == maxLines-1) {
+            string lastLine = wrapper.GetLine(line);
+        if (lines > maxLines) {
+                lastLine += "...";
+            }
+        DrawText(num, pos, lastLine.c_str(), clr, clrBack, fontName, fontSize);
+            break;
+        } else if (height > 0 && yLine - y + 2*fontHeight > height) {
+            DrawText(num, pos, "...", clr, clrBack, fontName, fontSize);
+            break;
+        }
+        DrawText(num, pos, wrapper.GetLine(line), clr, clrBack, fontName, fontSize);
+        yLine += fontHeight;
+    }
+}
+
+void cView::DoDrawFloatingTextBox(int num, cTemplateFunction *func) {
+    string text = func->GetText(false);
+    if (text.size() < 3)
+        return;
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+    if (y < 0) y = 0;
+    int width = func->GetNumericParameter(ptWidth);
+    int height = func->GetNumericParameter(ptHeight);
+    string fontName = func->GetFontName();
+    int fontSize = func->GetNumericParameter(ptFontSize);
+    tColor clr = func->GetColorParameter(ptColor);
+    tColor clrBack = clrTransparent;
+    const cFont *font = fontManager->Font(fontName, fontSize);
+    if (!font)
+        return;
+    int floatType = func->GetNumericParameter(ptFloat);
+    int floatWidth = func->GetNumericParameter(ptFloatWidth);
+    int floatHeight = func->GetNumericParameter(ptFloatHeight);
+
+    cTextWrapper wTextTall;
+    cTextWrapper wTextFull;
+    
+    int fontHeight = fontManager->Height(fontName, fontSize);
+    int linesNarrow = floatHeight / fontHeight;
+    int widthNarrow = width - floatWidth;
+    int linesDrawn = 0;
+    int curY = 0;
+    bool drawNarrow = true;
+
+    splitstring s(text.c_str());
+    std::vector<std::string> flds = s.split('\n', 1);
+
+    if (flds.size() < 1)
+        return;
+
+    std::stringstream sstrTextTall;
+    std::stringstream sstrTextFull;
+
+    for (int i=0; i<flds.size(); i++) {
+        if (!flds[i].size()) {
+            //empty line
+            linesDrawn++;
+            curY += fontHeight;
+            if (drawNarrow)
+                sstrTextTall << "\n";
+            else
+                sstrTextFull << "\n";
+        } else {
+            cTextWrapper wrapper;
+            if (drawNarrow) {
+                wrapper.Set((flds[i].c_str()), font, widthNarrow);
+                int newLines = wrapper.Lines();
+                //check if wrapper fits completely into narrow area
+                if (linesDrawn + newLines < linesNarrow) {
+                    for (int line = 0; line < wrapper.Lines(); line++) {
+                        sstrTextTall << wrapper.GetLine(line) << " ";
+                    }
+                    sstrTextTall << "\n";
+                    linesDrawn += newLines;
+                } else {
+                    //this wrapper has to be splitted
+                    for (int line = 0; line < wrapper.Lines(); line++) {
+                        if (line + linesDrawn < linesNarrow) {
+                            sstrTextTall << wrapper.GetLine(line) << " ";
+                        } else {
+                            sstrTextFull << wrapper.GetLine(line) << " ";
+                        }
+                    }
+                    sstrTextFull << "\n";
+                    drawNarrow = false;
+                }
+            } else {
+                wrapper.Set((flds[i].c_str()), font, width);
+                for (int line = 0; line < wrapper.Lines(); line++) {
+                    sstrTextFull << wrapper.GetLine(line) << " ";        
+                }
+                sstrTextFull << "\n";
+            }
+        }
+    }
+    //VDRs textwrapper swallows linebreaks at the end, so we have to fix that manually
+    string textTall = sstrTextTall.str();
+    size_t posLastCarriageReturn = textTall.find_last_not_of("\n");
+
+    int numLinesToAddAtTall = 0;
+    if (posLastCarriageReturn != string::npos && (posLastCarriageReturn < textTall.size() - 1)) {
+        numLinesToAddAtTall = textTall.size() - posLastCarriageReturn - 2;
+    }
+
+    wTextTall.Set(textTall.c_str(), font, widthNarrow);
+    wTextFull.Set(sstrTextFull.str().c_str(), font, width);
+
+    int textLinesTall = wTextTall.Lines();
+    int textLinesFull = wTextFull.Lines();
+
+    int textXTall = x;
+    if (floatType == flTopLeft)
+        textXTall = x + floatWidth;
+
+    int yLine = y;
+    for (int line=0; line < textLinesTall; line++) {
+        cPoint pos(textXTall, yLine);
+        DrawText(num, pos, wTextTall.GetLine(line), clr, clrBack, fontName, fontSize);
+        yLine += fontHeight;
+    }
+
+    if (numLinesToAddAtTall) {
+        yLine += numLinesToAddAtTall * fontHeight;
+    }
+
+    for (int line=0; line < textLinesFull; line++) {
+        cPoint pos(x, yLine);
+        if (height > 0 && yLine - y + 2*fontHeight > height) {
+            DrawText(num, pos, "...", clr, clrBack, fontName, fontSize);
+            break;
+        }
+        DrawText(num, pos, wTextFull.GetLine(line), clr, clrBack, fontName, fontSize);
+        yLine += fontHeight;
+    }
+}
+
+void cView::DoDrawRectangle(int num, cTemplateFunction *func, int x0, int y0) {
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+    x += x0;
+    if (y < 0) y = 0;
+    y += y0;
+    int w = func->GetNumericParameter(ptWidth);
+    int h = func->GetNumericParameter(ptHeight);
+    cRect size(x, y, w, h);
+    tColor clr = func->GetColorParameter(ptColor);
+    DrawRectangle(num, size, clr);
+}
+
+void cView::DoDrawEllipse(int num, cTemplateFunction *func, int x0, int y0) {
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+    x += x0;
+    if (y < 0) y = 0;
+    y += y0;
+    int w = func->GetNumericParameter(ptWidth);
+    int h = func->GetNumericParameter(ptHeight);
+    cRect size(x, y, w, h);
+    tColor clr = func->GetColorParameter(ptColor);
+    int quadrant = func->GetNumericParameter(ptQuadrant);
+    if (quadrant < -4 || quadrant > 8) {
+        esyslog("skindesigner: wrong quadrant %d for drawellipse, allowed values are from -4 to 8", quadrant);
+        quadrant = 0;
+    }
+    DrawEllipse(num, size, clr, quadrant);
+}
+
+void cView::DoDrawSlope(int num, cTemplateFunction *func, int x0, int y0) {
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+    x += x0;
+    if (y < 0) y = 0;
+    y += y0;
+    int w = func->GetNumericParameter(ptWidth);
+    int h = func->GetNumericParameter(ptHeight);
+    cRect size(x, y, w, h);
+    tColor clr = func->GetColorParameter(ptColor);
+    int type = func->GetNumericParameter(ptType);
+    if (type < 0 || type > 7) {
+        esyslog("skindesigner: wrong type %d for drawslope, allowed values are from 0 to 7", type);
+        type = 0;
+    }
+    DrawSlope(num, size, clr, type);
+}
+
+void cView::DoDrawImage(int num, cTemplateFunction *func, int x0, int y0) {
+    int x = func->GetNumericParameter(ptX);
+    int y = func->GetNumericParameter(ptY);
+    if (x < 0) x = 0;
+    x += x0;
+    if (y < 0) y = 0;
+    y += y0;
+    cPoint pos(x,y);
+    int width = func->GetNumericParameter(ptWidth);
+    int height = func->GetNumericParameter(ptHeight);
+    string path = func->GetImagePath();
+    eImageType type = (eImageType)func->GetNumericParameter(ptImageType);
+    switch (type) {
+        case itChannelLogo: {
+            cImage *logo = imgCache->GetLogo(path, width, height);
+            if (logo) {
+                DrawImage(num, pos, *logo);
+            }
+            break; }
+        case itSepLogo: {
+            cImage *sepLogo = imgCache->GetSeparatorLogo(path, width, height);
+            if (sepLogo) {
+                DrawImage(num, pos, *sepLogo);
+            }
+            break; }
+        case itSkinPart: {
+            cImage *skinpart = imgCache->GetSkinpart(path, width, height);
+            if (skinpart) {
+                DrawImage(num, pos, *skinpart);
+            }
+            break; }
+        case itIcon: {
+            cImage *icon = imgCache->GetIcon(type, path, width, height);
+            if (icon) {
+                DrawImage(num, pos, *icon);
+            }
+            break; }
+        case itMenuIcon: {
+            cImage *icon = imgCache->GetIcon(type, path, width, height);
+            if (icon) {
+                DrawImage(num, pos, *icon);
+            }
+            break; }
+        case itImage: {
+            cImageLoader imgLoader;
+            if (imgLoader.LoadImage(path.c_str())) {
+                cImage *image = imgLoader.CreateImage(width, height);
+                DrawImage(num, pos, *image);
+                delete(image);
+            }
+            break; }
+        default:
+            break;
+    }
+}
+
+/***********************************************************************
+* cViewListItem
+************************************************************************/
+
+cViewListItem::cViewListItem(cTemplateViewElement *tmplItem) : cView(tmplItem) {
+    pos = -1;
+    numTotal = 0;
+    align = alLeft;
+    listOrientation = orVertical;
+}
+
+cViewListItem::~cViewListItem() {
+
+}
+
+cRect cViewListItem::DrawListItem(map <string,string> *stringTokens, map <string,int> *intTokens) {
+    cRect posItem;
+    if (!tmplItem)
+        return posItem;
+
+    if (tmplItem->DebugTokens()) {
+        DebugTokens("ListItem", stringTokens, intTokens);
+    }
+
+    tmplItem->InitIterator();
+    cTemplatePixmap *pix = NULL;
+    int pixCurrent = 0;
+
+    while(pix = tmplItem->GetNextPixmap()) {
+        SetListElementPosition(pix);
+        if (pixCurrent == 0) {
+            posItem = pix->GetPixmapSize();
+        }
+        if (!PixmapExists(pixCurrent)) {
+            pix->ParseDynamicParameters(intTokens, true);
+        } else {
+            pix->ParseDynamicParameters(intTokens, false);            
+        }
+        if (!PixmapExists(pixCurrent) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
+            CreateViewPixmap(pixCurrent, pix);
+        }
+        //if pixmap still not valid, skip
+        if (!pix->Ready()  && !pix->Scrolling()) {
+            pixCurrent++;
+            continue;
+        }
+        //if condition for pixmap set, check if cond is true 
+        if (!pix->DoExecute()) {
+            pixCurrent++;
+            continue;
+        }
+    
+        pix->ClearDynamicFunctionParameters();
+        pix->ParseDynamicFunctionParameters(stringTokens, intTokens);
+
+        if (!PixmapExists(pixCurrent) && pix->Scrolling()) {
+            cSize drawportSize;
+            scrolling = pix->CalculateDrawPortSize(drawportSize);
+            pix->SetScrollingTextWidth();
+            if (scrolling) {
+                CreateScrollingPixmap(pixCurrent, pix, drawportSize);
+                scrollingPix = pixCurrent;
+                scrollOrientation = pix->GetNumericParameter(ptOrientation); 
+                scrollMode = pix->GetNumericParameter(ptScrollMode);
+                scrollDelay = pix->GetNumericParameter(ptDelay);
+                scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
+            } else {
+                CreateViewPixmap(pixCurrent, pix);
+            }
+        }
+        if (pix->DoDebug()) {
+            pix->Debug();
+        }
+        DrawPixmap(pixCurrent, pix);
+        pixCurrent++;
+    }
+    return posItem;
+}
+
+void cViewListItem::ClearListItem(void) {
+    int pixMax = NumPixmaps();
+    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
+        Fill(pixCurrent, clrTransparent);
+    }
+}
+
+void cViewListItem::SetListElementPosition(cTemplatePixmap *pix) {
+    int itemWidth = pix->GetNumericParameter(ptWidth);
+    int itemHeight = pix->GetNumericParameter(ptHeight);
+    int x = 0;
+    int y = 0;
+    if (listOrientation == orHorizontal) {
+        x = container.X();
+        int totalWidth = numTotal * itemWidth;
+        if (align == alCenter) {
+            y += (container.Width() - totalWidth) / 2;
+        } else if (align == alBottom) {
+            y += (container.Width() - totalWidth);
+        }
+        x += pos * itemWidth;
+        y = pix->GetNumericParameter(ptY);
+    } else if (listOrientation == orVertical) {
+        y = container.Y();
+        int totalHeight = numTotal * itemHeight;
+        if (align == alCenter) {
+            y += (container.Height() - totalHeight) / 2;
+        } else if (align == alBottom) {
+            y += (container.Height() - totalHeight);
+        }
+        y += pos * itemHeight;
+        x = pix->GetNumericParameter(ptX);
+    }
+    pix->SetX(x);
+    pix->SetY(y);
+}
+
diff --git a/views/view.h b/views/view.h
new file mode 100644
index 0000000..a793c31
--- /dev/null
+++ b/views/view.h
@@ -0,0 +1,73 @@
+#ifndef __VIEW_H
+#define __VIEW_H
+
+#include "string"
+#include "map"
+#include "../libcore/pixmapcontainer.h"
+#include "../libtemplate/template.h"
+
+using namespace std;
+
+class cView : public cPixmapContainer {
+private:
+    void Init(void);
+    void DoFill(int num, cTemplateFunction *func);
+    void DoDrawText(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void DoDrawTextBox(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void DoDrawFloatingTextBox(int num, cTemplateFunction *func);
+    void DoDrawRectangle(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void DoDrawEllipse(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void DoDrawSlope(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void DoDrawImage(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
+    void ActivateScrolling(void);
+protected:
+    cTemplateView *tmplView;
+    cTemplateViewElement *tmplItem;
+    cTemplateViewTab *tmplTab;
+    //scaling window
+    cRect scalingWindow;
+    bool tvScaled;
+    bool viewInit;
+    //true if view is scrollable in general
+    bool scrolling;
+    //true if view is actually starting scrolling
+    bool currentlyScrolling;
+    eViewElement veScroll;
+    int scrollingPix;
+    int scrollOrientation;
+    int scrollDelay;
+    int scrollMode;
+    int scrollSpeed;
+    void DrawViewElement(eViewElement ve, map <string,string> *stringTokens = NULL, map <string,int> *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL);
+    void ClearViewElement(eViewElement ve);
+    bool ViewElementImplemented(eViewElement ve);
+    void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL);
+    void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize);
+    void DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< string, string > > > *loopTokens = NULL, bool flushPerLoop = false);
+    void DrawLoop(int numPixmap, cTemplateFunction *func, map < string, vector< map< string, string > > > *loopTokens);
+    void DebugTokens(string viewElement, map<string,string> *stringTokens, map<string,int> *intTokens, map < string, vector< map< string, string > > > *loopTokens = NULL);
+    virtual void Action(void);
+public:
+    cView(cTemplateView *tmplView);
+    cView(cTemplateViewElement *tmplItem);
+    cView(cTemplateViewTab *tmplTab);
+    virtual ~cView();
+    virtual void Stop(void);
+};
+
+class cViewListItem : public cView {
+protected:
+    int pos;
+    int numTotal; 
+    cRect container;
+    int align;
+    int listOrientation;
+    void SetListElementPosition(cTemplatePixmap *pix);
+public:
+    cViewListItem(cTemplateViewElement *tmplItem);
+    virtual ~cViewListItem();
+    cRect DrawListItem(map <string,string> *stringTokens, map <string,int> *intTokens);
+    void ClearListItem(void);
+};
+
+#endif //__VIEW_H
\ No newline at end of file
diff --git a/views/viewhelpers.c b/views/viewhelpers.c
new file mode 100644
index 0000000..e10798f
--- /dev/null
+++ b/views/viewhelpers.c
@@ -0,0 +1,457 @@
+#include <vdr/menu.h>
+#include "../services/scraper2vdr.h"
+#include "../services/weatherforecast.h"
+#include "../config.h"
+#include "../libcore/helpers.h"
+#include "viewhelpers.h"
+
+cViewHelpers::cViewHelpers(void) {
+    devicesInit = false;
+    lastSecond = -1;
+    lastMinute = -1;
+}
+
+cViewHelpers::~cViewHelpers() {
+    if (devicesInit) {
+        delete[] lastSignalStrength;
+        delete[] lastSignalQuality;
+        delete[] recDevices;
+    }
+}
+
+void cViewHelpers::InitDevices(void) {
+    int numDevices = cDevice::NumDevices();
+    lastSignalStrength = new int[numDevices];
+    lastSignalQuality = new int[numDevices];
+    recDevices = new bool[numDevices];
+    for (int i=0; i<numDevices; i++) {
+        lastSignalStrength[i] = 0;
+        lastSignalQuality[i] = 0;
+        recDevices[i] = false;
+    }
+    devicesInit = true;
+}
+
+bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices) {
+#ifdef DOPROFILE
+    cStopWatch watch("SetDevices");
+#endif
+    int numDevices = cDevice::NumDevices();
+    if (!initial) {
+        //check if drawing is necessary
+        bool changed = false;
+        for (int i = 0; i < numDevices; i++) {
+            const cDevice *device = cDevice::GetDevice(i);
+            if (!device || !device->NumProvidedSystems()) {
+                continue;
+            }
+            int signalStrength = device->SignalStrength();
+#ifdef DOPROFILE
+            watch.Report(*cString::sprintf("SignalStrength() device %d", i));
+#endif
+            int signalQuality = device->SignalQuality();
+#ifdef DOPROFILE
+            watch.Report(*cString::sprintf("SignalQuality() device %d", i));
+#endif
+
+            if ((signalStrength != lastSignalStrength[i]) || (signalQuality != lastSignalQuality[i])) {
+                changed = true;
+                break;
+            }            
+        }
+        if (!changed) {
+#ifdef DOPROFILE
+            watch.Stop("SetDevices End");
+#endif
+            return false;
+        }
+    }
+    //check device which currently displays live tv
+    int deviceLiveTV = -1;
+    cDevice *primaryDevice = cDevice::PrimaryDevice();
+    if (primaryDevice) {
+        if (!primaryDevice->Replaying() || primaryDevice->Transferring())
+            deviceLiveTV = cDevice::ActualDevice()->DeviceNumber();
+        else
+            deviceLiveTV = primaryDevice->DeviceNumber();
+    }
+    //check currently recording devices
+    for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
+        if (!timer->Recording()) {
+            continue;
+        }
+        if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
+            const cDevice *recDevice = RecordControl->Device();
+            if (recDevice) {
+                recDevices[recDevice->DeviceNumber()] = true;
+            }
+        }
+    }
+    int actualNumDevices = 0;
+    for (int i = 0; i < numDevices; i++) {
+        const cDevice *device = cDevice::GetDevice(i);
+        if (!device || !device->NumProvidedSystems()) {
+            continue;
+        }
+        
+        map< string, string > deviceVals;
+        stringstream strNum;
+        strNum << actualNumDevices;
+        actualNumDevices++;
+        deviceVals.insert(pair< string, string >("devices[num]", strNum.str()));
+        deviceVals.insert(pair< string, string >("devices[type]", *(device->DeviceType())));
+        cCamSlot *camSlot = device->CamSlot();
+        int camNumber = -1;
+        if (camSlot) {
+            camNumber = camSlot->SlotNumber();
+            deviceVals.insert(pair< string, string >("devices[hascam]", "1"));
+        } else {
+            deviceVals.insert(pair< string, string >("devices[hascam]", "0"));
+        }
+        int signalStrength = device->SignalStrength();
+#ifdef DOPROFILE
+        watch.Report(*cString::sprintf("SignalStrength() device %d", i));
+#endif
+        int signalQuality = device->SignalQuality();
+#ifdef DOPROFILE
+        watch.Report(*cString::sprintf("SignalQuality() device %d", i));
+#endif
+        stringstream strCamNumber;
+        strCamNumber << camNumber;
+        deviceVals.insert(pair< string, string >("devices[cam]", strCamNumber.str()));
+        stringstream strStrength;
+        strStrength << signalStrength;
+        deviceVals.insert(pair< string, string >("devices[signalstrength]", strStrength.str()));
+        stringstream strQuality;
+        strQuality << signalQuality;
+        deviceVals.insert(pair< string, string >("devices[signalquality]", strQuality.str()));
+
+        deviceVals.insert(pair< string, string >("devices[livetv]", i == deviceLiveTV ? "1" : "0"));
+        deviceVals.insert(pair< string, string >("devices[recording]", recDevices[i] ? "1" : "0"));
+
+        const cChannel *channel = device->GetCurrentlyTunedTransponder();
+        const cSource *source = (channel) ? Sources.Get(channel->Source()) : NULL;
+        if (channel && channel->Number() > 0) {
+            stringstream strChanNum;
+            strChanNum << channel->Number();
+            deviceVals.insert(pair< string, string >("devices[channelnumber]", strChanNum.str()));
+            deviceVals.insert(pair< string, string >("devices[channelname]", channel->Name()));
+            string channelID = *(channel->GetChannelID().ToString());
+            deviceVals.insert(pair< string, string >("devices[channelid]", channelID));
+            deviceVals.insert(pair< string, string >("devices[channellogoexists]", imgCache->LogoExists(channelID) ? "1" : "0"));
+            deviceVals.insert(pair< string, string >("devices[istuned]", "1"));
+        } else {
+            deviceVals.insert(pair< string, string >("devices[channelnumber]", "0"));
+            deviceVals.insert(pair< string, string >("devices[channelname]", ""));
+            deviceVals.insert(pair< string, string >("devices[channelid]", ""));
+            deviceVals.insert(pair< string, string >("devices[channellogoexists]", "0"));
+            deviceVals.insert(pair< string, string >("devices[istuned]", "0"));
+        }
+    
+        deviceVals.insert(pair< string, string >("devices[source]", source ? source->Description() : ""));
+
+        devices->push_back(deviceVals);
+
+        lastSignalStrength[i] = signalStrength;
+        lastSignalQuality[i] = signalQuality;
+    }
+
+    intTokens->insert(pair<string, int>("numdevices", actualNumDevices));
+#ifdef DOPROFILE
+    watch.Stop("SetDevices End");
+#endif
+    return true;
+}
+
+bool cViewHelpers::CheckNewMails(void) {
+    static cPlugin *pMailbox = cPluginManager::GetPlugin("mailbox");
+    if (!pMailbox) {
+        return false;
+    }
+    bool newMail = false;
+    if (pMailbox->Service("MailBox-HasNewMail-1.0", &newMail)) {
+        return newMail;
+    }
+    return false;
+}
+
+void cViewHelpers::SetScraperTokens(const cEvent *event, const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens, map < string, vector< map< string, string > > > &loopTokens) {
+    static cPlugin *pScraper = GetScraperPlugin();
+    if (!pScraper || (!event && !recording)) {
+        intTokens.insert(pair<string,int>("ismovie", false));
+        intTokens.insert(pair<string,int>("isseries", false));
+        return;
+    }
+
+    ScraperGetEventType getType;
+    getType.event = event;
+    getType.recording = recording;
+    if (!pScraper->Service("GetEventType", &getType)) {
+        intTokens.insert(pair<string,int>("ismovie", false));
+        intTokens.insert(pair<string,int>("isseries", false));
+        return;
+    }
+
+    if (getType.type == tMovie) {
+        cMovie movie;
+        movie.movieId = getType.movieId;
+        pScraper->Service("GetMovie", &movie);
+        intTokens.insert(pair<string,int>("ismovie", true));
+        intTokens.insert(pair<string,int>("isseries", false));
+
+        stringTokens.insert(pair<string,string>("movietitle", movie.title));
+        stringTokens.insert(pair<string,string>("movieoriginalTitle", movie.originalTitle));
+        stringTokens.insert(pair<string,string>("movietagline", movie.tagline));
+        stringTokens.insert(pair<string,string>("movieoverview", movie.overview));
+        stringTokens.insert(pair<string,string>("moviegenres", movie.genres));
+        stringTokens.insert(pair<string,string>("moviehomepage", movie.homepage));
+        stringTokens.insert(pair<string,string>("moviereleasedate", movie.releaseDate));
+        stringstream pop;
+        pop << movie.popularity;
+        stringTokens.insert(pair<string,string>("moviepopularity", pop.str()));
+        stringstream vote;
+        vote << movie.voteAverage;
+        stringTokens.insert(pair<string,string>("movievoteaverage", pop.str()));
+        stringTokens.insert(pair<string,string>("posterpath", movie.poster.path));
+        stringTokens.insert(pair<string,string>("fanartpath", movie.fanart.path));
+        stringTokens.insert(pair<string,string>("collectionposterpath", movie.collectionPoster.path));
+        stringTokens.insert(pair<string,string>("collectionfanartpath", movie.collectionFanart.path));
+
+        intTokens.insert(pair<string,int>("movieadult", movie.adult));
+        intTokens.insert(pair<string,int>("moviebudget", movie.budget));
+        intTokens.insert(pair<string,int>("movierevenue", movie.revenue));
+        intTokens.insert(pair<string,int>("movieruntime", movie.runtime));
+        intTokens.insert(pair<string,int>("posterwidth", movie.poster.width));
+        intTokens.insert(pair<string,int>("posterheight", movie.poster.height));
+        intTokens.insert(pair<string,int>("fanartwidth", movie.fanart.width));
+        intTokens.insert(pair<string,int>("fanartheight", movie.fanart.height));
+        intTokens.insert(pair<string,int>("collectionposterwidth", movie.collectionPoster.width));
+        intTokens.insert(pair<string,int>("collectionposterheight", movie.collectionPoster.height));
+        intTokens.insert(pair<string,int>("collectionfanartwidth", movie.collectionFanart.width));
+        intTokens.insert(pair<string,int>("collectionfanartheight", movie.collectionFanart.height));
+
+        vector< map< string, string > > actors;
+        for (vector<cActor>::iterator act = movie.actors.begin(); act != movie.actors.end(); act++) {
+            map< string, string > actor;
+            actor.insert(pair<string, string>("actors[name]", (*act).name));
+            actor.insert(pair<string, string>("actors[role]", (*act).role));
+            actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
+            stringstream actWidth, actHeight;
+            actWidth << (*act).actorThumb.width;
+            actHeight << (*act).actorThumb.height;
+            actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
+            actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
+            actors.push_back(actor);
+        }
+        loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
+
+    } else if (getType.type == tSeries) {
+        cSeries series;
+        series.seriesId = getType.seriesId;
+        series.episodeId = getType.episodeId;
+        pScraper->Service("GetSeries", &series);
+        intTokens.insert(pair<string,int>("ismovie", false));
+        intTokens.insert(pair<string,int>("isseries", true));
+        //Series Basics
+        stringTokens.insert(pair<string,string>("seriesname", series.name));
+        stringTokens.insert(pair<string,string>("seriesoverview", series.overview));
+        stringTokens.insert(pair<string,string>("seriesfirstaired", series.firstAired));
+        stringTokens.insert(pair<string,string>("seriesnetwork", series.network));
+        stringTokens.insert(pair<string,string>("seriesgenre", series.genre));
+        stringstream rating;
+        rating << series.rating;
+        stringTokens.insert(pair<string,string>("seriesrating", rating.str()));
+        stringTokens.insert(pair<string,string>("seriesstatus", series.status));
+        //Episode Information
+        intTokens.insert(pair<string,int>("episodenumber", series.episode.number));
+        intTokens.insert(pair<string,int>("episodeseason", series.episode.season));
+        stringTokens.insert(pair<string,string>("episodetitle", series.episode.name));
+        stringTokens.insert(pair<string,string>("episodefirstaired", series.episode.firstAired));
+        stringTokens.insert(pair<string,string>("episodegueststars", series.episode.guestStars));
+        stringTokens.insert(pair<string,string>("episodeoverview", series.episode.overview));
+        stringstream eprating;
+        eprating << series.episode.rating;
+        stringTokens.insert(pair<string,string>("episoderating", eprating.str()));
+        intTokens.insert(pair<string,int>("episodeimagewidth", series.episode.episodeImage.width));
+        intTokens.insert(pair<string,int>("episodeimageheight", series.episode.episodeImage.height));
+        stringTokens.insert(pair<string,string>("episodeimagepath", series.episode.episodeImage.path));
+        //Seasonposter
+        intTokens.insert(pair<string,int>("seasonposterwidth", series.seasonPoster.width));
+        intTokens.insert(pair<string,int>("seasonposterheight", series.seasonPoster.height));
+        stringTokens.insert(pair<string,string>("seasonposterpath", series.seasonPoster.path));
+
+        //Posters
+        int current = 1;
+        for(vector<cTvMedia>::iterator poster = series.posters.begin(); poster != series.posters.end(); poster++) {
+            stringstream labelWidth, labelHeight, labelPath;
+            labelWidth << "seriesposter" << current << "width";
+            labelHeight << "seriesposter" << current << "height";
+            labelPath << "seriesposter" << current << "path";
+
+            intTokens.insert(pair<string,int>(labelWidth.str(), (*poster).width));
+            intTokens.insert(pair<string,int>(labelHeight.str(), (*poster).height));
+            stringTokens.insert(pair<string,string>(labelPath.str(), (*poster).path));
+            current++;
+        }
+        if (current < 3) {
+            for (; current < 4; current++) {
+                stringstream labelWidth, labelHeight, labelPath;
+                labelWidth << "seriesposter" << current << "width";
+                labelHeight << "seriesposter" << current << "height";
+                labelPath << "seriesposter" << current << "path";
+                
+                intTokens.insert(pair<string,int>(labelWidth.str(), 0));
+                intTokens.insert(pair<string,int>(labelHeight.str(), 0));
+                stringTokens.insert(pair<string,string>(labelPath.str(), ""));
+            }
+        }
+
+        //Banners
+        current = 1;
+        for(vector<cTvMedia>::iterator banner = series.banners.begin(); banner != series.banners.end(); banner++) {
+            stringstream labelWidth, labelHeight, labelPath;
+            labelWidth << "seriesbanner" << current << "width";
+            labelHeight << "seriesbanner" << current << "height";
+            labelPath << "seriesbanner" << current << "path";
+            
+            intTokens.insert(pair<string,int>(labelWidth.str(), (*banner).width));
+            intTokens.insert(pair<string,int>(labelHeight.str(), (*banner).height));
+            stringTokens.insert(pair<string,string>(labelPath.str(), (*banner).path));
+            current++;
+        }
+        if (current < 3) {
+            for (; current < 4; current++) {
+                stringstream labelWidth, labelHeight, labelPath;
+                labelWidth << "seriesbanner" << current << "width";
+                labelHeight << "seriesbanner" << current << "height";
+                labelPath << "seriesbanner" << current << "path";
+                
+                intTokens.insert(pair<string,int>(labelWidth.str(), 0));
+                intTokens.insert(pair<string,int>(labelHeight.str(), 0));
+                stringTokens.insert(pair<string,string>(labelPath.str(), ""));
+            }
+        }
+        
+        //Fanarts
+        current = 1;
+        for(vector<cTvMedia>::iterator fanart = series.fanarts.begin(); fanart != series.fanarts.end(); fanart++) {
+            stringstream labelWidth, labelHeight, labelPath;
+            labelWidth << "seriesfanart" << current << "width";
+            labelHeight << "seriesfanart" << current << "height";
+            labelPath << "seriesfanart" << current << "path";
+            
+            intTokens.insert(pair<string,int>(labelWidth.str(), (*fanart).width));
+            intTokens.insert(pair<string,int>(labelHeight.str(), (*fanart).height));
+            stringTokens.insert(pair<string,string>(labelPath.str(), (*fanart).path));
+            current++;
+        }
+        if (current < 3) {
+            for (; current < 4; current++) {
+                stringstream labelWidth, labelHeight, labelPath;
+                labelWidth << "seriesfanart" << current << "width";
+                labelHeight << "seriesfanart" << current << "height";
+                labelPath << "seriesfanart" << current << "path";
+                
+                intTokens.insert(pair<string,int>(labelWidth.str(), 0));
+                intTokens.insert(pair<string,int>(labelHeight.str(), 0));
+                stringTokens.insert(pair<string,string>(labelPath.str(), ""));
+            }
+        }
+        
+        //Actors
+       vector< map< string, string > > actors;
+        for (vector<cActor>::iterator act = series.actors.begin(); act != series.actors.end(); act++) {
+            map< string, string > actor;
+            actor.insert(pair<string, string>("actors[name]", (*act).name));
+            actor.insert(pair<string, string>("actors[role]", (*act).role));
+            actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
+            stringstream actWidth, actHeight;
+            actWidth << (*act).actorThumb.width;
+            actHeight << (*act).actorThumb.height;
+            actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
+            actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
+            actors.push_back(actor);
+        }
+        loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
+
+    } else {
+        intTokens.insert(pair<string,int>("ismovie", false));
+        intTokens.insert(pair<string,int>("isseries", false));
+    }
+
+}
+
+bool cViewHelpers::SetTime(map < string, string > &stringTokens, map < string, int > &intTokens) {
+    time_t t = time(0);   // get time now
+    struct tm * now = localtime(&t);
+    int sec = now->tm_sec;
+    if (sec == lastSecond)
+        return false;
+
+    int min = now->tm_min;
+    int hour = now->tm_hour;
+    int hourMinutes = hour%12 * 5 + min / 12;
+
+    intTokens.insert(pair<string, int>("sec", sec));
+    intTokens.insert(pair<string, int>("min", min));
+    intTokens.insert(pair<string, int>("hour", hour));
+    intTokens.insert(pair<string, int>("hmins", hourMinutes));
+    
+    lastSecond = sec;
+    return true;
+}
+
+bool cViewHelpers::SetDate(map < string, string > &stringTokens, map < string, int > &intTokens) {
+    time_t t = time(0);   // get time now
+    struct tm * now = localtime(&t);
+    int min = now->tm_min;
+    if (min == lastMinute)
+        return false;
+
+    intTokens.insert(pair<string, int>("year", now->tm_year + 1900));
+    intTokens.insert(pair<string, int>("day", now->tm_mday));
+
+    char monthname[20];
+    char monthshort[10];
+    strftime(monthshort, sizeof(monthshort), "%b", now);
+    strftime(monthname, sizeof(monthname), "%B", now);
+
+    stringTokens.insert(pair<string,string>("monthname", monthname));
+    stringTokens.insert(pair<string,string>("monthnameshort", monthshort));
+    stringTokens.insert(pair<string,string>("month", *cString::sprintf("%02d", now->tm_mon + 1)));
+    stringTokens.insert(pair<string,string>("dayleadingzero", *cString::sprintf("%02d", now->tm_mday)));
+    stringTokens.insert(pair<string,string>("dayname", *WeekDayNameFull(now->tm_wday)));
+    stringTokens.insert(pair<string,string>("daynameshort", *WeekDayName(now->tm_wday)));
+    stringTokens.insert(pair<string,string>("time", *TimeString(t)));
+
+    return true;
+}
+
+bool cViewHelpers::SetCurrentWeatherTokens(map < string, string > &stringTokens, map < string, int > &intTokens) {
+    static cPlugin *pWeatherForecast = cPluginManager::GetPlugin("weatherforecast");
+    if (!pWeatherForecast)
+        return false;
+    cServiceCurrentWeather currentWeather;
+    if (!pWeatherForecast->Service("GetCurrentWeather", &currentWeather)) {
+        return false;
+    }
+    stringTokens.insert(pair<string,string>("timestamp", currentWeather.timeStamp));
+    stringTokens.insert(pair<string,string>("temperature", currentWeather.temperature));
+    stringTokens.insert(pair<string,string>("apparenttemperature", currentWeather.apparentTemperature));
+    stringTokens.insert(pair<string,string>("mintemperature", currentWeather.minTemperature));
+    stringTokens.insert(pair<string,string>("maxtemperature", currentWeather.maxTemperature));
+    stringTokens.insert(pair<string,string>("summary", currentWeather.summary));
+    stringTokens.insert(pair<string,string>("icon", currentWeather.icon));
+    stringTokens.insert(pair<string,string>("precipitationintensity", currentWeather.precipitationIntensity));
+    intTokens.insert(pair<string,int>("precipitationprobability", currentWeather.precipitationProbability));
+    stringTokens.insert(pair<string,string>("precipitationtype", currentWeather.precipitationType));
+    intTokens.insert(pair<string,int>("humidity", currentWeather.humidity));
+    stringTokens.insert(pair<string,string>("windspeed", currentWeather.windSpeed));
+    intTokens.insert(pair<string,int>("windbearing", currentWeather.windBearing));
+    stringTokens.insert(pair<string,string>("windbearingstring", currentWeather.windBearingString));
+    stringTokens.insert(pair<string,string>("visibility", currentWeather.visibility));
+    intTokens.insert(pair<string,int>("cloudcover", currentWeather.cloudCover));
+    stringTokens.insert(pair<string,string>("pressure", currentWeather.pressure));
+    stringTokens.insert(pair<string,string>("ozone", currentWeather.ozone));
+    return true;
+}
diff --git a/views/viewhelpers.h b/views/viewhelpers.h
new file mode 100644
index 0000000..8e49554
--- /dev/null
+++ b/views/viewhelpers.h
@@ -0,0 +1,25 @@
+#ifndef __VIEWHELPERS_H
+#define __VIEWHELPERS_H
+
+class cViewHelpers {
+private:
+    bool devicesInit;
+    int* lastSignalStrength;
+    int* lastSignalQuality;
+    bool* recDevices;
+    int lastSecond;
+    int lastMinute;
+protected:
+    void InitDevices(void);
+    bool SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices);
+    bool CheckNewMails(void);
+    void SetScraperTokens(const cEvent *event, const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens, map < string, vector< map< string, string > > > &loopTokens);
+    bool SetTime(map < string, string > &stringTokens, map < string, int > &intTokens);
+    bool SetDate(map < string, string > &stringTokens, map < string, int > &intTokens);
+    bool SetCurrentWeatherTokens(map < string, string > &stringTokens, map < string, int > &intTokens);
+public:
+    cViewHelpers(void);
+    virtual ~cViewHelpers(void);
+};
+
+#endif //__VIEWHELPERS_H
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/vdr-plugin-skindesigner.git



More information about the pkg-vdr-dvb-changes mailing list