refactored IoC subscription mechanism to make it easy to implement all types of an interface that is already there and defaulted