private void bindTaskToControl(ServiceAndTask demoControl, Task<String> task) {

    demoControl.startTask.setOnMouseClicked((val) -> new Thread(task).start());

    demoControl.labelTask.textProperty().bind(task.messageProperty());

    task.addEventHandler(
        WorkerStateEvent.WORKER_STATE_SUCCEEDED,
        (val) -> {
          try {
            demoControl.labelTask.textProperty().unbind();
            demoControl.labelTask.setText(task.get());
            demoControl.startTask.setDisable(true);
          } catch (InterruptedException e) {
            e.printStackTrace();
          } catch (ExecutionException e) {
            e.printStackTrace();
          }
        });

    demoControl.progressTask.progressProperty().bind(task.progressProperty());
  }