I'm not sure really why we need this class split out and I find most of the naming pretty confusing. Would be good to be super-explicit on this as it's a bit meta.