A preliminary example of program development demonstrates that the control-independent implementation of data types can lead to very inefficient code. The concept of a data space, which emphasizes the interaction between data and control structures, is introduced as a formal model of virtual machines. The model consists of three components: a state space X, an information structure F, and a control component p. Formally, X is a set of objects, F a set of functions with common domain X mapping the states to the value sets of certain data types, and p a partial function X → X. Two important points of investigation are the characterization of state space structure and the mechanism of implementation. Good state description is characterized by "completeness" and "orthogonality." Either property plays a prominent role for the concept of implementation which, in turn, is formally defined as a mapping from a "virtual" space to a "real" space, via some "macro" space. These notions are illugtrated by means of several examples from the area of programming languages.