backtracking and keeping track of which removals have already been tried