codegym coding practices. Python Design Patterns refer: https://github.com/Sean-Bradley/Design-Patterns-In-Python