more functions to allow more grained benchmarking