diff --git a/examples/stacked_borrows.rs b/examples/stacked_borrows.rs
index 176bed5a5e8162c51841f804b5567cd680be7cb6..e87e08ebc1f1d2f9af01940cce687753d625ec41 100644
--- a/examples/stacked_borrows.rs
+++ b/examples/stacked_borrows.rs
@@ -33,19 +33,24 @@ impl Store {
     }
     fn alloc(&mut self, id: Id) {
         self.stack.push_front(Item::Unique(self.tag));
+        self.env.insert(id, self.tag);
         self.tag += 1;
+        println!("alloc {:?}", self)
     }
 }
 
 #[derive(Debug)]
 enum Expr {
     Id(Id),
-    Num(i32),
+    Lit,
     Ref(Box<Expr>),
     RefMut(Box<Expr>),
     Deref(Box<Expr>),
 }
 
+fn id(id: &str) -> String {
+    id.to_string()
+}
 #[derive(Debug)]
 enum Stmt {
     Let(Id, Expr), // assumed mutable, e.g. let mut a = 0;
@@ -76,7 +81,15 @@ fn check_stmts(v: &Vec<Stmt>, store: &mut Store) {
 fn main() {
     let mut env = Env::new();
     use {Expr::*, Stmt::*};
-    let v = vec![Let("a".to_owned(), Num(0))];
-    
+
+    let v = vec![
+        Let(id("a"), Lit),                        // let a = ...;
+        Let(id("b"), Lit),                        // let b = ...;
+        Let(id("c"), Ref(Box::new(Id(id("a"))))), // let c = &a;
+        Assign(Id(id("a")), Lit),                 // a = ...;
+    ];
+
+    println!("prog {:?}", v);
+
     check_stmts(&v, &mut Store::new());
 }