the root coordinator use the strategy pattern, simulator and coordinator use template method pattern