Common event-based systems relying on the content-based publish/subscribe paradigm equate properties of messages to attributes of those messages. In most cases, a subscription language is used to express ranges of values for those attributes, which violates object encapsulation: a subscription pattern expressed with such a subscription scheme exposes the message's state, and the resulting filter queries messages by accessing their attributes. Furthermore, subscription languages can not be extended or customized by the application developer, they are orthogonal and redundant with the programming language, and they are very error prone: syntax errors violating the subscription grammar are only seized at runtime when a pattern is parsed, just like syntaxically correct constraints based on badly written attributes.