https://towardsdatascience.com/a-fairly-short-explanation-of-the-dependency-injection-pattern-with-python-4f11e7ee27f6