/** Create the plates node networks. */
    @Override
    public void buildPhase() throws PipelineException {
      StageInformation stageInfo = getStageInformation();

      /* stage prerequisites */
      {
        /* lock the latest version of all of the prerequisites */
        lockNodePrerequisites();

        /* lock the specific version of the source images node we are delivering */
        pClient.lock(
            getAuthor(), getView(), pSourceVersion.getName(), pSourceVersion.getVersionID());
      }

      /* the delivery network */
      {
        String readQtDeliverableImagesNodeName = pDeliverNamer.getReadQtDeliverableImagesNode();
        {
          NukeReadStage stage =
              new NukeReadStage(
                  stageInfo,
                  pContext,
                  pClient,
                  readQtDeliverableImagesNodeName,
                  pSourceVersion.getName());
          stage.addSingleParamValue("ReadName", "Images");
          addTaskAnnotation(stage, NodePurpose.Prepare);
          stage.build();
        }

        String qtDeliverSlateNukeNodeName = pDeliverNamer.getQtDeliverSlateNukeNode();
        {
          SlateSubstStage stage =
              new SlateSubstStage(
                  stageInfo,
                  pContext,
                  pClient,
                  qtDeliverSlateNukeNodeName,
                  pSlateNodeName,
                  pDeliveryType,
                  pDeliverable,
                  pClientVersion,
                  pClientShotName,
                  pLensInfo,
                  pTakeInfo,
                  pSourceVersion,
                  pNotes,
                  pSlateHold);
          addTaskAnnotation(stage, NodePurpose.Prepare);
          stage.build();
        }

        String qtDeliverSlatedImagesNodeName = pDeliverNamer.getQtDeliverSlatedImagesNode();
        {
          TreeMap<String, String> subst = new TreeMap<String, String>();
          subst.put(readQtDeliverableImagesNodeName, "Images");
          subst.put(pFormatNodeName, "FinalFormat");

          NukeSubstCompStage stage =
              new NukeSubstCompStage(
                  stageInfo,
                  pContext,
                  pClient,
                  qtDeliverSlatedImagesNodeName,
                  pFrameRange,
                  4,
                  "jpg",
                  "Append & Process",
                  qtDeliverSlateNukeNodeName,
                  subst);
          addTaskAnnotation(stage, NodePurpose.Prepare);
          stage.build();
        }

        String qtDeliverSlatedMovieNodeName = pDeliverNamer.getQtDeliverSlatedMovieNode();
        {
          DjvUnixQtStage stage =
              new DjvUnixQtStage(
                  stageInfo,
                  pContext,
                  pClient,
                  qtDeliverSlatedMovieNodeName,
                  qtDeliverSlatedImagesNodeName,
                  "24");
          addTaskAnnotation(stage, NodePurpose.Prepare);
          stage.build();
        }

        String qtDeliverableNodeName = pDeliverNamer.getQtDeliverableNode();
        {
          QtEncodeStage stage =
              new QtEncodeStage(
                  stageInfo,
                  pContext,
                  pClient,
                  qtDeliverableNodeName,
                  qtDeliverSlatedMovieNodeName,
                  pCodecNodeName);
          addTaskAnnotation(stage, NodePurpose.Deliver);
          stage.build();
          addToQueueList(qtDeliverableNodeName);
          addToCheckInList(qtDeliverableNodeName);
        }
      }
    }