One of the main factors driving object-oriented software development in the Web-age is the need for systems to evolve as user
requirements change. A crucial factor in the creation of adaptable systems dealing with changing requirements is the suitability
of the underlying technology in allowing the evolution of the system. A reflective system utilizes an open architecture where
implicit system aspects are reified to become explicit first-class (metadata) objects. These implicit system aspects are often
fundamental structures which are inaccessible and immutable, and their reification as meta-data objects can serve as the basis
for changes and extensions to the system, making it self-describing. To address the evolvability issue, this paper proposes
a reflective architecture based on two orthogonal abstractions - model abstraction and information abstraction. In this architecture
the modeling abstractions allow for the separation of the description meta-data from the system aspects they represent so
that they can be managed and versioned independently, asynchronously and explicitly. A practical example of this philosophy,
the CRISTAL project, is used to demonstrate the use of meta-data objects to handle system evolution.