https://amin-ahmadi.com/2015/09/29/patterns/
Patterns