func: function createLiability(
          bytes _ask,
          bytes _bid
      )
          external 
          onlyLighthouse
          returns (RobotLiability liability)
      {
          
          uint256 gasinit = gasleft();
  
          
          liability = new RobotLiability(robotLiabilityLib);
          emit NewLiability(liability);
  
          
          require(liability.call(abi.encodePacked(bytes4(0x82fbaa25), _ask))); 
          usedHashGuard(liability.askHash());
  
          require(liability.call(abi.encodePacked(bytes4(0x66193359), _bid))); 
          usedHashGuard(liability.bidHash());
  
          
          require(xrt.transferFrom(liability.promisor(),
                                   tx.origin,
                                   liability.lighthouseFee()));
  
          
          ERC20 token = liability.token();
          require(token.transferFrom(liability.promisee(),
                                     liability,
                                     liability.cost()));
  
          
          if (address(liability.validator()) != 0 && liability.validatorFee() > 0)
              require(xrt.transferFrom(liability.promisee(),
                                       liability,
                                       liability.validatorFee()));
  
          
          uint256 gas = gasinit - gasleft() + 110525; 
          totalGasUtilizing       += gas;
          gasUtilizing[liability] += gas;
       }