Extensible operating systems are designed around the principle that a system can be dynamically customized to best serve application needs. However, realizing this goal in a safe and efficient manner poses a number of unique problems. In this paper, we examine the requirements for constructing robust extensible systems and discuss implementation techniques to satisfy those requirements with low overhead.