function () payable atStage(Stages.InProgress) {

        
        if (now < start) {
            throw;
        }

        
        if (now > end) {
            throw;
        }

        
        if (msg.value < minAcceptedAmount) {
            throw;
        }
 
        uint256 received = msg.value;
        uint256 valueInDRP = toDRP(msg.value);
        if (!drpToken.issue(msg.sender, valueInDRP)) {
            throw;
        }

        balances[msg.sender] += received;
        raised += received;

        
        if (raised >= maxAmount) {
            stage = Stages.Ended;
        }
    }