https://towardsdatascience.com/design-patterns-with-python-for-machine-learning-engineers-builder-45b8e749f134