In this paper, we consider the problem of building a theorem prover that is both open and extensible and that can function as a component of a larger system. We consider in particular three problems. Firstly the problem of conservatively and effectively extending the abstract syntax of the prover notation without compromising the underlying semantics. Secondly the problem of how to extend the deductive system in a way that allows the extension to share the responsibility of maintaining logical consistency. Lastly the problem of abstracting the context, which is necessary for the prover to function as a component of a larger system. We propose some design patterns that we believe simplify the problem of building such an open and extensible theorem proving component. The ideas in this paper were motivated by the work carried out on an EPSRC project (GR/K83014) which has used Java to develop integrated tools for applied formal methods. 1. Introduction The literature reports a wealth of ..