thourough clean
backtracking working
refined print