In this paper, we study dynamic protocol update (DPU). Contrary to local code updates on-the-fly, DPU requires global coordination of local code replacements. We propose a novel solution to DPU. The key idea is to add a level of indirection between the service callers and the service provider. This indirection level facilitates implementation of simple and efficient algorithms for DPU. We also describe an experimental implementation of adaptable group communication middleware. It can switch between different atomic broadcast protocols on-the-fly. All middleware services, including those that depend on the updated protocols, provide service correctly and with negligible delay while the global update takes places. The switching algorithm introduces very low overhead, that we illustrate by showing example measurement results.