isolate the compiler/engine subsystem - preparing to move them out of generic and permit plugging in other compiler/engines