https://ckliu0808.medium.com/python-dataclasses-a-beginners-guide-and-tricks-for-mastering-data-structures-69ec9992e871