The main philosophical difference between the two multiprogramming systems is their generality. The "The" system was built with one purpose in mind, and that was to facilitate the running of batch processes. The Nucleus concept allowed for a much more general platform. The idea behind the Nucleus concept was to make it an extensible system where the programmers could change its mode of operation dynamically. The "The" system had a fixed hierarchy of processes which provided the necessary layers of abstraction on top of the hardware. The Nucleus concept did not have a fixed hierarchy of processes -- instead users of the system could dynamically create and destroy processes. The Nucleus system's only function was to implement the creators' process concept. This concept allows users of the system to add other programs which controlled operator communication, program scheduling, and resource allocation, giving it the ability to change to different modes of operation without having to remake the entire system. A more basic philosophical question with regards to these two systems is - what should comprise an operating system's kernel? Should kernels be static, monolithic giants which do everything from allocating resources to program scheduling (much as the "The" system)? Or should they have a single, general function upon which everything else is built as separate programs (like the Nucleus concept)?