forward checking working (i think)