diff --git a/benchmark/make.sh b/benchmark/make.sh
index 909391a072ae24d5e4bd79f68cfa6c90a20e3ff2..b88874ff0a11348094b17e904dc3aec3b1ce3982 100755
--- a/benchmark/make.sh
+++ b/benchmark/make.sh
@@ -225,6 +225,21 @@ TWO_EXP_27=134217728
 TWO_EXP_28=268435456
 
 
+# ------------------------------------------------------------------------------
+# Saving the rfile --- TODO: pbench should do this
+
+save_rfile () {
+  # TEMPORARY HACK
+  cp _results/chart-1.pdf $1
+  #takes as argument the name of the pdf
+  rbase=`basename $1 .pdf`
+  rfile=${rbase}.r
+  cp _results/chart-all.r ${rfile}
+  sed -i -e "s#_results/chart-1#${rbase}#g" ${rfile}
+  echo "Produced ${rfile}"
+}
+
+
 # ------------------------------------------------------------------------------
 
 # Fixing the prog field in a result file.
@@ -862,6 +877,7 @@ plot_alloc () {
     -series ${series}length \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 # --xlog
 
@@ -899,6 +915,7 @@ plot_initm_map_iter_simple () {
     -series ${series}k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 # ------------------
@@ -931,6 +948,7 @@ plot_initm_map_iter () {
     -series ${series}k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 
@@ -964,6 +982,7 @@ plot_pushm_iter_simple () {
     -series ${series}k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 
@@ -997,6 +1016,7 @@ plot_pushm_iter () {
     -series ${series}k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 # ------------------
@@ -1029,6 +1049,7 @@ plot_pushm_popm () {
     -series ${series}k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 
@@ -1042,12 +1063,12 @@ run_get () {
   CMD="prun -prog $prog \
     -n $TWO_EXP_15,$TWO_EXP_18,$TWO_EXP_20,$TWO_EXP_24,$TWO_EXP_26 \
     -ops 100$K \
-    -runs 3 \
     -distance -1 \
     -output $result"
   ${CMD} -seq BraunTree
   ${CMD} --append -seq ParrayNarytree -k 8,16,32
 }
+#     -runs 3 \
 
 # -quota 0.05 \
 # Array,Vector,
@@ -1069,6 +1090,7 @@ plot_get () {
     -series ${series}seq,k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 # ------------------
@@ -1081,13 +1103,12 @@ run_set () {
   CMD="prun -prog $prog \
     -n $TWO_EXP_15,$TWO_EXP_18,$TWO_EXP_20,$TWO_EXP_24,$TWO_EXP_26 \
     -ops 100$K \
-    -runs 3 \
     -distance -1 \
     -output $result"
   ${CMD} -seq BraunTree
   ${CMD} --append -seq ParrayNarytree -k 8,16,32
 }
-
+#    -runs 3 \
 # -quota 0.05 \
 # Array,Vector,
 # ESek_get,PSek_get,PSek_reach,FmlibRbtrees,NumeriChunk,
@@ -1108,6 +1129,7 @@ plot_set () {
     -series ${series}seq,k \
     -input $result \
     -output $graphics
+  save_rfile $graphics
 }
 
 # ------------------
@@ -1116,22 +1138,26 @@ run_getk () {
   benchmark=get
   make src/$benchmark
   run_prologue
-  result="getk.out"
+  result="$1"
   CMD="prun -prog $prog \
     -n $TWO_EXP_24 \
     -ops 100$K \
-    -quota 0.05 \
     -distance -1 \
     -output $result"
-  ${CMD} -seq ParrayNarytree,PdarrayNarytree -k 4,8,16,32,64,128,256,512,1024,2048
+  ${CMD} -seq $2 -k 4,8,16,32,64,128,256,512,1024,2048
+  # ,PdarrayNarytree
+  # -quota 0.05 \
 }
 #ParrayNarytree,
 
+run_getks () {
+  run_getk getk_pure.out ParrayNarytree
+  run_getk getk_effect.out PdarrayNarytree
+}
+
 plot_getk () {
-  #result="$1"
-  # graphics="$2"
-  result="getk.out"
-  graphics="getk.pdf"
+  result="$1"
+  graphics="$2"
   series="$3"
   echo $graphics > $home/.graphics
   pplot scatter \
@@ -1141,31 +1167,42 @@ plot_getk () {
     -input $result \
     -output $graphics
 #    -series ${series}seq \
+  save_rfile $graphics
+}
 
+plot_getks () {
+  plot_getk getk_pure.out getk_pure.pdf "$3"
+  plot_getk getk_effect.out getk_effect.pdf "$3"
 }
 
+
 # ------------------
 
 run_setk () {
   benchmark=set
   make src/$benchmark
   run_prologue
-  result="setk.out"
+  result="$1"
   CMD="prun -prog $prog \
     -n $TWO_EXP_24 \
     -ops 100$K \
     -quota 0.05 \
     -distance -1 \
     -output $result"
-  ${CMD} -seq ParrayNarytree,PdarrayNarytree -k 4,8,16,32,64,128,256,512,1024,2048
+  ${CMD} -seq $2 -k 4,8,16,32,64,128,256,512,1024,2048
+}
+
+run_setks () {
+  run_setk setk_pure.out ParrayNarytree
+  run_setk setk_effect.out PdarrayNarytree
 }
+
+#
 #ParrayNarytree,
 
 plot_setk () {
-  #result="$1"
-  # graphics="$2"
-  result="setk.out"
-  graphics="setk.pdf"
+  result="$1"
+  graphics="$2"
   series="$3"
   echo $graphics > $home/.graphics
   pplot scatter \
@@ -1175,7 +1212,12 @@ plot_setk () {
     -input $result \
     -output $graphics
 #    -series ${series}seq \
+  save_rfile $graphics
+}
 
+plot_setks () {
+  plot_setk setk_pure.out setk_pure.pdf "$3"
+  plot_setk setk_effect.out setk_effect.pdf "$3"
 }
 
 
diff --git a/benchmark/src/get/Main.ml b/benchmark/src/get/Main.ml
index 50ba15e2f3f5091c8c16f2617a4e2e0fd8295455..acb09404cf457eb3cf11fb5dcc8e6031fc5b9854 100644
--- a/benchmark/src/get/Main.ml
+++ b/benchmark/src/get/Main.ml
@@ -123,7 +123,7 @@ let benchmark =
         done;
         sink !r
 
-   end else if seq = "BraunTree" then begin (* warning: very slow *)
+   end else if seq = "BraunTree" then begin
 
       let s = (Flex_array.init n (fun i -> i)) in
       fun () ->
diff --git a/benchmark/src/set/Main.ml b/benchmark/src/set/Main.ml
index 67572d703606474aba323314324080d42a576695..fe4fbeae88792e5b5826b89a0251bc2d0a4626ea 100644
--- a/benchmark/src/set/Main.ml
+++ b/benchmark/src/set/Main.ml
@@ -105,6 +105,20 @@ let benchmark =
         (* TODO: do we need this sink to avoid all the loop being compiled away? *)
         sink (Array.get s 0)
 
+   end else if seq = "BraunTree" then begin
+
+      let s = ref (Flex_array.init n (fun i -> i)) in
+      fun () ->
+        (* This is the timed section. *)
+        (* Calls to [set i] for each target index. *)
+        for index = 0 to ops - 1 do
+          let j = a.(index) in
+          let value = index in
+          s := Flex_array.set !s j value;
+        done;
+        (* TODO: do we need this sink to avoid all the loop being compiled away? *)
+        sink (Flex_array.get !s 0)
+
    end else if seq = "Fmarray" then begin (* warning: very slow *)
 
       let s = ref (Array.init n (fun i -> i)) in