On my part... I was envisioning a system where the major subsystems (Rendering, Audio, etc) had an interface + implementations, so you would have a HeadlessRenderer and NullAudioManager. These would take care of registering their asset types and producing any implementation-dependent classes...