Reflection is a promising approach towards self adaptive and self healing systems, also being of great value for the dynamic discovery of services. The deployment of reflection mechanisms in distributed systems middleware is based on the same overall argument which applies to usual distribution services: middleware allows such services (including reflection!) to be transparently accessed, regardless of the heterogeneity of their implementations. In addition, and importantly, the benefits of reflection (e.g., dynamic adaptation) can be applied to the design and implementation of the middleware platform itself. In this talk I will briefly discuss the fundamental principles of reflective middleware, followed by their instantiation in the Open ORB architecture. This part of the talk will focus on high level architectural issues, as well as on the several prototypes of the architecture. The second part will focus on the issue of combining meta- information management with reflection in middleware, exploring some of its immediate benefits, along with a few promising ways to exploit this combination to improve the flexibility of middleware.