consider passing a collection of all subsystems already validated as a parameter, to prevent any recursion