public static void handle(Connection connection) throws IOException {
		
		if (connection instanceof StreamConnectionNotifier){
	    	
			BlucatState.serverConnection = connection;
			do{
				BlucatState.connection = ((StreamConnectionNotifier)connection).acceptAndOpen();
		    	BlucatConnection.handle(BlucatState.connection);
			}while (BlucatState.keepalive);	
	    	
	    }else if (connection instanceof L2CAPConnectionNotifier){
	    
	    	BlucatState.serverConnection = connection;
	    	do{
	    		BlucatState.connection = ((L2CAPConnectionNotifier)connection).acceptAndOpen();
		    	BlucatConnection.handle(BlucatState.connection);
	    	}while (BlucatState.keepalive);	
		
	    }else{		
		
			if (BlucatState.vverbose) {
				try{
					final RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
					BlucatState.rssiexec = Executors.newSingleThreadScheduledExecutor();
					BlucatState.rssiexec.scheduleAtFixedRate(new Runnable() {
						@Override
						public void run() {
	
							try {
	
								PrintUtil.err.println("#RSSI:" + RemoteDeviceHelper.readRSSI(dev));
							} catch (Exception e) {
								PrintUtil.verbose("#Unable to read RSSI");
							}
	
						}
					}, 0, 1, TimeUnit.SECONDS);
				}catch(Exception e){
					
					PrintUtil.verbose("#Strange Error: " + e.getMessage());
					e.printStackTrace();
				}
			}
			
			handleSingle(connection);
			
			if (BlucatState.rssiexec != null)
				BlucatState.rssiexec.shutdownNow();
	    }
	}