Участники (Cat, Human и Robot) имплементируются от интерфейca Participants. Препятствия (Wall и Track) имплементируются от интерфейса Obstacles.
Для создания массивов и проведения "соревнований" используется RaceMain. Элементы в полосе препятствий получают информацию о текущем участнике и проверяют (passTheObstacle) его способность преодолеть (run/jump) тот или иной участок. По мере продвижения в консоль выводится информация о пройденых этапах. При столкновении с непреодолимым препятствием участник сходит с дистанции, в консоль выводится его результат.