Most approaches to programming language extensibility have worked by pairing syntactic extension with semantic extension. We present an approach that works through a combination of presentation extension and semantic extension. We also present an architecture for this approach, an Eclipse-based implementation targeting the Java programming language, and examples that show how presentation extension, both with and without semantic extension, can make programs more expressive. Categories and Subject Descriptors D.2.3 [Software Engineering]: Processors--Code generation; Run-time environments ; D.3.4 [Software Engineering]: Coding Tools and Techniques-Program editors General Terms Languages, Design Keywords Annotations, Metadata, Metaobject Protocol, MOP, Expressiveness