diff --git a/juno_samples/rodinia/bfs/src/bfs.jn b/juno_samples/rodinia/bfs/src/bfs.jn
index f82d9d80cf5aa2275e4dcad941bb8128cdf6ee43..d6ec25f26b997205d4dcdf116bce462fa228fc88 100644
--- a/juno_samples/rodinia/bfs/src/bfs.jn
+++ b/juno_samples/rodinia/bfs/src/bfs.jn
@@ -53,7 +53,7 @@ fn bfs<n, m: usize>(graph_nodes: Node[n], source: u32, edges: u32[m]) -> i32[n]
         mask[i] = true;
         visited[i] = true;
         updated[i] = false;
-	stop_prod.stop = updated[i];
+        stop_prod.stop = updated[i];
       }
     }
     stop = stop_prod.stop;
diff --git a/juno_samples/rodinia/bfs/src/cpu.sch b/juno_samples/rodinia/bfs/src/cpu.sch
index 589b93b1109b09e9146af593c8649987d6298635..55d25095ecbc4c23292b691a0de6946e4fbb6e02 100644
--- a/juno_samples/rodinia/bfs/src/cpu.sch
+++ b/juno_samples/rodinia/bfs/src/cpu.sch
@@ -37,5 +37,21 @@ fixpoint {
 }
 simpl!(collect);
 
-unforkify(init, traverse, collect);
+parallel-fork(traverse, collect);
+parallel-reduce(traverse, collect);
+
+fork-tile[32, 0, false, true](init, traverse, collect);
+let (outer, inner) = fork-reshape[[1], [0]](init);
+let init_body = outline(inner);
+let (outer, inner) = fork-reshape[[1], [0]](traverse);
+let traverse_body = outline(inner);
+let (outer, inner) = fork-reshape[[1], [0]](collect);
+let collect_body = outline(inner);
+
+inline(bfs);
+delete-uncalled(*);
+const-inline(*);
+simpl!(*);
+
+unforkify(init_body, traverse_body, collect_body);
 gcm(*);