@mexx SetFactory gets a Func<T> and registers it on the factory for a locale and when you want to format something or get number to words converter you call GetFactory which returns the registered Func<T> and the code calls it to get the desired component. In all the predefined registrations we're setting the instance of Lazy to return by the Func<T>; but in the custom factories set through SetFactory the user could and most definitely would send in a constructor, which means on each call we'll instantiate a new instance of the component which is one of the things we are trying to do away with.