https://www.codeguru.co.in/2021/11/understanding-separation-of-concern-in.html