public NMDCHubCommunicator(Connection connection) {
        setConnection(connection);
        ScheduledExecutorService getHubDataService = Executors.newSingleThreadScheduledExecutor();
        getHubDataService.scheduleAtFixedRate( new Runnable() {
                @Override
                public void run() {
                    try {
                        String data = getData(getConnection().getInputStream());
                        if (!data.isEmpty()) {
                                System.err.println("hub comm, data: "+data);
                                //TODO: decide whether to insert into hubdata or broadcast data

                                if (data.startsWith("<")) {
                                    broadcastData.add(data);
                                } else {
                                    hubData.add(data);
                                }
                        }
                    } catch(Exception e) {
                        e.printStackTrace();
                    }
                }
        }, 0, 50, TimeUnit.MILLISECONDS);
    }