https://medium.com/@anderson.buenogod/mastering-isp-interface-segregation-principle-for-clean-and-scalable-code-in-c-net-89293935bd4d