add some valid move check logic
more movement logic