https://levelup.gitconnected.com/how-to-implement-domain-driven-design-common-mistakes-you-should-avoid-31f3f004227a