http://etomasz.pl/wp-content/uploads/2019/02/JavaScript-design-patterns-–-LogRocket.pdf