add reverse
refactoring