This paper explores the principle of reflection, which is well-known from the world of programming languages, and its relation to HCI. We define reflection in a wider sense that can be applied to the world of user interfaces, and argue that the new, generalized notion of reflection can benefit the usability of a system significantly. The paper discusses concrete approaches for the design of reflective user interfaces, and shows that the reflection principle is in fact already used in many existing applications.