BMH implemented

hasn't moved the dial on those benchmarks though!