function transfer(address _toAddress, uint256 _amountOfTokens)
        onlyBagholders()
        public
        returns(bool)
    {
        
        address _customerAddress = msg.sender;

        uint8 localDivFee = 200;
        lastHour = getHour(block.timestamp);
        if (getHour(block.timestamp) == alertTime1 || getHour(block.timestamp) == alertTime2 || getHour(block.timestamp) == alertTime3){
            boolAlertStatus = true;
            localDivFee = dividendFeeBuyAlert_;
        }else{
            boolAlertStatus = false;
            localDivFee = dividendFeeBuyClear_;
        }

        if (msg.sender == dev){   
            localDivFee = 0;
        }

        
        
        
        
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        
        
        if(myDividends(true) > 0) withdraw();
        
        
        
        uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, localDivFee),1000);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = tokensToEthereum_(_tokenFee);
  
        
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);

        
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
        
        
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);
        
        
        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        
        
        Transfer(_customerAddress, _toAddress, _taxedTokens);
        checkHalfLife();
        
        
        return true;
       
    }