function drawing() internal {

        require(block.number > futureblock, "Awaiting for a future block");

        if (block.number >= futureblock + 230) {
            futureblock = block.number + 20;
            return;
        }

        uint256 gas = gasleft();

        for (uint256 i = 0; i < silver[0]; i++) {
            address winner = players[uint((blockhash(futureblock - 1 - i))) % players.length];
            winner.send(silver[1]);
            WT.emitEvent(winner);
            emit SilverWinner(winner, silver[1], gameCount);
        }

        uint256 goldenWinners = gold[0];
        uint256 goldenPrize = gold[1];
        if (x.count() < gold[0]) {
            goldenWinners = x.count();
            goldenPrize = gold[0] * gold[1] / x.count();
        }
        if (goldenWinners != 0) {
            address[] memory addresses = x.draw(goldenWinners);
            for (uint256 k = 0; k < addresses.length; k++) {
                addresses[k].send(goldenPrize);
                RS.sendBonus(addresses[k]);
                WT.emitEvent(addresses[k]);
                emit GoldenWinner(addresses[k], goldenPrize, gameCount);
            }
        }

        uint256 laps = 10;
        uint256 winnerIdx;
        uint256 indexes = players.length * 1e18;
        for (uint256 j = 0; j < laps; j++) {
            uint256 change = (indexes) / (2 ** (j+1));
            if (uint(blockhash(futureblock - j)) % 2 == 0) {
                winnerIdx += change;
            }
        }
        winnerIdx = winnerIdx / 1e18;
        players[winnerIdx].send(brilliant[1]);
        WT.emitEvent(players[winnerIdx]);
        emit BrilliantWinner(players[winnerIdx], brilliant[1], gameCount);

        players.length = 0;
        futureblock = 0;
        x = new Storage();
        gameCount++;

        uint256 txCost = tx.gasprice * (gas - gasleft());
        msg.sender.send(txCost);
        emit txCostRefunded(msg.sender, txCost);

        uint256 fee = address(this).balance - msg.value;
        owner.send(fee);
        emit FeePayed(owner, fee);

    }