public void connect() throws ConnectionException, IOException {
		if(clientConnection == null || clientConnection.isClosed()) {
			try {
				clientConnection = new ServerSocket(port);
				Fluid.log("Target: Accepting connections on port " + port);
			}
			catch(BindException e) {
				throw new ConnectionException(e);
			}
		}
		if(username != null && password != null) 
			new Client(this, clientConnection.accept(), idleTimeout, max, ruleFile, username, password);
		else
			new Client(this, clientConnection.accept(), idleTimeout, max, ruleFile);
		try {
			synchronized(this) {
				// give it at most one second
				wait(1000);
			}
		} 
		catch(InterruptedException e) {
			// nada
		}
		if(!hasRequested) {
			throw new IOException("No request was made");
		}
	}