add some benchmarking to help optimize