Refactoring
Add benchmark