https://petrosdemetrakopoulos.medium.com/python-dataclass-taking-advantage-of-the-new-decorator-32f6625fa288