Building Modular Ob ject-Oriented Systems with Reusable Collaborat ions