diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index bd969df..a574896 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -663,7 +663,7 @@ static bool dbg_hw_info(void)
 
     while (!(action_userabort(TIMEOUT_BLOCK)));
     
-#else
+#elif (CONFIG_PLATFORM & PLATFORM_NATIVE)
     /* Define this function in your target tree */
     return __dbg_hw_info();
 #endif /* CONFIG_CPU */
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 53c38e0..43bd307 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -35,6 +35,12 @@ target/hosted/sdl/lcd-sdl.c
 target/hosted/sdl/system-sdl.c
 target/hosted/sdl/thread-sdl.c
 target/hosted/sdl/timer-sdl.c
+#ifdef HAVE_TOUCHSCREEN
+target/hosted/sdl/key_to_touch-sdl.c
+#endif
+#ifdef APPLICATION
+target/hosted/sdl/app/button-application.c
+#endif
 #endif
 panic.c
 debug.c
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index b8214e6..05fdb67 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -69,6 +69,10 @@
 #if defined(HAVE_SDL_AUDIO)
 /* #include <SDL_audio.h> gives errors in other code areas,
  * we don't really need it here, so don't. but it should maybe be fixed */
+#ifndef SIMULATOR /* simulator gets values from the target .h files */
+#define VOLUME_MIN  -990
+#define VOLUME_MAX  0
+#endif
 #endif
 
 
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 29d68cd..e058150 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -424,6 +424,9 @@ Lyre prototype 1 */
 #include "config/vibe500.h"
 #elif defined(MPIO_HD200)
 #include "config/mpiohd200.h"
+
+#elif defined(APPLICATION)
+#include "config/application.h"
 #else
 /* no known platform */
 #endif
diff --git a/firmware/export/config/application.h b/firmware/export/config/application.h
new file mode 100644
index 0000000..48c384d
--- /dev/null
+++ b/firmware/export/config/application.h
@@ -0,0 +1,94 @@
+/*
+ * This config file is for Rockbox as an application!
+ */
+#define TARGET_TREE /* this target is using the target tree system */
+
+/* We don't run on hardware directly */
+#define CONFIG_PLATFORM PLATFORM_HOSTED
+/* For Rolo and boot loader */
+/*
+#define MODEL_NUMBER 24
+*/
+
+#define MODEL_NAME   "Rockbox"
+
+#define USB_NONE
+
+/* define this if you have a bitmap LCD display */
+#define HAVE_LCD_BITMAP
+
+/* define this if you have a colour LCD */
+#define HAVE_LCD_COLOR
+
+/* define this if you want album art for this target */
+#define HAVE_ALBUMART
+
+/* define this to enable bitmap scaling */
+#define HAVE_BMP_SCALING
+
+/* define this to enable JPEG decoding */
+#define HAVE_JPEG
+
+/* define this if you have access to the quickscreen */
+#define HAVE_QUICKSCREEN
+/* define this if you have access to the pitchscreen */
+#define HAVE_PITCHSCREEN
+
+/* define this if you would like tagcache to build on this target */
+#define HAVE_TAGCACHE
+
+/* LCD dimensions */
+#define LCD_WIDTH  320
+#define LCD_HEIGHT 240
+#define LCD_DEPTH  16
+#define LCD_PIXELFORMAT 565
+
+/* define this to indicate your device's keypad */
+#define HAVE_TOUCHSCREEN
+#define HAVE_BUTTON_DATA
+
+/* define this if you have RTC RAM available for settings */
+//#define HAVE_RTC_RAM
+
+/* The number of bytes reserved for loadable codecs */
+#define CODEC_SIZE 0x100000
+
+/* The number of bytes reserved for loadable plugins */
+#define PLUGIN_BUFFER_SIZE 0x80000
+
+#define AB_REPEAT_ENABLE 1
+
+/* Define this if you do software codec */
+#define CONFIG_CODEC SWCODEC
+
+#define CONFIG_KEYPAD COWON_D2_PAD
+/* Use SDL audio/pcm in a SDL app build */
+#define HAVE_SDL
+
+#ifdef HAVE_SDL
+#define HAVE_SDL_AUDIO
+#endif
+
+/* Use WM8985 EQ1 & EQ5 as hardware tone controls */
+/* #define HAVE_SW_TONE_CONTROLS */
+
+/* Define current usage levels. */
+#define CURRENT_NORMAL     88 /* 18 hours from a 1600 mAh battery */  
+#define CURRENT_BACKLIGHT  30 /* TBD */ 
+#define CURRENT_RECORD     0  /* no recording yet */ 
+
+/* Define this to the CPU frequency */
+/*
+#define CPU_FREQ 48000000
+*/
+
+/* Offset ( in the firmware file's header ) to the file CRC */
+#define FIRMWARE_OFFSET_FILE_CRC 0
+
+/* Offset ( in the firmware file's header ) to the real data */
+#define FIRMWARE_OFFSET_FILE_DATA 8
+
+#define CONFIG_LCD LCD_COWOND2
+
+/* Define this if a programmable hotkey is mapped */
+//#define HAVE_HOTKEY
diff --git a/firmware/target/hosted/sdl/app/adc-target.h b/firmware/target/hosted/sdl/app/adc-target.h
new file mode 100644
index 0000000..e69de29
diff --git a/firmware/target/hosted/sdl/app/button-application.c b/firmware/target/hosted/sdl/app/button-application.c
new file mode 100644
index 0000000..a27f769
--- /dev/null
+++ b/firmware/target/hosted/sdl/app/button-application.c
@@ -0,0 +1,29 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Thomas Martitz
+ *
+ * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************9*************************/
+
+
+#include "button.h"
+
+int key_to_button(int keyboard_key)
+{
+    (void)keyboard_key;
+    return BUTTON_NONE;
+}
diff --git a/firmware/target/hosted/sdl/app/button-target.h b/firmware/target/hosted/sdl/app/button-target.h
new file mode 100644
index 0000000..54ae3a2
--- /dev/null
+++ b/firmware/target/hosted/sdl/app/button-target.h
@@ -0,0 +1,68 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2007 by Rob Purchase
+ *
+ * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef _BUTTON_TARGET_H_
+#define _BUTTON_TARGET_H_
+
+#include <stdbool.h>
+#include "config.h"
+/*
+
+#define HAS_BUTTON_HOLD
+
+bool button_hold(void);
+*/
+void button_init_device(void);
+int button_read_device(int *data);
+
+/* Main unit's buttons */
+#define BUTTON_POWER      0x00000001
+#define BUTTON_PLUS       0x00000002
+#define BUTTON_MINUS      0x00000004
+#define BUTTON_MENU       0x00000008
+
+/* Compatibility hacks for flipping. Needs a somewhat better fix. */
+#define BUTTON_LEFT  BUTTON_MIDLEFT
+#define BUTTON_RIGHT BUTTON_MIDRIGHT
+#define BUTTON_UP    BUTTON_TOPMIDDLE
+#define BUTTON_DOWN  BUTTON_BOTTOMMIDDLE
+
+/* Touch Screen Area Buttons */
+#define BUTTON_TOPLEFT      0x00000010
+#define BUTTON_TOPMIDDLE    0x00000020
+#define BUTTON_TOPRIGHT     0x00000040
+#define BUTTON_MIDLEFT      0x00000080
+#define BUTTON_CENTER       0x00000100
+#define BUTTON_MIDRIGHT     0x00000200
+#define BUTTON_BOTTOMLEFT   0x00000400
+#define BUTTON_BOTTOMMIDDLE 0x00000800
+#define BUTTON_BOTTOMRIGHT  0x00001000
+
+#define BUTTON_MAIN 0x1FFF
+
+/* No remote */
+#define BUTTON_REMOTE 0
+
+/* Software power-off */
+#define POWEROFF_BUTTON BUTTON_POWER
+#define POWEROFF_COUNT 10
+                
+#endif /* _BUTTON_TARGET_H_ */
diff --git a/firmware/target/hosted/sdl/app/i2c-target.h b/firmware/target/hosted/sdl/app/i2c-target.h
new file mode 100644
index 0000000..e69de29
diff --git a/firmware/target/hosted/sdl/app/usb-target.h b/firmware/target/hosted/sdl/app/usb-target.h
new file mode 100644
index 0000000..e69de29
diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c
index 8b236c1..837c16c 100644
--- a/firmware/target/hosted/sdl/button-sdl.c
+++ b/firmware/target/hosted/sdl/button-sdl.c
@@ -31,10 +31,8 @@
 #include "misc.h"
 #include "button-sdl.h"
 #include "backlight.h"
-#ifdef SIMULATOR
 #include "sim_tasks.h"
 #include "buttonmap.h"
-#endif
 #include "debug.h"
 
 #ifdef HAVE_TOUCHSCREEN
@@ -139,6 +137,7 @@ bool gui_message_loop(void)
                             x = event.button.x;
                             y = event.button.y;
                         }
+#ifdef SIMULATOR
                         if ( background ) {
                             xybutton = xy2button( event.button.x, event.button.y );
                             if( xybutton ) {
@@ -146,6 +145,7 @@ bool gui_message_loop(void)
                                 break;
                             }
                         }
+#endif
 #ifdef HAVE_TOUCHSCREEN
                         touchscreen_event(event.button.x, event.button.y);
 #endif
diff --git a/firmware/target/hosted/sdl/buttonmap.h b/firmware/target/hosted/sdl/buttonmap.h
new file mode 100644
index 0000000..e90b8a4
--- /dev/null
+++ b/firmware/target/hosted/sdl/buttonmap.h
@@ -0,0 +1,43 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2010 by Fred Bauer
+ *
+ * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef __BUTTONMAP_H__
+#define __BUTTONMAP_H__
+/* Button maps: simulated key, x, y, radius, name */
+/* Run sim with --mapping to get coordinates      */
+/* or --debugbuttons to check                     */
+/* The First matching button is returned          */
+struct button_map {
+    int button, x, y, radius;
+    char *description;
+};
+
+extern struct button_map bm[];
+
+int xy2button( int x, int y);
+
+/* for the sim, these function is implemented in uisimulator/buttonmap/ *.c */
+int key_to_button(int keyboard_button);
+#ifdef HAVE_TOUCHSCREEN
+int key_to_touch(int keyboard_button, unsigned int mouse_coords);
+#endif
+
+#endif /* __BUTTONMAP_H__ */
diff --git a/firmware/target/hosted/sdl/key_to_touch-sdl.c b/firmware/target/hosted/sdl/key_to_touch-sdl.c
new file mode 100644
index 0000000..90518c7
--- /dev/null
+++ b/firmware/target/hosted/sdl/key_to_touch-sdl.c
@@ -0,0 +1,96 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2008 Jonathan Gordon
+ *
+ * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+
+#include <stdio.h>
+#include <SDL.h>
+#include "button.h"
+#include "buttonmap.h"
+#include "touchscreen.h"
+
+int key_to_touch(int keyboard_button, unsigned int mouse_coords)
+{
+    int new_btn = BUTTON_NONE;
+    switch (keyboard_button)
+    {
+        case BUTTON_TOUCHSCREEN:
+            switch (touchscreen_get_mode())
+            {
+                case TOUCHSCREEN_POINT:
+                    new_btn = BUTTON_TOUCHSCREEN;
+                    break;
+                case TOUCHSCREEN_BUTTON:
+                {
+                    static const int touchscreen_buttons[3][3] = {
+                        {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT},
+                        {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT},
+                        {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT},
+                    };
+                    int px_x = ((mouse_coords&0xffff0000)>>16);
+                    int px_y = ((mouse_coords&0x0000ffff));
+                    new_btn = touchscreen_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)];
+                    break;
+                }
+            }
+            break;
+        case SDLK_KP7:
+        case SDLK_7:
+            new_btn = BUTTON_TOPLEFT;
+            break;
+        case SDLK_KP8:
+        case SDLK_8:
+        case SDLK_UP:
+            new_btn = BUTTON_TOPMIDDLE;
+            break;
+        case SDLK_KP9:
+        case SDLK_9:
+            new_btn = BUTTON_TOPRIGHT;
+            break;
+        case SDLK_KP4:
+        case SDLK_u:
+        case SDLK_LEFT:
+            new_btn = BUTTON_MIDLEFT;
+            break;
+        case SDLK_KP5:
+        case SDLK_i:
+            new_btn = BUTTON_CENTER;
+            break;
+        case SDLK_KP6:
+        case SDLK_o:
+        case SDLK_RIGHT:
+            new_btn = BUTTON_MIDRIGHT;
+            break;
+        case SDLK_KP1:
+        case SDLK_j:
+            new_btn = BUTTON_BOTTOMLEFT;
+            break;
+        case SDLK_KP2:
+        case SDLK_k:
+        case SDLK_DOWN:
+            new_btn = BUTTON_BOTTOMMIDDLE;
+            break;
+        case SDLK_KP3:
+        case SDLK_l:
+            new_btn = BUTTON_BOTTOMRIGHT;
+            break;
+    }
+    return new_btn;
+}
diff --git a/firmware/target/hosted/sdl/sim-ui-defines.h b/firmware/target/hosted/sdl/sim-ui-defines.h
index 567a618..926356d 100644
--- a/firmware/target/hosted/sdl/sim-ui-defines.h
+++ b/firmware/target/hosted/sdl/sim-ui-defines.h
@@ -397,6 +397,13 @@
 #define UI_LCD_POSX                 101
 #define UI_LCD_POSY                 195
 
+#elif defined(APPLICATION)
+#define UI_TITLE                    "Rockbox"
+#define UI_LCD_POSX                 0
+#define UI_LCD_POSY                 0
+#define UI_WIDTH                    LCD_WIDTH
+#define UI_HEIGHT                   LCD_HEIGHT
+
 #elif defined(SIMULATOR)
 #error no UI defines
 #endif
diff --git a/firmware/target/hosted/sdl/system-target.h b/firmware/target/hosted/sdl/system-target.h
new file mode 100644
index 0000000..31194fc
--- /dev/null
+++ b/firmware/target/hosted/sdl/system-target.h
@@ -0,0 +1 @@
+#include "system-sdl.h"
diff --git a/tools/buildzip.pl b/tools/buildzip.pl
index aa25e26..f0a2c6a 100755
--- a/tools/buildzip.pl
+++ b/tools/buildzip.pl
@@ -474,6 +474,7 @@ $year+=1900;
 # made once for all targets
 sub runone {
     my ($target, $fonts)=@_;
+    my $samedir = abs_path($install) == abs_path($rbdir);
 
     # build a full install .rockbox ($rbdir) directory
     buildzip($target, $fonts);
@@ -498,14 +499,18 @@ sub runone {
         if ($install =~ /\/dev\/null/) {
             die "ERROR: No PREFIX given\n"
         }
-        system("cp -r $rbdir \"$install\" >/dev/null");
+        if (!$samedir) {
+            system("cp -r $rbdir \"$install\" >/dev/null");
+        }
     }
     else {
         system("$ziptool $output $rbdir $target >/dev/null");
     }
 
     # remove the $rbdir afterwards
-    rmtree($rbdir);
+    if (!$samedir) {
+        rmtree($rbdir);
+    }
 };
 
 if(!$exe) {
diff --git a/tools/configure b/tools/configure
index 09f2f23..803c95d 100755
--- a/tools/configure
+++ b/tools/configure
@@ -959,8 +959,9 @@ cat <<EOF
  142) YH-925              ==Packard Bell==       130) Lyre proto 1
  143) YP-S3               160) Vibe 500          131) Mini2440
 
- ==MPIO==
- 170) HD200
+ ==MPIO==                                        == Application ==
+ 170) HD200                                      200) SDL 320x240
+
 EOF
 
   buildfor=`input`;
@@ -2588,6 +2589,28 @@ fi
     t_model="hd200"
     ;;
 
+   200|app*)
+    target_id=100
+    modelname="application"
+    target="-DAPPLICATION"
+    memory=32
+    uname=`uname`
+    simcc "sdl"
+    tool="cp "
+    boottool="cp "
+    bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+    bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+    output="rockbox"
+    bootoutput="bootloader-cowond2.bin"
+    appextra="recorder:gui:radio"
+    plugins=""
+    swcodec="yes"
+    # architecture, manufacturer and model for the target-tree build
+    t_cpu="hosted"
+    t_manufacturer="sdl"
+    t_model="app"
+    ;;
+
    *)
     echo "Please select a supported target platform!"
     exit 7
diff --git a/uisimulator/buttonmap/SOURCES b/uisimulator/buttonmap/SOURCES
index f5a409b..0fc9d16 100644
--- a/uisimulator/buttonmap/SOURCES
+++ b/uisimulator/buttonmap/SOURCES
@@ -1,8 +1,5 @@
 #ifdef SIMULATOR
 buttonmaps.c
-#ifdef HAVE_TOUCHSCREEN
-touchscreen.c
-#endif
 #if CONFIG_KEYPAD == GIGABEAT_PAD
 gigabeat.c
 #elif CONFIG_KEYPAD == GIGABEAT_S_PAD
diff --git a/uisimulator/buttonmap/buttonmap.h b/uisimulator/buttonmap/buttonmap.h
deleted file mode 100644
index 2f14cea..0000000
--- a/uisimulator/buttonmap/buttonmap.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/***************************************************************************
- *             __________               __   ___.
- *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
- *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
- *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
- *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
- *                     \/            \/     \/    \/            \/
- * $Id$
- *
- * Copyright (C) 2010 by Fred Bauer
- *
- * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#ifndef __BUTTONMAP_H__
-#define __BUTTONMAP_H__
-/* Button maps: simulated key, x, y, radius, name */
-/* Run sim with --mapping to get coordinates      */
-/* or --debugbuttons to check                     */
-/* The First matching button is returned          */
-struct button_map {
-    int button, x, y, radius;
-    char *description;
-};
-
-extern struct button_map bm[];
-
-int xy2button( int x, int y);
-
-int key_to_button(int keyboard_button);
-#ifdef HAVE_TOUCHSCREEN
-int key_to_touch(int keyboard_button, unsigned int mouse_coords);
-#endif
-
-#endif /* __BUTTONMAP_H__ */
diff --git a/uisimulator/buttonmap/touchscreen.c b/uisimulator/buttonmap/touchscreen.c
deleted file mode 100644
index 90518c7..0000000
--- a/uisimulator/buttonmap/touchscreen.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/***************************************************************************
- *             __________               __   ___.
- *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
- *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
- *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
- *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
- *                     \/            \/     \/    \/            \/
- * $Id$
- *
- * Copyright (C) 2008 Jonathan Gordon
- *
- * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-
-#include <stdio.h>
-#include <SDL.h>
-#include "button.h"
-#include "buttonmap.h"
-#include "touchscreen.h"
-
-int key_to_touch(int keyboard_button, unsigned int mouse_coords)
-{
-    int new_btn = BUTTON_NONE;
-    switch (keyboard_button)
-    {
-        case BUTTON_TOUCHSCREEN:
-            switch (touchscreen_get_mode())
-            {
-                case TOUCHSCREEN_POINT:
-                    new_btn = BUTTON_TOUCHSCREEN;
-                    break;
-                case TOUCHSCREEN_BUTTON:
-                {
-                    static const int touchscreen_buttons[3][3] = {
-                        {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT},
-                        {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT},
-                        {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT},
-                    };
-                    int px_x = ((mouse_coords&0xffff0000)>>16);
-                    int px_y = ((mouse_coords&0x0000ffff));
-                    new_btn = touchscreen_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)];
-                    break;
-                }
-            }
-            break;
-        case SDLK_KP7:
-        case SDLK_7:
-            new_btn = BUTTON_TOPLEFT;
-            break;
-        case SDLK_KP8:
-        case SDLK_8:
-        case SDLK_UP:
-            new_btn = BUTTON_TOPMIDDLE;
-            break;
-        case SDLK_KP9:
-        case SDLK_9:
-            new_btn = BUTTON_TOPRIGHT;
-            break;
-        case SDLK_KP4:
-        case SDLK_u:
-        case SDLK_LEFT:
-            new_btn = BUTTON_MIDLEFT;
-            break;
-        case SDLK_KP5:
-        case SDLK_i:
-            new_btn = BUTTON_CENTER;
-            break;
-        case SDLK_KP6:
-        case SDLK_o:
-        case SDLK_RIGHT:
-            new_btn = BUTTON_MIDRIGHT;
-            break;
-        case SDLK_KP1:
-        case SDLK_j:
-            new_btn = BUTTON_BOTTOMLEFT;
-            break;
-        case SDLK_KP2:
-        case SDLK_k:
-        case SDLK_DOWN:
-            new_btn = BUTTON_BOTTOMMIDDLE;
-            break;
-        case SDLK_KP3:
-        case SDLK_l:
-            new_btn = BUTTON_BOTTOMRIGHT;
-            break;
-    }
-    return new_btn;
-}
diff --git a/uisimulator/common/SOURCES b/uisimulator/common/SOURCES
index 4d7165a..a30b5ab 100644
--- a/uisimulator/common/SOURCES
+++ b/uisimulator/common/SOURCES
@@ -1,13 +1,16 @@
-fmradio.c
-io.c
+#ifndef APPLICATION
 lcd-common.c
 #ifdef HAVE_LCD_CHARCELLS
 font-player.c
 lcd-playersim.c
 sim_icons.c
 #endif
-sim_tasks.c
-stubs.c
-powermgmt-sim.c
+fmradio.c
 backlight-sim.c
+#endif
 
+/* this is still needed for application since it has some stubs */
+powermgmt-sim.c
+io.c
+sim_tasks.c
+stubs.c
diff --git a/uisimulator/uisimulator.make b/uisimulator/uisimulator.make
index 219d890..f3c9068 100644
--- a/uisimulator/uisimulator.make
+++ b/uisimulator/uisimulator.make
@@ -18,7 +18,11 @@ SIMOBJ = $(call c2obj,$(SIMSRC))
 OTHER_SRC += $(SIMSRC)
 
 SIMLIB = $(BUILDDIR)/uisimulator/libuisimulator.a
-UIBMP = $(BUILDDIR)/UI256.bmp
+ifeq ($(MODELNAME), application)
+UIBMP=
+else
+UIBMP=$(BUILDDIR)/UI256.bmp
+endif
 
 .SECONDEXPANSION: # $$(OBJ) is not populated until after this
 
