refactoring
add keepforward option