various improvements including isValidMove() being made and factored from movePiece()