function requestMutualJobCancellation(
    bytes16 _jobId,
    address _hirer,
    address _contractor,
    uint256 _value,
    uint256 _fee
  ) external onlyHirerOrContractor(_hirer, _contractor)
  {
    
    bytes32 jobHash = getJobHash(
      _jobId,
      _hirer,
      _contractor,
      _value,
      _fee);

    
    require(jobEscrows[jobHash].exists);
    require(jobEscrows[jobHash].status == STATUS_JOB_STARTED);

    if (msg.sender == _hirer) {
      jobEscrows[jobHash].status = STATUS_HIRER_REQUEST_CANCEL;
      emit HirerRequestedCancel(jobHash, msg.sender);
    }
    if (msg.sender == _contractor) {
      jobEscrows[jobHash].status = STATUS_CONTRACTOR_REQUEST_CANCEL;
      emit ContractorRequestedCancel(jobHash, msg.sender);
    }
  }