new functions check if a move is valid. Not implemented or tested