https://medium.com/@alexandragrosu03/dependency-injection-in-swift-managing-object-dependencies-5e079389c6fb