https://medium.com/@iamprovidence/understanding-object-oriented-design-rich-vs-anemic-models-in-c-5d8e5ea1bf39