Mastering Javascript design patterns. (2016)