Bear in mind that without the shell (you return null in CreateShell based on logic) that you won't have a RegionManager resolved to handle any views - when InitializeModules() is executed you'll need to ensure that none of the modules attempt
to load views in regions.
Excerpt from UnityBootstrapper.cs follows:
logger.Log("Creating shell", Category.Debug, Priority.Low);
DependencyObject shell = CreateShell();
if (shell != null)
logger.Log("Initializing modules", Category.Debug, Priority.Low);
logger.Log("Bootstrapper sequence completed", Category.Debug, Priority.Low);