Refactoring code that accesses external services
martinfowler.com