https://medium.com/@atillahalil0/applying-solid-principles-for-frontend-developers-using-react-8e0f7592001c