refactoring
benchmark