contract CarryTokenPresale is CarryTokenCrowdsale, GradualDeliveryCrowdsale {
    using SafeMath for uint256;

    // FIXME: Here we've wanted to use constructor() keyword instead,
    // but solium/solhint lint softwares don't parse it properly as of
    // April 2018.
    function CarryTokenPresale(
        address _wallet,
        CarryToken _token,
        uint256 _rate,
        uint256 _cap,
        uint256 _individualMinPurchaseWei,
        uint256 _individualMaxCapWei
    ) public CarryTokenCrowdsale(
        _wallet,
        _token,
        _rate,
        _cap,
        _individualMinPurchaseWei,
        _individualMaxCapWei
    ) {
    }

    function _transferRefund(address _beneficiary, address _wallet) internal {
        uint256 depositedWeiAmount = refundedDeposits[_beneficiary];
        super._transferRefund(_beneficiary, _wallet);
        contributions[_beneficiary] = contributions[_beneficiary].sub(
            depositedWeiAmount
        );
    }
}
/**
 * @title CarryTokenPresale
 * @dev The Carry token presale contract.
 */
function CarryTokenPresale(
    address _wallet,
    CarryToken _token,
    uint256 _rate,
    uint256 _cap,
    uint256 _individualMinPurchaseWei,
    uint256 _individualMaxCapWei
) public CarryTokenCrowdsale(
    _wallet,
    _token,
    _rate,
    _cap,
    _individualMinPurchaseWei,
    _individualMaxCapWei
) {
}

// FIXME: Here we've wanted to use constructor() keyword instead,
// but solium/solhint lint softwares don't parse it properly as of
// April 2018.