https://python.plainenglish.io/python-decorators-spicing-up-your-functions-with-a-pinch-of-magic-d8ee9bc28b62
https://levelup.gitconnected.com/python-decorators-junior-vs-intermediate-vs-senior-vs-expert-62d9ab0c00c3
https://ckmobile.medium.com/python-decorators-1b016f7574f8
https://medium.com/illumination/demystifying-python-decorators-a-deep-dive-into-function-wrappers-29ebad1c57ed