A well-structured system can easily be understood and modified. Moreover, it may lend itself even to dynamic modification: under special conditions, the possibility of changing system parts while the system is running can be provided at little additional cost. Our approach to the design of dynamically modifiable systems is based on the principle of data abstraction applied to types and modules. It allows for dynamic replacement or restructuring of a module's implementation if this does not affect its specification (or if it leads to some kdnd of compatible specification). The fundamental principles of such "replugging" are exhibited, and the implementation of a replugging facility for an experimental operating system on a PDP-11/40E is described.