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 #19229 from rallytime/bp-19221

Backport #19221 to 2015.2