protected void runMainLoop() {
		
		for( int i=0; i<20; i++ ){
			
				// here be the main client thread loop

				try {
					
					sleep( rand.nextInt(1000) );
					
					// now generate a block
					
					SignedBlock newBlock = null;
					try {
						
						newBlock = blockTree.createBestBlock(this.identity);
						
					} catch (Exception e) {
						
						LOGGER.log( new ThreadIDLogRecord( Level.INFO, 
								   "<span style=\"color:red;\">THREAD FAIL</span>",
								thisThreadNum ) );
						
					}
					
					LOGGER.log( new ThreadIDLogRecord( Level.INFO, 
							    "new block #" + newBlock.serialNum  
							    , thisThreadNum ) );

					// and broadcast it
				
					broadcaster.broadcastBlock(newBlock);
					
				} catch (InterruptedException e) {
					
					LOGGER.warning("INTERRUPT!");
					
				}
			
		}
	}