Added Abstract class to control validity of moves.