diff --git a/.settings/com.github.rustdt.ide.core.prefs b/.settings/com.github.rustdt.ide.core.prefs
index a781144342e350f6f1b5cdd9164df2ac2536953e..cee1592168a3e7edefc43f22c3b505ee6d4a84e4 100644
--- a/.settings/com.github.rustdt.ide.core.prefs
+++ b/.settings/com.github.rustdt.ide.core.prefs
@@ -1,4 +1,4 @@
-build_targets=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<build_targets xmlns\="com.github.rustdt.ide.core">\n<target auto_enabled\="false" config\="build" n_enabled\="false" version2\="true">\n<command_invocation append_env\="true" command_arguments\=" xargo build --example bare0&\#10;">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="true" config\="check" n_enabled\="false" version2\="true">\n<command_invocation append_env\="true" command_arguments\="xargo build --example bare0&\#10;">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="false" config\="clean" n_enabled\="false" version2\="true"/>\n</build_targets>\n
+build_targets=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<build_targets xmlns\="com.github.rustdt.ide.core">\n<target auto_enabled\="false" config\="build" n_enabled\="false" version2\="true">\n<command_invocation append_env\="true" command_arguments\=" xargo build --example bare0&\#10;">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="false" config\="check" n_enabled\="false" version2\="true">\n<command_invocation append_env\="true" command_arguments\="xargo build --example bare0&\#10;">\n<env_vars/>\n</command_invocation>\n</target>\n<target auto_enabled\="false" config\="clean" n_enabled\="false" version2\="true"/>\n</build_targets>\n
 eclipse.preferences.version=1
 format_onSave=true
 racer_path=/home/pln/.cargo/bin/racer
diff --git a/examples/bare1.rs b/examples/bare1.rs
index 4c5dcee41ec23c933896d03516ce48e6dceec986..696de888efbda691a6d5568a76a8f158ab988978 100644
--- a/examples/bare1.rs
+++ b/examples/bare1.rs
@@ -1,5 +1,5 @@
 //! bare1.rs
-//! Simple bare metal application
+//! Simple bare metal tracing
 
 // feature to ensure symbols to be linked
 #![feature(used)]
@@ -7,30 +7,84 @@
 #![no_std]
 
 // API to the ARM Cortex M Peripherals
-//extern crate cortex_m;
+extern crate cortex_m;
 
 // Minimal runtime / startup for Cortex-M microcontrollers
 extern crate cortex_m_rt;
 
 // Convenient tracing over semihosting and ITM
-// #[macro_use]
-// extern crate cortex_m_debug;
+#[macro_use]
+extern crate cortex_m_debug;
 
 #[inline(never)]
 fn main() {
     // ITM trace (fast)
     // start `itmdump` before `openocd`
-    // ipln!("ITM: Hello World");
+    ipln!("ITM: Hello World");
 
     // semihosting trace (slow)
-    // sprintln!("SEMIHOSTING: Hello World");
+    sprintln!("SEMIHOSTING: Hello World");
 
     // to prevent returning
     loop {
         // cortex_m::asm::nop();
+        // cortex_m::asm::bkpt();
     }
 }
 
+// 1. build and run the application
+// start ITM tracing to console
+// > itmdump /tmp/itm.log
+// start openocd (in my case...)
+// > openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
+//
+// when debugging the application it should get stuck in the
+// loop, (press pause/suspend to verify this).
+// what is the output in the ITM console
+// ** your answer here **
+//
+// what is the output in the semihosting (openocd) console
+// ** your answer here **
+//
+// commit your answers (bare1_1)
+//
+// 2. inspecting the assembly
+// what is shown in the Dissasmbly view, what instruction is executing
+// (if you are NOT under eclipse, then give the command in gdb console
+// (gdb) disassemble
+// ** your answer here **
+//
+// commit your answers (bare1_2)
+//
+// 3. now remove the comment line 30.
+// rebuild and debug, pause the program.
+// what is shown in the Dissasmbly view, what instruction is executing
+// ** your answer here **
+//
+// commit your answers (bare1_3)
+//
+// 4. now remeve the comment line 31
+// what is shown in the Dissasmbly view, what instruction is executing
+// ** your answer here **
+//
+// commit your answers (bare1_4)
+//
+// 5. release mode (optimized builds)
+// rebuild bare1 in release (optimized mode)
+// compare the generated assembly for the loop
+// between the dev (unoptimized) and release (optimized) build
+// in Atollic/eclipse the easiest way is to build the target using
+// > xargo build --release --examples
+// in gdb console
+// > file target/thumbv7em-none-eabihf/release/examples/bare1
+// so l
+// (which sources/executes the gbd script l, which loads the file)
+// c
+// (to continue executing)
+// ** your answer here **
+//
+// commit your answers (bare1_5)
+
 // As we are not using interrupts, we just register a dummy catch all handler
 #[link_section = ".vector_table.interrupts"]
 #[used]
diff --git a/l b/l
new file mode 100644
index 0000000000000000000000000000000000000000..683a8e5eb54d6c7aefc4ecf84a84d9a420fc1b06
--- /dev/null
+++ b/l
@@ -0,0 +1 @@
+monitor reset init
\ No newline at end of file
diff --git a/r b/r
index 683a8e5eb54d6c7aefc4ecf84a84d9a420fc1b06..1bbe365458f4b1a29bfe41b33384cdf19174e4b0 100644
--- a/r
+++ b/r
@@ -1 +1,3 @@
-monitor reset init
\ No newline at end of file
+monitor reset init
+load
+monitor reset init
diff --git a/rtfm-app Debug.launch b/rtfm-app Debug.launch
deleted file mode 100644
index 84c6946f2977c90130dfc825942375c4c2c48f17..0000000000000000000000000000000000000000
--- a/rtfm-app Debug.launch	
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="com.atollic.hardwaredebug.launch.launchConfigurationType">
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.cpu_core" value="Cortex-M"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value="STM32F401RE"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/>
-<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_check_serial_number" value="false"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_path" value=""/>
-<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_used" value="false"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_trace_port_cfg_path" value="/opt/truestudio/ide/plugins/com.atollic.truestudio.tsp.stm32_1.0.0.20171023-2304/tsp/etm/stm32f4xx.init"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_txt_serial_number" value=""/>
-<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/>
-<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/>
-<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/>
-<stringAttribute key="com.atollic.hardwaredebug.jlink_common.selected_rtos" value="No RTOS"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here&#10;"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="OpenOCD"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="3333"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target remote"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Load the program executable&#10;load&#10;&#10;# Set a breakpoint at main().&#10;#tbreak main&#10;&#10;# Run to the breakpoint.&#10;continue"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value=""/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="false"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="false"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="2332"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="0"/>
-<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="16000000"/>
-<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/>
-<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/>
-<stringAttribute key="com.atollic.hardwaredebug.openocd.server_target" value="remote"/>
-<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/>
-<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
-<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
-<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
-<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
-<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="/home/pln/Atollic/TrueSTUDIO/ARM_workspace_8.1/rtfm-app/target/thumbv7em-none-eabihf/debug/examples/bare0.elf"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="rtfm-app"/>
-<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/rtfm-app"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#10;"/>
-<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
-</launchConfiguration>