https://mysteryweevil.medium.com/mastering-pythons-decorators-and-closures-a-practical-guide-90375ed324d8