function claim(address _payout, address _fee) public returns (bool success) {
    
    require(buried[msg.sender]);

    
    require(_payout != _fee);

    
    require(msg.sender != _payout);

    
    require(msg.sender != _fee);

    
    require(claimed[msg.sender] == 1 || (block.timestamp - claimed[msg.sender]) >= epoch);

    
    require(balances[msg.sender] >= claimAmount);

    
    claimed[msg.sender] = block.timestamp;

    
    uint256 previousBalances = balances[msg.sender] + balances[_payout] + balances[_fee];

    
    balances[msg.sender] -= claimAmount;

    
    balances[_payout] += payAmount;

    
    balances[_fee] += feeAmount;

    
    emit Claim(msg.sender, _payout, _fee);
    emit Transfer(msg.sender, _payout, payAmount);
    emit Transfer(msg.sender, _fee, feeAmount);

    
    assert(balances[msg.sender] + balances[_payout] + balances[_fee] == previousBalances);
    return true;
  }