https://medium.com/@sarperismetmakas/python-decorators-how-to-improve-your-codes-functionality-and-readability-503d2ed5e62c