diff --git a/run/sleeper.run b/run/sleeper.run
new file mode 100644
index 0000000..ae865d4
--- /dev/null
+++ b/run/sleeper.run
@@ -0,0 +1,45 @@
+#
+# Build
+#
+
+build { core init drivers/timer app/sleeper }
+
+create_boot_directory
+
+#
+# Generate config
+#
+
+install_config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+#
+# Boot image
+#
+
+build_boot_image { core ld.lib.so init sleeper timer }
+
+append qemu_args " -nographic "
+
+run_genode_until forever
+run_genode_until "Waking up...*\n" 10
diff --git a/src/app/sleeper/main.cc b/src/app/sleeper/main.cc
new file mode 100644
index 0000000..496f0a4
--- /dev/null
+++ b/src/app/sleeper/main.cc
@@ -0,0 +1,50 @@
+#include
+#include
+
+#include
+
+namespace Sleeper {
+ struct Main;
+ struct Test;
+}
+
+struct Sleeper::Test
+{
+ Genode::Env &env;
+ Timer::Connection timer { env };
+ Genode::Signal_transmitter done;
+
+ Test(Genode::Env &env, Genode::Signal_context_capability done) : env(env), done(done)
+ {
+ Genode::log("Going to sleep...");
+ timer.msleep(5000);
+ Genode::log("Waking up...");
+ }
+};
+
+struct Sleeper::Main
+{
+ Genode::Env &_env;
+
+ Genode::Constructible test_1 { };
+ Genode::Signal_handler test_1_done { _env.ep(), *this, &Main::handle_test_1_done };
+
+ void handle_test_1_done()
+ {
+ test_1.destruct();
+ }
+
+ Main(Genode::Env &env) : _env(env)
+ {
+ Genode::log("Hello World from sleeper!");
+
+ test_1.construct(env, test_1_done);
+
+ Genode::log("yeah?");
+ }
+};
+
+void Component::construct(Genode::Env &env)
+{
+ static Sleeper::Main main(env);
+}
\ No newline at end of file
diff --git a/src/app/sleeper/target.mk b/src/app/sleeper/target.mk
new file mode 100644
index 0000000..da3e78f
--- /dev/null
+++ b/src/app/sleeper/target.mk
@@ -0,0 +1,3 @@
+TARGET = sleeper
+SRC_CC = main.cc
+LIBS = base