legal move generation