https://medium.com/clean-architecture/a-solids-principle-in-2-mins-interface-segregation-principle-f3f93aaecf0