Traditional operating system functions, such as device drivers, protocol stacks and file systems, are removed from the microkernel to run in user space.
Initial versions required a hard-linked protocol stack, where a separate executable would be created by the network administrator for each network card configuration on the network.
Similar to a communication protocol stack, this modularity provides great flexibility: each layer can be easily replaced with another as far as it provides the same interface.