general method in backtracking