function requestNumber(address _requestor, uint256 _max, uint8 _waitTime)
    payable 
    public {
        
        
        
        if (!whiteList[msg.sender]) {
            require(!(msg.value < cost));
        }

        
        
        assert(!checkNumber(_requestor));
        
        pendingNumbers[_requestor] = PendingNumber({
            requestProxy: tx.origin, 
            renderedNumber: 0,
            max: max,
            originBlock: block.number,
            waitTime: waitTime
        });
        if (_max > 1) {
            pendingNumbers[_requestor].max = _max;
        }
        
        
        
        
        if (_waitTime > 0 && _waitTime < 250) {
            pendingNumbers[_requestor].waitTime = _waitTime;
        }
        EventLuckyNumberRequested(_requestor, pendingNumbers[_requestor].max, pendingNumbers[_requestor].originBlock, pendingNumbers[_requestor].waitTime, pendingNumbers[_requestor].requestProxy);
    }