function decreaseApproval (address _spender, uint _subtractedValue)public returns (bool success);
}

contract IBoard is Ownable {

    event CaseOpened(bytes32 caseId, address applicant, address respondent, bytes32 deal, uint amount, uint refereeAward, bytes32 title, string applicantDescription, uint[] dates, uint refereeCountNeed, bool isEthRefereeAward);
    event CaseCommentedByRespondent(bytes32 caseId, address respondent, string comment);
    event CaseVoting(bytes32 caseId);
    event CaseVoteCommitted(bytes32 caseId, address referee, bytes32 voteHash);
    event CaseRevealingVotes(bytes32 caseId);
    event CaseVoteRevealed(bytes32 caseId, address referee, uint8 voteOption, bytes32 salt);
    event CaseClosed(bytes32 caseId, bool won);
    event CaseCanceled(bytes32 caseId, uint8 causeCode);

    event RefereesAssignedToCase(bytes32 caseId, address[] referees);
    event RefereeVoteBalanceChanged(address referee, uint balance);
    event RefereeAwarded(address referee, bytes32 caseId, uint award);

    address public lib;
    uint public version;
    IBoardConfig public config;
    BkxToken public bkxToken;
    address public admin;
    address public paymentHolder;

    modifier onlyOwnerOrAdmin() {
        require(msg.sender == admin || msg.sender == owner);
        _;
    }