refactor stepforward