https://mysteryweevil.medium.com/mastering-python-metaprogramming-exploring-the-power-of-decorators-d15557f54dc8