public void execute() {
		String line = null;
		
		try { dout.runQueue(); } catch (Exception e) { log.catching(Level.WARN, e); }
		
		Thread.interrupted();
		dout.setEnabled(true);
		try {
			line = reader.readLine("> ", null);
		} catch (IOException e) {
			if (e.getCause() instanceof InterruptedException) {
				try {
					System.out.write(new byte[] {0x08, 0x08});
				} catch (IOException e1) {
					log.catching(Level.WARN, e1);
				}
			} else
				log.catching(Level.WARN, e);
			return;
		} finally {
			dout.setEnabled(false);
		}
		
		if (line.length() == 0)
			return;
		
		try {
			parser.execute(line);
		} catch (ExecutionException e) {
			if (e.getMessage().equals("No command matches."))
				System.err.println("Command '" + line + "' not found");
			else
				log.catching(Level.WARN, e);
		}
	}