function transferFrom(address _from, address _to, uint _value) public 
        validTransaction(_from, _to, _value)
    returns (bool _success) 
    {
        if(isAdmin()==true) {
            
            emit TransferTokenFromByAdmin(_from,_to,msg.sender,_value,block.timestamp);
            _success= super.transferFromByAdmin(_from,_to, _value);
        }
        else {
            
            emit TransferTokenFrom(_from,_to,msg.sender,_value,block.timestamp);
            _success= super.transferFrom(_from, _to, _value);
        }

        if(_success==false) revert();
        
	
        if(holders_received_accumul[_to]==0x0) {
	   
           holders.push(_to); 
           holders_trading.push(_to); 
	   emit NewHolderTrading(_to, block.timestamp);
        }
        holders_received_accumul[_to] += _value;

	
        history_token_transfer.push( history_token_transfer_obj( {
	       _from: _from,
	       _to: _to,
	       _token_value: _value,
	       _when: block.timestamp
        } ) );

    }