limited backtracking but needs to go back arbitrarily