@Override
  public void onReceive(Object work) throws Exception {
    System.out.println("Starting multi step work on thread " + Thread.currentThread().getName());
    WorkOrder nextStep = null;
    if (work instanceof WorkOrder) {
      //			if(workOrder != null){
      //				Logger.error("Received second work order : " + work);
      //				throw new IllegalStateException("Received second work order : " + work);
      //			}
      customer = getSender();
      workOrder = (WorkOrder) work;
      this.workOrderUuid = workOrder.getUuid();
      //			System.out.println("just set work order uuid : " + this.workOrderUuid);
      //			System.out.println("Performing work : " + workOrder.getWorkType());

      nextStep = processWorkOrder(workOrder);
      if (nextStep != null) {
        Asyncleton.getInstance().getMaster(nextStep.getWorkType()).tell(nextStep, customer);
      }
    } else if (work instanceof WorkResult) {
      WorkResult workResult = (WorkResult) work;
      processWorkResult(workResult);
      //			doNextStep();
    } else {
      Logger.error("got unknown work in Multi Step worker : " + work);
    }
  }