Cleaned up hasMoved and lastMove logic.