contract
this function specify in which form this object should be injected, and it is mainly used to hide concrete implementations
this function takes a lambda with KClass as a return type this function specify in which form this object should be injected, and it is mainly used to hide concrete implementations