diff --git a/examples/bare1.rs b/examples/bare1.rs
index 24ed553e890241e9df86fba7335e91ae702460fe..2bf9442bf94bfdc17b20c5a444fef414480e5a46 100644
--- a/examples/bare1.rs
+++ b/examples/bare1.rs
@@ -13,6 +13,8 @@
 extern crate panic_halt;
 
 use cortex_m_rt::entry;
+use cortex_m::{iprintln, Peripherals};
+use cortex_m_semihosting::hprintln;
 
 #[entry]
 #[inline(never)]
@@ -20,10 +22,15 @@ fn main() -> ! {
     // Prepend by `x` by _ to avoid warning (never used).
     // The compiler is smart enough to figure out that
     // `x` is not used in any meaningful way.
-
     let mut _x = 0;
+
+    let mut p = Peripherals::take().unwrap();
+    let stim = &mut p.ITM.stim[0];
+
     loop {
+        hprintln!("{}", _x).unwrap();
         _x += 1;
+        iprintln!(stim, "{}", _x);
         // cortex_m::asm::nop();
         // cortex_m::asm::bkpt();
         _x -= 1;
@@ -55,10 +62,16 @@ fn main() -> ! {
 //    loop, (press pause/suspend to verify this).
 //    what is the output in the ITM console
 //
-//    ** your answer here **
+//    * 1
+//    * 1
+//    * 1
+//    * ...
 //
 //    What is the output in the semihosting (openocd) console
-//    ** your answer here **
+//    * 0
+//    * 0
+//    * 0 
+//    * ...
 //
 //    Commit your answers (bare1_1)
 //