final with benchmarking