diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/ObservableValueRegistry.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/ObservableValueRegistry.java
index 54af7f42dc79c816fa6f4716f2e9c7fe2aae54be..e55921801fb2a36ca79c4e5e1723bc6df02f3317 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/ObservableValueRegistry.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/ui/ObservableValueRegistry.java
@@ -30,16 +30,16 @@ public abstract class ObservableValueRegistry<K, V extends UpdatableObservableVa
 		};
 	}
 	
-	public V addIfAbsent(K key) {
+	public synchronized V addIfAbsent(K key) {
 		V uov = map.computeIfAbsent(key, k -> constructObservableValue(k));
 		return uov;
 	}
 	
-	public V get(K key) {
+	public synchronized V get(K key) {
 		return map.get(key);
 	}
 
-	public Collection<V> getAllItems() {
+	public synchronized Collection<V> getAllItems() {
 		return map.values().stream().map(val -> val).collect(Collectors.toList());
 	}
 	
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
index 2c2268dbc1435226b27edb93d172b26268d56bd0..8d91f4c0f16073011d529cb6f978401cdc126558 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
@@ -49,9 +49,8 @@ import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
 import cz.it4i.fiji.haas_java_client.UploadingFile;
 import net.imagej.updater.util.Progress;
 
-public class BenchmarkJobManager implements Closeable{
+public class BenchmarkJobManager implements Closeable {
 
-	
 	private static Logger log = LoggerFactory
 			.getLogger(cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.class);
 
@@ -60,7 +59,7 @@ public class BenchmarkJobManager implements Closeable{
 	public final class BenchmarkJob implements HaaSOutputHolder {
 
 		private final Job job;
-		
+
 		public boolean isUseDemoData() {
 			return job.isUseDemoData();
 		}
@@ -89,14 +88,14 @@ public class BenchmarkJobManager implements Closeable{
 		}
 
 		public synchronized void startJob(Progress progress) throws IOException {
-			job.uploadFile(Constants.CONFIG_YAML,  new P_ProgressNotifierAdapter(progress));
+			job.uploadFile(Constants.CONFIG_YAML, new P_ProgressNotifierAdapter(progress));
 			String outputName = getOutputName(job.openLocalFile(Constants.CONFIG_YAML));
 			verifiedState = null;
 			verifiedStateProcessed = false;
 			running = null;
 			job.submit();
 			job.setProperty(SPIM_OUTPUT_FILENAME_PATTERN, outputName);
-		
+
 		}
 
 		public JobState getState() {
@@ -111,7 +110,6 @@ public class BenchmarkJobManager implements Closeable{
 			job.stopUploadData();
 		}
 
-		
 		public synchronized CompletableFuture<JobState> getStateAsync(Executor executor) {
 			if (running != null) {
 				return running;
@@ -126,12 +124,12 @@ public class BenchmarkJobManager implements Closeable{
 		public void startDownload() throws IOException {
 			if (job.getState() == JobState.Finished) {
 				String filePattern = job.getProperty(SPIM_OUTPUT_FILENAME_PATTERN);
-				job.startDownload(downloadFinishedData(filePattern) );
+				job.startDownload(downloadFinishedData(filePattern));
 			} else if (job.getState() == JobState.Failed || job.getState() == JobState.Canceled) {
 				job.startDownload(downloadFailedData());
 			}
 		}
-		
+
 		public boolean canBeDownloaded() {
 			return job.canBeDownloaded();
 		}
@@ -390,7 +388,8 @@ public class BenchmarkJobManager implements Closeable{
 		private SPIMComputationAccessor getComputationAccessor() {
 			SPIMComputationAccessor result = new SPIMComputationAccessor() {
 
-				private final HaaSOutputHolder outputOfSnakemake = new HaaSOutputHolderImpl(list -> job.getOutput(list));
+				private final HaaSOutputHolder outputOfSnakemake = new HaaSOutputHolderImpl(
+						list -> job.getOutput(list));
 
 				@Override
 				public List<String> getActualOutput(List<SynchronizableFileType> content) {
@@ -429,7 +428,7 @@ public class BenchmarkJobManager implements Closeable{
 		public void setDownloaded(Boolean val) {
 			job.setDownloaded(val);
 		}
-		
+
 		public void setUploaded(boolean b) {
 			job.setUploaded(b);
 		}
@@ -459,9 +458,12 @@ public class BenchmarkJobManager implements Closeable{
 		jobManager = new JobManager(params.workingDirectory(), constructSettingsFromParams(params));
 	}
 
-	public BenchmarkJob createJob(Function<Path, Path> inputDirectoryProvider,Function<Path, Path> outputDirectoryProvider) throws IOException {
+	public BenchmarkJob createJob(Function<Path, Path> inputDirectoryProvider,
+			Function<Path, Path> outputDirectoryProvider) throws IOException {
 		Job job = jobManager.createJob(inputDirectoryProvider, outputDirectoryProvider);
-		job.storeDataInWorkdirectory(getUploadingFile());
+		if (job.isUseDemoData()) {
+			job.storeDataInWorkdirectory(getConfigYamlFile());
+		}
 		return convertJob(job);
 	}
 
@@ -574,8 +576,8 @@ public class BenchmarkJobManager implements Closeable{
 	public void close() {
 		jobManager.close();
 	}
-	
-	private UploadingFile getUploadingFile() {
+
+	private UploadingFile getConfigYamlFile() {
 		return new UploadingFileFromResource("", Constants.CONFIG_YAML);
 	}
 
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
index 263db558d11215b6b5d7ef87bc9e2b65cc71f3fb..e3694d160d9d3698f5de1e69a7d81029522b4eb4 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/BenchmarkSPIMController.java
@@ -3,6 +3,7 @@ package cz.it4i.fiji.haas_spim_benchmark.ui;
 import java.awt.Desktop;
 import java.awt.Window;
 import java.io.IOException;
+import java.nio.file.Path;
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -102,7 +103,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
 
 	private void initMenu() {
 		TableViewContextMenu<ObservableBenchmarkJob> menu = new TableViewContextMenu<>(jobs);
-		menu.addItem("Create job", x -> createJob(), j -> true);
+		menu.addItem("Create job", x -> askForCreateJob(), j -> true);
 		menu.addItem("Start job", job -> executeWSCallAsync("Starting job", p -> {
 			job.getValue().startJob(p);
 			job.getValue().update();
@@ -150,14 +151,24 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
 		menu.addItem("Open working directory", j -> open(j.getValue()), x -> JavaFXRoutines.notNullValue(x, j -> true));
 	}
 
-	private void createJob() {
+	private void askForCreateJob() {
 		NewJobWindow newJobWindow = new NewJobWindow(null);
 		ModalDialogs.doModal(newJobWindow, WindowConstants.DISPOSE_ON_CLOSE);
-		newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", p -> manager
-				.createJob(wd -> newJobWindow.getInputDirectory(wd), wd -> newJobWindow.getOutputDirectory(wd))));
+		newJobWindow.setCreatePressedNotifier(() -> executeWSCallAsync("Creating job", false,p -> doCreateJob(wd -> newJobWindow.getInputDirectory(wd), wd -> newJobWindow.getOutputDirectory(wd))));
 
 	}
 
+	private void doCreateJob(Function<Path,Path> inputProvider, Function<Path,Path> outputProvider) throws IOException {
+		BenchmarkJob bj = manager.createJob(inputProvider, outputProvider);
+		ObservableBenchmarkJob obj = registry.addIfAbsent(bj);
+		addJobToItems(obj);
+		jobs.refresh();
+	}
+
+	private synchronized void addJobToItems(ObservableBenchmarkJob obj) {
+		jobs.getItems().add(obj);
+	}
+
 	private void open(BenchmarkJob j) {
 		executorServiceUI.execute(() -> {
 			Desktop desktop = Desktop.getDesktop();
@@ -184,8 +195,9 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
 			}
 			return null;
 		}, x -> {
-			if (update)
+			if (update) {
 				updateJobs();
+			}
 		});
 	}
 
@@ -215,7 +227,7 @@ public class BenchmarkSPIMController extends BorderPane implements CloseableCont
 				executorServiceFX.execute(() -> {
 					for (ObservableBenchmarkJob value : registry.getAllItems()) {
 						if (!actual.contains(value)) {
-							this.jobs.getItems().add(value);
+							addJobToItems(value);
 						}
 					}
 				});