diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToAllVisible.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToAllVisible.m
index a8986baa2fd319c283f978bd5e36072e50f532f1..3df3e6dde559cae25ffc9ea8742a472dc9443e99 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToAllVisible.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToAllVisible.m
@@ -46,6 +46,9 @@ artoaWorkspace.toaData.soundSource( ...
 % apply status to selection
 artoaWorkspace.toaData.status(selection) = 1;
 
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 %% Update plots
 artoa.controller.edit.updateAvailablePlots();
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
index 6366cc713f57d54eac18594fb55000e389d88f4a..1d1bbc960a25300962fee4c322a711afe7b21170 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
@@ -41,6 +41,9 @@ artoaWorkspace.toaData.soundSource( ...
 % Update status to selected
 artoa.controller.edit.timeOfArrival.applyStatusToSelectedPoints(1);
 
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 %% Update plots
 artoa.controller.edit.updateAvailablePlots();
 %artoa.controller.edit.timeOfArrival.plot();
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
index e1ee78f32d94684b6b3f5bd5274cebff570b2ec8..161a50adeb616c93e94447c5f5b9e554272f83e6 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
@@ -23,6 +23,10 @@ end
 %% Set status
 artoaWorkspace.toaData.status(artoaWorkspace.editTimeOfArrival.userSelection) = pStatusCode;
 
+
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/createSoundsourceColorsPanel.m b/lib/+artoa/+controller/+edit/+timeOfArrival/createSoundsourceColorsPanel.m
index a8b97a9583e42f241c3e349531079adc84cde976..90741b8a403d663f7c5b637094319aefe552edd9 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/createSoundsourceColorsPanel.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/createSoundsourceColorsPanel.m
@@ -12,7 +12,7 @@ artoaGui.editTimeOfArrival.frameControlsSoundSourceColors = uipanel( ...
     'Title', 'Soundsource colors', ...
     'Units', 'normalized', ...
     'BackgroundColor', 'white', ...
-    'Position', [.01 .3 width .6] ...
+    'Position', [.01 .4 width .5] ...
 );
 
 % add label and color for every sound source that is available
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/open.m b/lib/+artoa/+controller/+edit/+timeOfArrival/open.m
index aeac618c5587173e52c29c067f0ebdbe5bb70f06..24db0493bf198a976aca853a890b369df4a3487e 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/open.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/open.m
@@ -17,6 +17,9 @@ artoa.gui.edit.timeOfArrival();
 %% Create workspace variables
 artoaWorkspace.editTimeOfArrival = struct();
 
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 
 end
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
index a156082c0db0496d1314380f472b7b6afaf4a986..cffd326545b997b87089bea94c77fe410ad31ea1 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
@@ -34,9 +34,15 @@ if isfield(artoaGui.editTimeOfArrival, 'scatterTimeOfArrival') ...
     artoaGui.editTimeOfArrival.scatterTimeOfArrival.CData = c;
     % update applied sound sources
     artoa.controller.edit.timeOfArrival.plotAppliedSoundsources();
-    artoa.controller.edit.timeOfArrival.plotSoundsourceToaFromGps(artoaWorkspace.filteredSoundsources);
     artoa.controller.edit.timeOfArrival.applyToaAxesToGpsAndSoundsources();
     artoa.controller.edit.timeOfArrival.createSoundsourceColorsPanel();
+    linkaxes([ ...
+        artoaGui.editTimeOfArrival.axesScatterTimeOfArrival, ...
+        artoaGui.editTimeOfArrival.axesToaFromGps, ...
+        artoaGui.editTimeOfArrival.axesAppliedSoundsources ...
+    ]);
+    % force toa scatter to be current axes of figure
+    artoaGui.figures.editTimeOfArrival.CurrentAxes = artoaGui.editTimeOfArrival.axesScatterTimeOfArrival;
     return
 end
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/removeSoundSourceFromSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/removeSoundSourceFromSelectedPoints.m
index 411610a55074633050ab135c43daaadce54476f4..be718ea1d005dab3bdb7dbc6ec762e0cdc5f0fbb 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/removeSoundSourceFromSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/removeSoundSourceFromSelectedPoints.m
@@ -27,6 +27,9 @@ artoaWorkspace.toaData.soundSource( ...
 % Update status to selected
 artoa.controller.edit.timeOfArrival.applyStatusToSelectedPoints(0);
 
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 %% Update plot
 artoa.controller.edit.updateAvailablePlots();
 %artoa.controller.edit.timeOfArrival.plot();
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/tableDuplicateToaSelection.m b/lib/+artoa/+controller/+edit/+timeOfArrival/tableDuplicateToaSelection.m
new file mode 100644
index 0000000000000000000000000000000000000000..b0d44c289aa29f24c5467925f8bfca81662d0095
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/tableDuplicateToaSelection.m
@@ -0,0 +1,20 @@
+function [] = tableDuplicateToaSelection(~, event)
+%TABLESOUNDSOURCECOMBINATIONSSELECTION Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui;
+
+%% Get selected date
+date = str2double(artoaGui.editTimeOfArrival.tableDuplicateAppliedToa.Data{event.Indices(1), 2});
+toas = artoaGui.editTimeOfArrival.tableDuplicateAppliedToa.Data{event.Indices(1), 3};
+toas = strsplit(toas, ' ');
+
+
+%% Zoom to the selected points
+
+artoaGui.editTimeOfArrival.axesScatterTimeOfArrival.XLim = [date - 25; date + 25];
+artoaGui.editTimeOfArrival.axesScatterTimeOfArrival.YLim = [str2double(toas{1}) - 25; str2double(toas{end - 1}) + 25];
+
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/updateDuplicateToaTable.m b/lib/+artoa/+controller/+edit/+timeOfArrival/updateDuplicateToaTable.m
new file mode 100644
index 0000000000000000000000000000000000000000..5e5613933d4462d898eee8aae1e6b5f6333fe80e
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/updateDuplicateToaTable.m
@@ -0,0 +1,33 @@
+function [] = updateDuplicateToaTable()
+%UPDATEDUPLICATETOATABLE Summary of this function goes here
+%   Detailed explanation goes here
+
+
+global artoaWorkspace artoaGui;
+
+
+%% Get required data
+
+fnames = fieldnames(artoaWorkspace.filteredSoundsources);
+toaData = artoaWorkspace.toaData;
+
+tableData = {};
+
+%% calculate duplicated data
+
+for i = 1:length(fnames)
+    soundsource = artoaWorkspace.filteredSoundsources.(fnames{i});
+    [dates, toas] = artoa.data.getDuplicateAppliedDates(soundsource, toaData);
+    for o = 1:length(dates)
+        tableData{end + 1, 1} = fnames{i};
+        tableData{end, 2} = sprintf('%3.1f', dates{o});
+        tableData{end, 3} = sprintf('%3.1f ', sort(toas{o}));
+    end
+end
+
+%% Update table
+artoaGui.editTimeOfArrival.tableDuplicateAppliedToa.Data = tableData;
+
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/withdrawSoundSourceToAllVisible.m b/lib/+artoa/+controller/+edit/+timeOfArrival/withdrawSoundSourceToAllVisible.m
index fa5d7342080e01b71717824d38170e2add574614..3717b57da361ee94866d3b0d59301260054debe4 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/withdrawSoundSourceToAllVisible.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/withdrawSoundSourceToAllVisible.m
@@ -35,6 +35,9 @@ artoaWorkspace.toaData.soundSource(selection) = {''};
 % apply status to selection
 artoaWorkspace.toaData.status(selection) = 0;
 
+%% Update duplicate toa table
+artoa.controller.edit.timeOfArrival.updateDuplicateToaTable();
+
 %% Update plots
 artoa.controller.edit.updateAvailablePlots();
 
diff --git a/lib/+artoa/+controller/+track/+parameter/close.m b/lib/+artoa/+controller/+track/+parameter/close.m
index 0620fe9b1ba100cf11ba6726ff7d271853198b71..0090fcebd2ee79180e4a83e63a7c82d94ab51134 100644
--- a/lib/+artoa/+controller/+track/+parameter/close.m
+++ b/lib/+artoa/+controller/+track/+parameter/close.m
@@ -6,15 +6,24 @@ global artoaGui;
 
 %% Close the figure
 
-delete(artoaGui.figures.trackParameter);
+try
+    delete(artoaGui.figures.trackParameter);
+catch
+    delete(gcf);
+end
 
 %% Clean up variables
 
-artoaGui = rmfield(artoaGui, 'trackParameter');
-artoaGui.figures = rmfield(artoaGui.figures, 'trackParameter');
+try
+    artoaGui = rmfield(artoaGui, 'trackParameter');
+catch
+end
+try
+    artoaGui.figures = rmfield(artoaGui.figures, 'trackParameter');
+catch
+end
 % Workspace is not cleaned, because we need the values after closing the
 % window
-%artoaWorkspace = rmfield(artoaWorkspace, 'trackParameter');
 
 end
 
diff --git a/lib/+artoa/+data/getDuplicateAppliedDates.m b/lib/+artoa/+data/getDuplicateAppliedDates.m
new file mode 100644
index 0000000000000000000000000000000000000000..266df5fe36418decafab26e0b33a6c23f84ee005
--- /dev/null
+++ b/lib/+artoa/+data/getDuplicateAppliedDates.m
@@ -0,0 +1,37 @@
+function [duplicateDates, duplicateToas] = getDuplicateAppliedDates(pSoundsource, pToaData)
+%GETDUPLICATEAPPLIEDDATES Collects all dates that have been applied multiple times to the soundsource.
+%   Returns two cells with indices consistent to each other.
+%
+%   Parameters:
+%       pSoundsource (struct):      The soundsource details.
+%       pToaData (struct):          The TOA data.
+%
+%   Returns:
+%       duplicateDates (cell):      Containing all rafos dates where
+%                                   multiple applications have been found.
+%       duplicateToas (cell):       Contains all toas that are found.
+
+%% Get required data
+
+name = pSoundsource.sourcename;
+selection = strcmp(pToaData.soundSource, name);
+toaDates = pToaData.toaDate(selection);
+toa = pToaData.toa(selection);
+
+%% Collect duplications
+
+[~, ind] = unique(toaDates);
+duplicateIndices = setdiff(1:size(toaDates, 1), ind);
+
+duplicateDates = cell(length(duplicateIndices), 1);
+duplicateToas = cell(length(duplicateIndices), 1);
+
+%% Get all duplicate toas
+for i = 1:length(duplicateIndices)
+    index = duplicateIndices(i);
+    duplicateDates(i) = {toaDates(index)};
+    duplicateToas(i) = {toa(toaDates == duplicateDates{i})};
+end
+
+end
+
diff --git a/lib/+artoa/+gui/+edit/timeOfArrival.m b/lib/+artoa/+gui/+edit/timeOfArrival.m
index 1bdffd18c0447fc5220f1b767b4205c9b92cfad8..b74bd3b9949fc0a84b825d6d35550bcb0e36d2c5 100644
--- a/lib/+artoa/+gui/+edit/timeOfArrival.m
+++ b/lib/+artoa/+gui/+edit/timeOfArrival.m
@@ -149,6 +149,31 @@ artoaGui.editTimeOfArrival.buttonWithdrawAllVisible = uicontrol( ...
     'CallBack', 'artoa.controller.edit.timeOfArrival.withdrawSoundSourceToAllVisible();' ...
 );
 
+%% Duplicate applied TOA table
+
+artoaGui.editTimeOfArrival.frameDuplicateAppliedToa = uipanel( ...
+    'Title', 'Duplicates', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [.01 .25 width .15] ...
+);
+
+columns = { ...
+    'Soundsource', 'Date', 'TOAs' ...
+};
+artoaGui.editTimeOfArrival.tableDuplicateAppliedToa = uitable( ...
+    artoaGui.editTimeOfArrival.frameDuplicateAppliedToa, ...
+    'Units', 'normalized', ...
+    'Position', [.1, .1, .8, .8], ...
+    'Data', cell(1, length(columns)), ...
+    'ColumnName', columns, ...
+    'ColumnEditable', false, ...
+    'CellSelectionCallback', @artoa.controller.edit.timeOfArrival.tableDuplicateToaSelection,...
+    'CellEditCallback', '', ...
+    'ColumnWidth', {60, 120, 120} ...
+);
+clear columns;
+
 %% Sound source color legend frame
 
 artoa.controller.edit.timeOfArrival.createSoundsourceColorsPanel();
diff --git a/lib/+artoa/+gui/+track/parameter.m b/lib/+artoa/+gui/+track/parameter.m
index 364f27f9cc6df043851e093e3488db45d85101da..27f2da2d8b3687eec9a0308889a56bf0d5de2670 100644
--- a/lib/+artoa/+gui/+track/parameter.m
+++ b/lib/+artoa/+gui/+track/parameter.m
@@ -38,7 +38,7 @@ for i = 1:length(availableCallbacks) % check if a callback is undefined
 end
 
 
-%% Initialize pressure gui
+%% Initialize track parameter gui
 
 artoaGui.figures.trackParameter = figure( ...
     'Name', windowTitle, ...