diff --git a/benchmark.sh b/benchmark.sh
index 5451556..ad7e8d6 100755
--- a/benchmark.sh
+++ b/benchmark.sh
@@ -1,7 +1,7 @@
#!/bin/bash
cargo build --release || exit
-perf stat -r 5 -o benchmark.log ./target/release/opentally stv '/home/runassudo/git/stvdb/Australian Senate/2022/VIC.blt' --round-votes 0 --round-quota 0 --quota droop --quota-criterion geq --ties backwards random --random-seed 20210727 --surplus uig --surplus-order by_order --exclusion by_value --pp-decimals 0 $@
+perf stat -r 5 --table -o benchmark.log ./target/release/opentally stv '/home/runassudo/git/stvdb/Australian Senate/2022/VIC.blt' --round-votes 0 --round-quota 0 --quota droop --quota-criterion geq --ties backwards random --random-seed 20210727 --surplus uig --surplus-order by_order --exclusion by_value --pp-decimals 0 $@
cat benchmark.log
git describe --always --dirty=-dev | tee -a benchmark.log
diff --git a/src/candmap.rs b/src/candmap.rs
index a6bcfe9..5f2a877 100644
--- a/src/candmap.rs
+++ b/src/candmap.rs
@@ -19,67 +19,62 @@ use crate::election::Candidate;
use std::ops::Index;
-/// Newtype for [HashMap] on [Candidate]s
+/// Mimics a [HashMap] on [Candidate]s, but internally is a [Vec] based on [Candidate::index]
#[derive(Clone)]
pub struct CandidateMap<'e, V> {
- keys: Vec