Implementing loosely-coupled components