Every useful phase needs at least to read and use some data structures describing the user program or some other data and also needs to write some results or the modified user program for example. In PIPS , data management is done through PIPSDBM , a system able to read and write any NEWGEN  data structure or even non-NEWGEN ones (with user-provided read, write and copy functions) in a portable way (architecture and memory location independent) and persistent way. Such a resource can be on disk or memory but when PIPS exits, all the resources that are flagged as useful are stored on disk and when the programmer asks for a resource , it is loaded from disk if it is not in memory.
In such a way, the PIPS design is more modular, with many small independent modules. It is preemptive at each phase boundary since then all the data are in a coherent state with PIPSDBM . It is useful to have more reactive user interfaces. Further more, a PIPS session can be shutdown and brought up later by retrieving the former state from disk.