diff --git a/examples/bare4.rs b/examples/bare4.rs
index 4861ecd3751885a27517f48048122906cca75527..27d6329b5ffe6cd432c5e99ef0a83ca61c917bb6 100644
--- a/examples/bare4.rs
+++ b/examples/bare4.rs
@@ -8,6 +8,9 @@
 extern crate cortex_m;
 extern crate cortex_m_rt;
 
+#[macro_use]
+extern crate cortex_m_debug;
+
 // Peripheral addresses as constants
 #[rustfmt_skip]
 mod address {
@@ -45,12 +48,22 @@ fn wait(i: u32) {
 }
 
 fn main() {
+    ipln!("Program init!");
+    sprintln!("yow fam");
     // power on GPIOA
+    // RRC_AHB1ENR == RCC AHB1 clock enable register, offset 0x30
     let r = read_u32(RCC_AHB1ENR); // read
+    // OR:ing with 1 means putting bit 0 to 1. This enables IO port A clock Enable!!!!
     write_u32(RCC_AHB1ENR, r | 1); // set enable
 
     // configure PA5 as output
+    // General Purpose Input Output
+    // Reading, Bit-wise AND, !(0b11 << (10)), putting this value in r
+    // r takes on the value as the same register values, EXCEPT 00 in place of the 5*2 spot.
     let r = read_u32(GPIOA_MODER) & !(0b11 << (5 * 2)); // read and mask
+
+    // Write to MODER (mode register) , 
+    // 00 | 0b01 shifted 10, thus, MODER5 = 01, General Purpose Output Mode!
     write_u32(GPIOA_MODER, r | 0b01 << (5 * 2)); // set output mode
 
     // and alter the data output through the BSRR register
@@ -58,11 +71,28 @@ fn main() {
 
     loop {
         // set PA5 high
+        // BSRR = Bit Set/Reset Register
+        // Sets bit 5 to 1
         write_u32(GPIOA_BSRR, 1 << 5); // set bit, output hight (turn on led)
         wait(10_000);
-
+        
+        let uw = read_u32(GPIOA_BSRR);
+        sprintln!("uw {:#b}", uw);
+        cortex_m::asm::bkpt();
+        
+        // Attempt at read and mask
+        let y: u16 = (0b1 << 5);
+        sprintln!("y: {:#b}", y);
+        let z: u32 = (!y) as u32;
+        sprintln!("z: {:#b}", z);
+        let x: u32 = (read_u32(GPIOA_BSRR));
+        sprintln!("x: {:#b}", x);
+        write_u32(GPIOA_BSRR, x | (0b1 << 5)); // clear bit, output low (turn off led)
+        
+        cortex_m::asm::bkpt();
         // set PA5 low
-        write_u32(GPIOA_BSRR, 1 << (5 + 16)); // clear bit, output low (turn off led)
+        // Adding a HALF-WORD (16 bits) resets the corresponding Bit!!!!
+        //write_u32(GPIOA_BSRR, 1 << (5 + 16)); // clear bit, output low (turn off led)
         wait(10_000);
     }
 }
@@ -78,6 +108,10 @@ fn main() {
 //
 // document each low level access *code* by the appropriate section in the
 // data sheet
+// 
+// >>> You can find all the BASE boundary addresses @ 2.3, where we can see the AHB1/AHB2 Buses
+//      and their belonging peripherals + their memory addresses.
+//      From that point then, we'll find the offsets within each of the peripherals.
 //
 // >>> 6.3.11:
 //      RCC APB1 peripheral clock enable registe