https://medium.com/learn-agile-practices/domain-driven-design-101-move-your-first-steps-into-ddd-%EF%B8%8F-e33d35599dcb