function processPreSale(address _caller) private {
        var (allowedContribution, refundAmount) = processContribution();
        require(msg.value == allowedContribution.add(refundAmount));
        if (allowedContribution > 0) {
            doBuy(_caller, allowedContribution);
            if (refundAmount > 0) {
                msg.sender.transfer(refundAmount);
            }
        } else {
            revert();
        }
    }