https://medium.com/@b.kiran1999kumar/a-guide-to-writing-readable-and-maintainable-python-code-28bb5dbb91ce