refactor, start benchmark