https://www.xs.com/en/blog/quasimodo-pattern/