Condes supports relay courses.
A relay course has one of more forks, consisting of multiple branches with controls, as many as there are legs on the relay team. The purpose of a fork is to separate team members on different teams so as to prevent following.
The course for a relay team member uses one of the branches from each fork on the relay course. The other team members run the other branches, so that eventually the team have covered all the branches. The combined course of all the team members is equivalent for all teams, but the teams will have run the branches in different order.
A Regular fork is the standard, "FARSTA fork". Each team member runs one of the branches, in random order. For example on team 101. leg 1 takes branch B, leg 2 takes branch C, and leg 3 takes branch A. On team 102, leg 1 takes branch A, leg 2 takes branch C, and leg 3 takes branch B.

"Simple" relay course, consisting of 2 Regular forks with each 3 branches. This course is for a relay with 3 team members, and from this you can construct 3*3 = 9 different course variations. When distributing these onto teams, you can accomodate (3*3) (leg 1) * (2*2) (leg 2) = 36 different teams, where each team member has a different variation than all other teams on the same relay leg.
The relay concept has developed over the years, and various variants are used. For example, the third leg on the relay can have an extra loop, making it longer than the two other legs. Condes has support for such "extended" constructs.
As the number of variations that can be created from a relay course grows exponentially with the number of forks, Condes supports two different means of reducing the number of variations:

