Unifying adapters and utilities gets us nowhere. If we remove the distinction between an adapter and a utility we are simply left with the concept of "component". Then we have components, nothing else. Components are objects registered base on what interface they implement, and can be looked up based on that interface. But then in the registration we have two types of components. Those who simply implement an interface, nothing more. Then we have those who implement and interface and also adapts one or more interfaces to the implemented interface. Well... then we have adapters again! So the unification quickly exploded. Conceptually we have components that adapt, and therefore clearly are adapters, and we have components that do not adapt, and therefore are not adapters. Currently we call those components utilities. When there is such a clear and distinct conceptual difference between adapters and utilities, why would we try to murk that distinction by pretending that non adapters are a special case of adapters, when it's obvious that that's exactly what they are not. "Null-adaptation" is a contradiction in terms. It requires adapters that does not adapt. It can only lead to complete confusion. The ZCA is hard enough as it is to understand. This discussion was about making it easier. If we want that, we can not unify adapters and utilities in the public API. -- Lennart Regebro: Python, Zope, Plone, Grok http://regebro.wordpress.com/ +33 661 58 14 64