function buyBooster(uint256 idx) public isNotOver isCurrentRound payable 
    {
        require(idx < numberOfBoosts);
        BoostData storage b = boostData[idx];
        if(msg.value < getBoosterPrice(idx) || msg.sender == b.owner){
            revert();
        }
        address beneficiary = b.owner;
        sponsor.send(devFee(getBoosterPrice(idx)));
        if(beneficiary != 0){
            beneficiary.send(SafeMath.div(SafeMath.mul(getBoosterPrice(idx), 55), 100));
        }
        updateCrytal(msg.sender);
        updateCrytal(beneficiary);
        uint256 level = getCurrentLevel(b.startingLevel, b.startingTime, b.halfLife);
        b.startingLevel = SafeMath.add(level, 1);
        b.startingTime = now;
        
        b.owner = msg.sender;
    }