checking valid moves appears to be mostly fixed