using di for almost everything