The main goal of the kernel was to never crash prompting the original designers to implement it as a modular nanokernel instead of the traditional monolithic kernel of "traditional" operating systems. This choice was good because it allowed the drivers and services code to be moved out of the kernel (to user space). These services would then become unprivilege processes so that any error that occurs e.g. in a driver won't crash the system. In a monolithic kernel this is impossible.