Our approach which has been realized in the context of DISTRIBUTED ASYNCHRONOUS COLLECTIONS (DACs) [EGS00a] - simple JAVA programming abstractions which encompass different message-oriented interaction styles - avoids any subscription language, and respects encapsulation. It promotes the expression of subscription patterns by combining general-purpose filter objects. These filter objects preserve encapsulation by querying message objects through methods which are dynamically defined by the application, along with the semantics of the evaluation of the invocation results. The subscription grammar is inherently expressed through the resulting API, which strongly reduces the number of runtime errors. Filters are thus pictured as first class citizens, and their implementation relies on structural reflection [Coi87] of the message objects.