@Override
		public void run( ){
			
			while( keepDispatching ){
				
				try{
					
					Message event 		= MESSAGE_QUEUE.take();
					MessageType type	= event.getType();
					
					int dispatchedCount = 0;
				   				    
				    for( MListener listener : ELIST ){
				    	if( listener.isSupported( type ) ){
				    		 listener.update( event );
				    		 ++dispatchedCount;
				    	}
				    }
					
				    if( dispatchedCount == 0 ){
				    	adminListener.update( event );
				    	continue;
				    }
				    
				    messageCounter.incrementAndGet();
				
				}catch( InterruptedException ie ){
					LOGGER.info("Successfully shut down EventDispatcher thread.");
										
				}catch( Exception e ){
					LOGGER.warn("Exception occured while dispatching events.");
					LOGGER.warn("{} ", e);
				}
				
			}
			
		}