diff --git a/examples/bare0.rs b/examples/bare0.rs
index dc5286464891aa76943663b8c076761d4452d1c4..f54e9509402fbee65ecdd8df8a14ced982d58f2e 100644
--- a/examples/bare0.rs
+++ b/examples/bare0.rs
@@ -33,17 +33,33 @@ const X_INIT: u32 = core::u32::MAX;
 static mut X: u32 = X_INIT;
 static mut Y: u32 = 0;
 
+fn read_x()->u32{
+    unsafe{X}
+}
+fn read_y()->u32{
+    unsafe{Y}
+}
+
+fn write_y(y:u32){
+    unsafe{Y=y};
+}
+
+fn write_x(x:u32){
+    unsafe{X=x};
+}
+
+
 #[entry]
 fn main() -> ! {
     // local mutable variable (changed in safe code)
-    let mut x = unsafe { X };
+    let mut x =  read_x();
     loop {
         x = x.wrapping_add(1); // <- place breakpoint here (3)
-        unsafe {
-            X = X.wrapping_add(1);
-            Y = X;
-            assert!(x == X && X == Y+1);
-        }
+        
+        write_x(read_x().wrapping_add(1));
+        write_y(read_x());
+        assert!(x == read_x() && read_x() == read_y()+1);
+        
     }
 }