https://betterprogramming.pub/refactoring-data-structures-to-communicate-domain-specifics-and-business-logic-5576eef63052