restructure settings generation to be non-recursive