more easily support IoC