public void run() {
		String line = "";
		
		while (line != null) {

			try {
				line = this.connection.waitForResponse();
				
				this.logger.debug("Read Line: {}", line);
				
				for(ReceiverHandler r: this.handlers) {
					try {
						r.handle(line);
					} catch (InvalidLine e) {
						// still not sure how to handle this....
						this.logger.error("InvalidLine for handler: {}", r, e);
					}
				}
				
				Thread.sleep(20);
			}
			catch(InterruptedException e) {
				this.logger.info("Connection read was interupted");
				return;
			}
			catch (SocketTimeoutException e) {
				// this is ok, it's supposed to happen eventually
				this.logger.trace("Socket timed out");
				continue;
			}
			catch (IOException e) {
				this.logger.warn("IOException Occured", e);
				this.last_excpetion = e;
				return;
			}
		}

	}