A network of interconnected references that can hold arbitrary data is used to run a sequence of computer-code-like steps that perform a core learning process on the system itself. The learning process involves using existing heuristics and habits, to produce better heuristics and habits to use. The process to learn is the system itself: for example, what norms can we establish to keep our memory use bounded while we run. Or, craft a habit that produces a descriptive structure of the last link made, outputs a log whenever you do something, redoes everything you do but with all arguments wrapped in a structure, or does the same thing as you but with a different set of inner habits. Level 0 should be low level enough to provide for arbitrary flexibility. There shouldn't be decision-making challenges with regard to exposing an interface at level 0. Rather, decisions should be makeable by its user. The topmost C++ level should be expressive enough to easily code all of level 0 into habits that interconnect, and produce one to select some of them and run them together. The levels together should provide a library that can be used exclusively to work on the system, without resorting to external libraries.