source: https://martinfowler.com/articles/talk-about-platforms.html