public override void AssignPiratesToParticipants(List <Pirate> pirates) { Carrier carrier = new Carrier(this.Participants); List <BodyGuard> bodyguards = new List <BodyGuard>(); foreach (Pirate pirate in pirates) { if (pirate.HasCapsule() && carrier.Pirate == null) { carrier.Pirate = pirate; } else { bodyguards.Add(new BodyGuard(pirate)); } } List <ICommand> list = new List <ICommand>(); if (carrier.Pirate != null) { list.Add(carrier); } foreach (BodyGuard BG in bodyguards) { if (carrier.Pirate != null) { BG.assignCarrier(carrier); } list.Add(BG); } this.Participants = list; }