This hash has always felt weird to me. I think I'd rather see it as its own class (or OpenStruct), but I know that would also affect service/item policies, so it might not be worth doing now.