A catalogue of design patterns