https://medium.com/@kalanamalshan98/the-decorator-design-pattern-simplifying-dynamic-feature-addition-446de438c5b6