code: function(pageComponent, pageBase, complete) {
    if (arguments.length == 2) {
      complete = pageBase;
      pageBase = undefined;
    }
    if (typeof pageComponent == 'string') {
      zest.require([pageComponent], function(pageComponent) {
        createPage(pageComponent, pageBase, complete);
      });
      return;
    }
  
    // create a fresh page structure, inheriting from the page base
    pageComponent = zoe.create([Page, {
      requireConfig: zest.config.require.client,
      requireUrl: '/' + zest.config.baseDir + (zest.builtLayers ? '/zest/layer.js' : '/require.js')
    }].concat(pageBase ? [pageBase, pageComponent] : [pageComponent]));
    
    //process page layers to include the paths config
    if (zest.builtLayers) {
      pageComponent.layers = pageComponent.layers || [];
      pageComponent.layers.unshift('zest/layer');
      for (var i = 0; i < pageComponent.layers.length; i++) {
        var layerName = pageComponent.layers[i];
        var layer = zest.builtLayers[layerName];
        if (!layer) {
          console.log(zest.builtLayers);
          console.log('Build layer ' + layerName + ' not found for page inclusion.');
          continue;
        }
        for (var j = 0; j < layer.length; j++)
          pageComponent.requireConfig.paths[layer[j]] = layerName;
      }
  
      // if separate CSS, include as link tag
      if (zest.config.require.build.zestLayer.separateCSS) {
        pageComponent.head = pageComponent.head || [];
        pageComponent.head.push('<link rel="stylesheet" href="/' + zest.config.baseDir + '/zest/layer.css"></link>');
      }
    }
    complete(pageComponent);
  }
docs: /*
  createPage
  
  Given a partial page Render Component, populates the remaining
  defaults for rendering.