Architectures allow shifting the focus of developers from low-level code to high-level structures ensuring coordination in component-based systems. If the architecture description language is expressive enough, it is possible to describe architectures in a purely declarative manner. We speak then of an architecture-based approach for building component-based systems. Another approach considers irrelevant the distinction between atomic components and their associated coordination mechanisms: a system consists of a set of components---some providing basic functionality and some ensuring coordination. Dependencies between components are explicitly described by their behaviour (code) via import clauses, function calls and read/write instructions. We call this approach architecture-agnostic. We study architecture internalization leading from an architecture-based system to an equivalent architecture-agnostic one. We study internalization of component-based systems described in BIP. BIP uses connectors for hierarchical composition of components. We study connector internalization in three steps. 1) We introduce and study the properties of interaction expressions, which represent the combined information about all the effects of an interaction. We show that they are a very powerful tool for specifying and analyzing structured interaction. 2) We formalize the connector semantics of BIP by using interaction expressions. The formalization proves to be mathematically rigorous and concise. 3) We introduce the Top/Bottom component model and provide a semantics preserving translation of BIP into this model. The translation is compositional that is, it preserves the structure of the source models. The results are illustrated by simple examples. A Java implementation of is evaluated on two case studies.