Re-submit #19112

Although the PR says it was merged, it wasn't and the reactor is currently broken because of the partial merge of the previous refactor
Merge pull request #19221 from jacksontj/develop

Re-submit #19112