diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/ObservableBenchmarkJob.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/ObservableBenchmarkJob.java
index a7401d3c0947937a733a62e1b3d602037fe0bc07..ef8c5323ce35e8cbc2d43bc8c76c4051de7a3441 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/ObservableBenchmarkJob.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/ObservableBenchmarkJob.java
@@ -2,8 +2,6 @@
 package cz.it4i.fiji.haas_spim_benchmark.core;
 
 import java.io.Closeable;
-import java.util.Observable;
-import java.util.Observer;
 import java.util.concurrent.Executor;
 import java.util.function.Consumer;
 import java.util.function.Function;
@@ -15,6 +13,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import cz.it4i.fiji.haas.ui.UpdatableObservableValue;
+import cz.it4i.fiji.haas_java_client.FileTransferInfo;
 import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
 import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob;
 
@@ -33,12 +32,12 @@ public class ObservableBenchmarkJob extends
 		() -> getValue().needsUpload());
 	private final Executor executor;
 
-	private final P_Observable fileTransferObservable = new P_Observable();
-
 	private final HaasOutputObservableValueRegistry haasOutputRegistry;
 
 	private final TaskObservableValueRegistry taskRegistry;
 
+	private final SimpleObservableList<FileTransferInfo> fileTransferList;
+
 	public interface TransferProgress {
 
 		public Long getRemainingMiliseconds();
@@ -62,6 +61,8 @@ public class ObservableBenchmarkJob extends
 
 		haasOutputRegistry = new HaasOutputObservableValueRegistry(getValue());
 		taskRegistry = new TaskObservableValueRegistry(getValue());
+		fileTransferList = new SimpleObservableList<>(wrapped
+			.getFileTransferInfo());
 	}
 
 	public TransferProgress getDownloadProgress() {
@@ -77,12 +78,8 @@ public class ObservableBenchmarkJob extends
 		getValue().setUploadNotifier(null);
 	}
 
-	public void startObservingFileTransfer(final Observer observer) {
-		fileTransferObservable.addObserver(observer);
-	}
-
-	public void stopObservingFileTransfer(final Observer observer) {
-		fileTransferObservable.deleteObserver(observer);
+	public SimpleObservableList<FileTransferInfo> getFileTransferList() {
+		return fileTransferList;
 	}
 
 	public SimpleObservableValue<String> getObservableSnakemakeOutput(
@@ -108,21 +105,8 @@ public class ObservableBenchmarkJob extends
 		});
 	}
 
-	private void notifyFileTransferObservers() {
-		fileTransferObservable.setChanged();
-		fileTransferObservable.notifyObservers();
-	}
-
 	// -- Private classes --
 
-	private class P_Observable extends Observable {
-
-		@Override
-		public synchronized void setChanged() {
-			super.setChanged();
-		}
-	}
-
 	private class P_TransferProgress implements Progress, TransferProgress {
 
 		private final Supplier<Boolean> doneStatusSupplier;
@@ -192,7 +176,7 @@ public class ObservableBenchmarkJob extends
 
 		@Override
 		public void itemDone(final Object item) {
-			notifyFileTransferObservers();
+			fileTransferList.setAll(getValue().getFileTransferInfo());
 		}
 
 		@Override
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/DataTransferController.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/DataTransferController.java
index f9d6de29b32002c6c3af58344fbbba69cd514880..e2ae7ca483bfdeb4fa9a9dc6313b29ecb51b5de3 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/DataTransferController.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/DataTransferController.java
@@ -1,11 +1,6 @@
 
 package cz.it4i.fiji.haas_spim_benchmark.ui;
 
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Observable;
-import java.util.Observer;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -15,6 +10,7 @@ import cz.it4i.fiji.haas.ui.TableCellAdapter;
 import cz.it4i.fiji.haas_java_client.FileTransferInfo;
 import cz.it4i.fiji.haas_java_client.FileTransferState;
 import cz.it4i.fiji.haas_spim_benchmark.core.ObservableBenchmarkJob;
+import cz.it4i.fiji.haas_spim_benchmark.core.SimpleObservableList;
 import cz.it4i.fiji.haas_spim_benchmark.core.SimpleObservableValue;
 import javafx.fxml.FXML;
 import javafx.scene.control.TableColumn;
@@ -34,82 +30,59 @@ public class DataTransferController extends BorderPane implements
 		cz.it4i.fiji.haas_spim_benchmark.ui.DataTransferController.class);
 
 	@FXML
-	private TableView<SimpleObservableValue<FileTransferInfo>> files;
-
-	private ObservableBenchmarkJob job;
-
-	private final Observer observer = new Observer() {
-
-		@Override
-		public void update(Observable o, Object arg) {
-			files.getItems().clear();
-
-			final List<SimpleObservableValue<FileTransferInfo>> tempList =
-				new LinkedList<>();
-
-			job.getValue().getFileTransferInfo().forEach(i -> {
-				tempList.add(new SimpleObservableValue<>(i));
-			});
-
-			files.getItems().addAll(tempList);
-
-		}
-
-	};
+	private TableView<FileTransferInfo> files;
 
 	public DataTransferController() {
 		JavaFXRoutines.initRootAndController(FXML_FILE_NAME, this);
-		initTable();
 	}
 
+	@SuppressWarnings("unchecked")
 	public void setJob(final ObservableBenchmarkJob job) {
-		this.job = job;
-		this.job.startObservingFileTransfer(observer);
-		observer.update(null, null); // Needs to be done in order to retrieve finished files
+
+		SimpleObservableList<FileTransferInfo> fileTransferList = job
+			.getFileTransferList();
+
+		if (fileTransferList != null && fileTransferList.size() != 0) {
+
+			final int columnIndexPath = 0;
+			final int columnIndexState = 1;
+
+			JavaFXRoutines.setCellValueFactoryForList(files, columnIndexPath,
+				f -> new SimpleObservableValue<>(f.getValue().getFileNameAsString()));
+			JavaFXRoutines.setCellValueFactoryForList(files, columnIndexState,
+				f -> new SimpleObservableValue<>(f.getValue().getState()));
+
+			final TableColumn<FileTransferInfo, FileTransferState> stateColumn =
+				(TableColumn<FileTransferInfo, FileTransferState>) files.getColumns()
+					.get(columnIndexState);
+
+			stateColumn.setCellFactory(column -> new TableCellAdapter<>((cell, val,
+				empty) -> {
+				if (val == null || empty) {
+					return;
+				}
+
+				final TableRow<FileTransferInfo> currentRow = cell.getTableRow();
+				cell.setText(val.toString());
+				if (val.equals(FileTransferState.Finished)) {
+					currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
+						.toCss(Color.rgb(0x41, 0xB2, 0x80)));
+				}
+				else {
+					currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
+						.toCss(Color.rgb(0x30, 0xA2, 0xCC)));
+				}
+			}));
+
+			files.setItems(fileTransferList);
+		}
 	}
 
 	// -- CloseableControl methods --
 
 	@Override
 	public void close() {
-		job.stopObservingFileTransfer(observer);
-	}
-
-	// -- Helper methods --
-
-	@SuppressWarnings("unchecked")
-	private void initTable() {
-
-		final int columnIndexPath = 0;
-		final int columnIndexState = 1;
-
-		JavaFXRoutines.setCellValueFactory(files, columnIndexPath, f -> f
-			.getFileNameAsString());
-		JavaFXRoutines.setCellValueFactory(files, columnIndexState, f -> f
-			.getState());
-
-		final TableColumn<SimpleObservableValue<FileTransferInfo>, FileTransferState> stateColumn =
-			(TableColumn<SimpleObservableValue<FileTransferInfo>, FileTransferState>) files
-				.getColumns().get(columnIndexState);
-
-		stateColumn.setCellFactory(column -> new TableCellAdapter<>((cell, val,
-			empty) -> {
-			if (val == null || empty) {
-				return;
-			}
-			
-			final TableRow<SimpleObservableValue<FileTransferInfo>> currentRow = cell
-				.getTableRow();
-			cell.setText(val.toString());
-			if (val.equals(FileTransferState.Finished)) {
-				currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
-					.toCss(Color.rgb(0x41, 0xB2, 0x80)));
-			}
-			else {
-				currentRow.setStyle("-fx-text-background-color: " + JavaFXRoutines
-					.toCss(Color.rgb(0x30, 0xA2, 0xCC)));
-			}
-		}));
+		// Do nothing
 	}
 
 }