An Architecture for Extensibility