public ERD2WPageRunner(NSArray pages) {
    _pages = pages;
  }
  public void createPages() {
    WOSession session = ERXSession.anySession();
    // session = (ERXSession)context.session();
    for (Enumeration pages = _pages.objectEnumerator(); pages.hasMoreElements();) {
      String pageName = (String) pages.nextElement();
      WOContext context = ERXWOContext.newContext();
      session._awakeInContext(context);
      try {
        EOEditingContext ec = ERXEC.newEditingContext();
        ec.lock();
        try {
          log.info("Creating page: " + pageName);
          WOComponent page = D2W.factory().pageForConfigurationNamed(pageName, session);
          context._setPageElement(page);
          context._setCurrentComponent(page);
          String task = ERD2WFactory.taskFromPage(page);
          String entityName = ERD2WFactory.entityNameFromPage(page);
          if (page instanceof InspectPageInterface) {
            InspectPageInterface ipi = (InspectPageInterface) page;
            ipi.setObject(EOUtilities.createAndInsertInstance(ec, entityName));
            ipi.setNextPage(page);
          } else if (page instanceof ListPageInterface) {
            ListPageInterface lpi = (ListPageInterface) page;
            lpi.setDataSource(ERXEOControlUtilities.dataSourceForArray(ec, entityName, new NSArray(EOUtilities.createAndInsertInstance(ec, entityName))));
            lpi.setNextPage(page);
          } else if (page instanceof SelectPageInterface) {
            SelectPageInterface lpi = (SelectPageInterface) page;
            lpi.setDataSource(ERXEOControlUtilities.dataSourceForArray(ec, entityName, new NSArray(EOUtilities.createAndInsertInstance(ec, entityName))));
          } else if (page instanceof ConfirmPageInterface) {
            ConfirmPageInterface cpi = (ConfirmPageInterface) page;
            // nothing
          } else if (page instanceof QueryPageInterface) {
            QueryPageInterface qpi = (QueryPageInterface) page;
            // nothing
          } else {
            log.info("Unsupported: " + pageName + " -> " + page.name());
          }
          page.appendToResponse(new ERXResponse(), context);
        } finally {
          ec.unlock();
        }
      } catch(Throwable t) {
        log.error("Error running: " + pageName + ":" +  t.getMessage() + " Tree: " + ERXWOContext.componentPath(context));
      } finally {
        session._sleepInContext(context);
      }
    }
  }