The Advanced Technology Solar Telescope (ATST) is designed as the premier ground-based solar telescope. With an expected lifetime of more than 25 years, a great deal of thought has been put into designing a software control system with the flexibility to adapt to changes in software technology through the lifetime of ATST. The goal is to have a software architecture that can be readily adapted to advances in software technologies. A significant aspect of this architecture is its independence from third-party tools, particularly communications middleware. This independence is achieved through a carefully-layered design that facilitates the process of replacing one service implementation with another by separating the functional and technical infrastructures within a container/component model. The paper presents the details of how ATST implements this separation and allows the quick replacement of one service implementation with another implementation using a toolbox metaphor. The toolbox provides a consistent external interface to services and service-related data while providing an internal interface that supports dynamic replacement of one service plugin with another.