Clean architecture : a craftsman's guide to software structure and design (Prentice Hall, 2018)