https://medium.com/the-brainwave/how-to-write-clean-code-in-python-with-solid-principles-principle-2-c54fb647f5b7