diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m
new file mode 100644
index 0000000000000000000000000000000000000000..c78d3239b01a62d35edb23d72684c9d5f58e3701
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPoints.m
@@ -0,0 +1,21 @@
+function [] = applyStatusToAllPoints(pStatus)
+%APPLYSTATUSTOALLPOINTS Applies the given status to all points.
+%   Applies given status to all points.
+%
+%   Parameters:
+%       pStatusCode (int)    The status code that will be applied to the
+%                            selected data.
+
+global artoaWorkspace artoaGui;
+
+%% Set status
+artoaWorkspace.statusPressure(:) = pStatus;
+
+%% Update gui
+artoa.controller.edit.updateAvailablePlots();
+artoa.controller.updateMenuButtons();
+
+[artoaGui.editPressure, artoaWorkspace.editPressure] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure);
+end
+
diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m
new file mode 100644
index 0000000000000000000000000000000000000000..1a6e02aa667b32de0f78d9af88bb88a7cd4c409d
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllVisible.m
@@ -0,0 +1,31 @@
+function [] = applyStatusToAllVisible(pStatusCode)
+%APPLYSTATUSTOALLVISIBLE Applies the given status code to the visible points.
+%   Applies the given status to the workspace variable.
+%
+%   Parameters:
+%       pStatusCode (int)    The status code that will be applied to the
+%                            selected data.
+%
+
+global artoaWorkspace artoaGui;
+
+%% Get all visible points
+x_boundary = artoaGui.figures.editPressure.CurrentAxes.XLim;
+y_boundary = artoaGui.figures.editPressure.CurrentAxes.YLim;
+
+selection = inpolygon( ...
+    artoaWorkspace.rafosDate, ...
+    artoaWorkspace.pressure, ...
+    [x_boundary(1) x_boundary(2) x_boundary(2) x_boundary(1) x_boundary(1)], ...
+    [y_boundary(1) y_boundary(1) y_boundary(2) y_boundary(2) y_boundary(1)] ...
+);
+
+%% Set status
+artoaWorkspace.statusPressure(selection) = pStatusCode;
+
+%% Update gui
+artoa.controller.edit.updateAvailablePlots();
+artoa.controller.updateMenuButtons();
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
index e8625a718faf07b86450df6918050d9397f8b8a0..19d00d2418e2fda55687152d5d271e7de74a7682 100644
--- a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
@@ -14,14 +14,14 @@ global artoaWorkspace artoaGui;
 
 %% Check if selection exists
 
-if ~isfield(artoaWorkspace.editPressure, 'selectedPoints') ...
-        || isempty(artoaWorkspace.editPressure.selectedPoints)
+if ~isfield(artoaWorkspace.editPressure, 'userSelection') ...
+        || isempty(artoaWorkspace.editPressure.userSelection)
     warndlg('You need to select data by using the "Pick" button first!', 'No data selected');
     return;
 end
 
 %% Set status
-artoaWorkspace.statusPressure(artoaWorkspace.editPressure.selectedPoints) = pStatusCode;
+artoaWorkspace.statusPressure(artoaWorkspace.editPressure.userSelection) = pStatusCode;
 
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
diff --git a/lib/+artoa/+controller/+edit/+pressure/dropSelection.m b/lib/+artoa/+controller/+edit/+pressure/dropSelection.m
new file mode 100644
index 0000000000000000000000000000000000000000..9ffc01c95645e18a17c1ffabb37a879db69b88f4
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+pressure/dropSelection.m
@@ -0,0 +1,16 @@
+function [] = dropSelection()
+%DROPSELECTION Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui artoaWorkspace;
+
+if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editPressure)
+    if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
+        return;
+    end
+    % reset the line and all required fields
+    [artoaGui.editPressure, artoaWorkspace.editPressure] = artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure);
+end
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+pressure/pickPoint.m b/lib/+artoa/+controller/+edit/+pressure/pickPoint.m
new file mode 100644
index 0000000000000000000000000000000000000000..addaa25b0667d3f73b70e74ed9b5bc558d829e28
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+pressure/pickPoint.m
@@ -0,0 +1,32 @@
+function [] = pickPoint()
+%PICKPOINT Lets the user pick a point in the plot.
+%   Selection can be aborted by using the right mouse button.
+
+global artoaGui artoaWorkspace;
+
+%% Check if polygon is already selected
+
+artoa.controller.edit.pressure.dropSelection();
+
+%% Select point by mouse
+
+[dx, dy, button] = ginput(1);
+
+% find closest match
+% calculate distance
+distance = sqrt((artoaWorkspace.rafosDate - dx).^2 + (artoaWorkspace.pressure - dy).^2);
+[~, index] = min(distance);
+x_closest = artoaWorkspace.rafosDate(index);
+y_closest = artoaWorkspace.pressure(index);
+
+if button ~= 1
+    return;
+end
+
+hold on;
+artoaGui.editPressure.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]);
+hold off;
+artoaWorkspace.editPressure.userSelection = index;
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m b/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m
index a61ab171ffa082d6e3b69c5fcb85be3881bc508e..63946199c3c8188934e11312b4206959f02f591f 100644
--- a/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m
+++ b/lib/+artoa/+controller/+edit/+pressure/pickPolygon.m
@@ -8,22 +8,16 @@ function [] = pickPolygon()
 
 global artoaGui artoaWorkspace;
 
-%% Check if polygon is already selected
+%% Check if selection is already selected
 
-if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editPressure)
-    if strcmp(questdlg('Reset current line and pick a new one?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
-        return;
-    end
-    % reset the line and all required fields
-    [artoaGui.editPressure, artoaWorkspace.editPressure] = artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure);
-end
+artoa.controller.edit.pressure.dropSelection();
 
 %% Select polygon by mouse
 x = [];
 y = [];
 
 % draw the line that will be extended on every click
-artoaGui.editPressure.selectedPolygon = line( ...
+artoaGui.editPressure.userSelection = line( ...
     NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ...
 );
 
@@ -41,7 +35,7 @@ while button == 1
         continue;
     end
     % update the line
-    set(artoaGui.editPressure.selectedPolygon, 'XData', x, 'YData', y);
+    set(artoaGui.editPressure.userSelection, 'XData', x, 'YData', y);
     [dx, dy, button] = ginput(1);
 end
 
@@ -54,10 +48,10 @@ else
     return;
 end
 % update the line
-set(artoaGui.editPressure.selectedPolygon, 'XData', x, 'YData', y);
+set(artoaGui.editPressure.userSelection, 'XData', x, 'YData', y);
 
 % store the selected points in the workspace for editing
-artoaWorkspace.editPressure.selectedPoints = inpolygon( ...
+artoaWorkspace.editPressure.userSelection = inpolygon( ...
     artoaWorkspace.rafosDate, ...
     artoaWorkspace.pressure, ...
     x, ...
diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m
new file mode 100644
index 0000000000000000000000000000000000000000..535f34e4e9c35d7fb9f038f07e7454eea55155af
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPoints.m
@@ -0,0 +1,21 @@
+function [] = applyStatusToAllPoints(pStatus)
+%APPLYSTATUSTOALLPOINTS Applies the given status to all points.
+%   Applies given status to all points.
+%
+%   Parameters:
+%       pStatusCode (int)    The status code that will be applied to the
+%                            selected data.
+
+global artoaWorkspace artoaGui;
+
+%% Set status
+artoaWorkspace.statusTemperature(:) = pStatus;
+
+%% Update gui
+artoa.controller.edit.updateAvailablePlots();
+artoa.controller.updateMenuButtons();
+
+[artoaGui.editTemperature, artoaWorkspace.editTemperature] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature);
+end
+
diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m
new file mode 100644
index 0000000000000000000000000000000000000000..be52ac6ab9559d1f03dec35f01c1372a776ce05b
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllVisible.m
@@ -0,0 +1,31 @@
+function [] = applyStatusToAllVisible(pStatusCode)
+%APPLYSTATUSTOALLVISIBLE Applies the given status code to the visible points.
+%   Applies the given status to the workspace variable.
+%
+%   Parameters:
+%       pStatusCode (int)    The status code that will be applied to the
+%                            selected data.
+%
+
+global artoaWorkspace artoaGui;
+
+%% Get all visible points
+x_boundary = artoaGui.figures.editTemperature.CurrentAxes.XLim;
+y_boundary = artoaGui.figures.editTemperature.CurrentAxes.YLim;
+
+selection = inpolygon( ...
+    artoaWorkspace.rafosDate, ...
+    artoaWorkspace.temperature, ...
+    [x_boundary(1) x_boundary(2) x_boundary(2) x_boundary(1) x_boundary(1)], ...
+    [y_boundary(1) y_boundary(1) y_boundary(2) y_boundary(2) y_boundary(1)] ...
+);
+
+%% Set status
+artoaWorkspace.statusTemperature(selection) = pStatusCode;
+
+%% Update gui
+artoa.controller.edit.updateAvailablePlots();
+artoa.controller.updateMenuButtons();
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
index 0a694751360d05984a3333184410ed520d5c5545..b5e345f0e6e4fca953df8949c7ac0a87d9011e65 100644
--- a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
@@ -14,14 +14,14 @@ global artoaWorkspace artoaGui;
 
 %% Check if selection exists
 
-if ~isfield(artoaWorkspace.editTemperature, 'selectedPoints') ...
-        || isempty(artoaWorkspace.editTemperature.selectedPoints)
+if ~isfield(artoaWorkspace.editTemperature, 'userSelection') ...
+        || isempty(artoaWorkspace.editTemperature.userSelection)
     warndlg('You need to select data by using the "Pick" button first!', 'No data selected');
     return;
 end
 
 %% Set status
-artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.selectedPoints) = pStatusCode;
+artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.userSelection) = pStatusCode;
 
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
diff --git a/lib/+artoa/+controller/+edit/+temperature/dropSelection.m b/lib/+artoa/+controller/+edit/+temperature/dropSelection.m
new file mode 100644
index 0000000000000000000000000000000000000000..bce2559edd0a57c682c433048fa6e5cb7bf1d552
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+temperature/dropSelection.m
@@ -0,0 +1,16 @@
+function [] = dropSelection()
+%DROPSELECTION Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui artoaWorkspace;
+
+if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTemperature)
+    if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
+        return;
+    end
+    % reset the line and all required fields
+    [artoaGui.editTemperature, artoaWorkspace.editTemperature] = artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature);
+end
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+temperature/pickPoint.m b/lib/+artoa/+controller/+edit/+temperature/pickPoint.m
new file mode 100644
index 0000000000000000000000000000000000000000..50eb98e77295ca71a91608c8d44c09e071d9a083
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+temperature/pickPoint.m
@@ -0,0 +1,32 @@
+function [] = pickPoint()
+%PICKPOINT Lets the user pick a point in the plot.
+%   Selection can be aborted by using the right mouse button.
+
+global artoaGui artoaWorkspace;
+
+%% Check if polygon is already selected
+
+artoa.controller.edit.temperature.dropSelection();
+
+%% Select point by mouse
+
+[dx, dy, button] = ginput(1);
+
+% find closest match
+% calculate distance
+distance = sqrt((artoaWorkspace.rafosDate - dx).^2 + (artoaWorkspace.temperature - dy).^2);
+[~, index] = min(distance);
+x_closest = artoaWorkspace.rafosDate(index);
+y_closest = artoaWorkspace.temperature(index);
+
+if button ~= 1
+    return;
+end
+
+hold on;
+artoaGui.editTemperature.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]);
+hold off;
+artoaWorkspace.editTemperature.userSelection = index;
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m b/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m
index 1907ddfc1b36ba33be5682fd5a263e36e85a8c40..aca9d5d1853e34e69e7b4859305b4b1529538f7e 100644
--- a/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m
+++ b/lib/+artoa/+controller/+edit/+temperature/pickPolygon.m
@@ -23,7 +23,7 @@ x = [];
 y = [];
 
 % draw the line that will be extended on every click
-artoaGui.editTemperature.selectedPolygon = line( ...
+artoaGui.editTemperature.userSelection = line( ...
     NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ...
 );
 
@@ -41,7 +41,7 @@ while button == 1
         continue;
     end
     % update the line
-    set(artoaGui.editTemperature.selectedPolygon, 'XData', x, 'YData', y);
+    set(artoaGui.editTemperature.userSelection, 'XData', x, 'YData', y);
     [dx, dy, button] = ginput(1);
 end
 
@@ -54,10 +54,10 @@ else
     return;
 end
 % update the line
-set(artoaGui.editTemperature.selectedPolygon, 'XData', x, 'YData', y);
+set(artoaGui.editTemperature.userSelection, 'XData', x, 'YData', y);
 
 % store the selected points in the workspace for editing
-artoaWorkspace.editTemperature.selectedPoints = inpolygon( ...
+artoaWorkspace.editTemperature.userSelection = inpolygon( ...
     artoaWorkspace.rafosDate, ...
     artoaWorkspace.temperature, ...
     x, ...
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
index 77026a9fce3f7451f458911b8259d8cc298ad28d..eab9e185058e25b8c09a7b404982442083c94558 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applySoundSourceToSelectedPoints.m
@@ -34,7 +34,7 @@ end
 
 % update sound source of selected points
 artoaWorkspace.toaData.soundSource( ...
-    artoaWorkspace.editTimeOfArrival.selectedPoints ...
+    artoaWorkspace.editTimeOfArrival.userSelection ...
 ) = soundsources(index);
 
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m b/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m
new file mode 100644
index 0000000000000000000000000000000000000000..eeca4132831bab36b87104285a8944b9167a8bcd
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/dropSelection.m
@@ -0,0 +1,16 @@
+function [] = dropSelection()
+%DROPSELECTION Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui artoaWorkspace;
+
+if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival)
+    if strcmp(questdlg('Reset current selection?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
+        return;
+    end
+    % reset the line and all required fields
+    [artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival);
+end
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m
new file mode 100644
index 0000000000000000000000000000000000000000..e6173cb06b3c3c42267498bca3104265a59ee014
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPoint.m
@@ -0,0 +1,32 @@
+function [] = pickPoint()
+%PICKPOINT Lets the user pick a point in the plot.
+%   Selection can be aborted by using the right mouse button.
+
+global artoaGui artoaWorkspace;
+
+%% Check if polygon is already selected
+
+artoa.controller.edit.timeOfArrival.dropSelection();
+
+%% Select point by mouse
+
+[dx, dy, button] = ginput(1);
+
+% find closest match
+% calculate distance
+distance = sqrt((artoaWorkspace.toaData.toaDate - dx).^2 + (artoaWorkspace.toaData.toa - dy).^2);
+[~, index] = min(distance);
+x_closest = artoaWorkspace.toaData.toaDate(index);
+y_closest = artoaWorkspace.toaData.toa(index);
+
+if button ~= 1
+    return;
+end
+
+hold on;
+artoaGui.editTimeOfArrival.userSelection = scatter(x_closest, y_closest, 50, [1 1 1]);
+hold off;
+artoaWorkspace.editTimeOfArrival.userSelection = index;
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m
index c0d0fe4b7b55be738f15734adecc8c0d9fba959b..0b7e3ba08b959cdba90481bc02c5ecab567a57cf 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/pickPolygon.m
@@ -10,20 +10,14 @@ global artoaGui artoaWorkspace;
 
 %% Check if polygon is already selected
 
-if artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival)
-    if strcmp(questdlg('Reset current line and pick a new one?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
-        return;
-    end
-    % reset the line and all required fields
-    [artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival);
-end
+artoa.controller.edit.timeOfArrival.dropSelection();
 
 %% Select polygon by mouse
 x = [];
 y = [];
 
 % draw the line that will be extended on every click
-artoaGui.editTimeOfArrival.selectedPolygon = line( ...
+artoaGui.editTimeOfArrival.userSelection = line( ...
     NaN, NaN, 'Color', [1 1 1], 'LineStyle', '-' ...
 );
 
@@ -41,7 +35,7 @@ while button == 1
         continue;
     end
     % update the line
-    set(artoaGui.editTimeOfArrival.selectedPolygon, 'XData', x, 'YData', y);
+    set(artoaGui.editTimeOfArrival.userSelection, 'XData', x, 'YData', y);
     [dx, dy, button] = ginput(1);
 end
 
@@ -54,10 +48,10 @@ else
     return;
 end
 % update the line
-set(artoaGui.editTimeOfArrival.selectedPolygon, 'XData', x, 'YData', y);
+set(artoaGui.editTimeOfArrival.userSelection, 'XData', x, 'YData', y);
 
 % store the selected points in the workspace for editing
-artoaWorkspace.editTimeOfArrival.selectedPoints = inpolygon( ...
+artoaWorkspace.editTimeOfArrival.userSelection = inpolygon( ...
     artoaWorkspace.toaData.toaDate, ...
     artoaWorkspace.toaData.toa, ...
     x, ...
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
index b4bc6aaaf0f922b2d2040e05fac0ea08f8f2fd7b..ce713b21eb57f31d4ee7d29f0de390ecb5f38dfe 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/plot.m
@@ -91,7 +91,7 @@ set(titleHandle, 'Color', 'blue');
 
 % set x and y label
 xlabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Message Date', 'FontSize', 10);
-ylabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Time of arrival', 'FontSize', 10);
+ylabel(artoaGui.figures.editTimeOfArrival.CurrentAxes, 'Time of arrival rel. to window start time', 'FontSize', 10);
 
 hold off;
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m b/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m
new file mode 100644
index 0000000000000000000000000000000000000000..37bd31621ac251149d114d860086438434eb770e
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/resetShiftToa.m
@@ -0,0 +1,22 @@
+function [] = resetShiftToa()
+%SHIFTTOA Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui artoaWorkspace artoaDataInput;
+
+%% Ask for reset
+if strcmp(questdlg('Reset shift?', 'Confirmation', 'Yes', 'Cancel', 'Cancel'), 'Cancel')
+    return;
+end
+
+
+artoaWorkspace.toaData.toa = artoaDataInput.toaData.toa;
+
+[artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival);
+
+artoa.controller.edit.updateAvailablePlots();
+
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m b/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m
similarity index 71%
rename from lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m
rename to lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m
index 25c3d5becffddc7ac77160d9ce5873b67319c34a..54c3c5e217fb6d9f3fcc2dfbe2d9e73152a8fa5d 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToaSelection.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/shiftToa.m
@@ -1,16 +1,9 @@
-function [] = shiftToaSelection()
+function [] = shiftToa()
 %SHIFTTOA Summary of this function goes here
 %   Detailed explanation goes here
 
 global artoaGui artoaWorkspace;
 
-%% Select polygon
-
-if ~artoa.controller.edit.dataPointsSelected(artoaWorkspace.editTimeOfArrival)
-    warndlg('You need to select data by using the "Pick" button first!', 'No data selected');
-    return;
-end
-
 %% Ask for shift value
 
 answer = inputdlg({'Enter shift value:'}, 'Shift TOAs', [1 35], {'0'});
diff --git a/lib/+artoa/+controller/+edit/clearSelection.m b/lib/+artoa/+controller/+edit/clearSelection.m
index 721e7ea322a6f0eeac46d2080e6575e7309a498c..4b8e802b376055f31bd965793de132fa2baa7d66 100644
--- a/lib/+artoa/+controller/+edit/clearSelection.m
+++ b/lib/+artoa/+controller/+edit/clearSelection.m
@@ -5,15 +5,15 @@ function [guiHandle, workspaceStruct] = clearSelection(pGuiHandle, pWorkspaceStr
 guiHandle = pGuiHandle;
 workspaceStruct = pWorkspaceStruct;
 
-%% Remove polygon from gui
-if isfield(guiHandle, 'selectedPolygon')
-    delete(guiHandle.selectedPolygon);
-    guiHandle = rmfield(guiHandle, 'selectedPolygon');
+%% Remove selection from gui
+if isfield(guiHandle, 'userSelection')
+    delete(guiHandle.userSelection);
+    guiHandle = rmfield(guiHandle, 'userSelection');
 end
 
-%% Remove the polygon field from workspace
-if (isfield(workspaceStruct, 'selectedPoints'))
-    workspaceStruct = rmfield(workspaceStruct, 'selectedPoints');
+%% Remove the selection field from workspace
+if (isfield(workspaceStruct, 'userSelection'))
+    workspaceStruct = rmfield(workspaceStruct, 'userSelection');
 end
 
 end
diff --git a/lib/+artoa/+controller/+edit/dataPointsSelected.m b/lib/+artoa/+controller/+edit/dataPointsSelected.m
index d126a9928f004bdefef5884900b9519eaa407a9c..b5205015e19c177338beb92f9580a4b0727b8141 100644
--- a/lib/+artoa/+controller/+edit/dataPointsSelected.m
+++ b/lib/+artoa/+controller/+edit/dataPointsSelected.m
@@ -6,7 +6,7 @@ function [dataIsSelected] = dataPointsSelected(pHandle)
 dataIsSelected = false;
 
 %% Check required fields
-if ~isfield(pHandle, 'selectedPoints') || isempty(pHandle.selectedPoints)
+if ~isfield(pHandle, 'userSelection') || isempty(pHandle.userSelection)
     return;
 end
 
diff --git a/lib/+artoa/+controller/+file/saveInterim.m b/lib/+artoa/+controller/+file/saveInterim.m
index bbedf13263224c89287d5bc05f4bc1ae2b433b34..432b95e52fd183daba86647717e30a0d8158c291 100644
--- a/lib/+artoa/+controller/+file/saveInterim.m
+++ b/lib/+artoa/+controller/+file/saveInterim.m
@@ -14,7 +14,7 @@ filter = artoa.data.getMember(artoaDataInput, {'ini', 'filemask', 'interim'}, '*
 filepath = fullfile(pathname, filename);
 
 if isfile(filepath)
-    save(filename, 'artoaWorkspace', 'artoaDataInput', 'artoaDataOutput');
+    save(filepath, 'artoaWorkspace', 'artoaDataInput', 'artoaDataOutput');
 else
     warning([mfilename ': Save interim file failed because the selected file is not a file!']);
 end
diff --git a/lib/+artoa/+controller/copyRfbToWorkspace.m b/lib/+artoa/+controller/copyRfbToWorkspace.m
index a1b94025a80805c89ef785196b2554867d77d424..c04e6f2fab7d2e5d84be91217c01358bdf89ff55 100644
--- a/lib/+artoa/+controller/copyRfbToWorkspace.m
+++ b/lib/+artoa/+controller/copyRfbToWorkspace.m
@@ -55,6 +55,9 @@ artoaWorkspace.toaData.soundSource = cell( ...
     1 ...
 );
 
+% Copy the original toaData object to the input, so that it easily can be
+% restored later on
+artoaDataInput.toaData = artoaWorkspace.toaData;
 
 %% TEMPERATURE
 artoaWorkspace.temperature = artoaDataInput.rfb.DATA(:, artoaDataInput.rfb.VARIABLE_LIST.temperature);
diff --git a/lib/+artoa/+gui/+edit/pressure.m b/lib/+artoa/+gui/+edit/pressure.m
index bf5e4c3ca613733e56e4d2da8a34d4663a693070..c949d8e10307ebbb321ec67b952c714040bda4c9 100644
--- a/lib/+artoa/+gui/+edit/pressure.m
+++ b/lib/+artoa/+gui/+edit/pressure.m
@@ -34,85 +34,149 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]);
 
 left = .85;
 width = .14;
-buttonHeight = .05;
 
-artoaGui.editPressure.frameControls = uipanel( ...
-    'Title', 'Data', ...
+%% PICK
+pickButtonHeight = .25;
+
+artoaGui.editPressure.frameControlsPick = uipanel( ...
+    'Title', 'Pick', ...
     'Units', 'normalized', ...
     'BackgroundColor', 'white', ...
-    'Position', [left .11 width .815] ...
+    'Position', [left .72 width .2] ...
 );
 
-artoaGui.editPressure.buttonPick = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Pick', ...
+artoaGui.editPressure.buttonPickPolygon = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsPick, ...
+    'String', 'Polygon', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .9 .69 buttonHeight], ...
+    'Position', [.156 .65 .69 pickButtonHeight], ...
     'CallBack', 'artoa.controller.edit.pressure.pickPolygon();' ...
 );
 
+artoaGui.editPressure.buttonPickPoint = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsPick, ...
+    'String', 'Point', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .35 .69 pickButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.pickPoint();' ...
+);
+
+artoaGui.editPressure.buttonDropSelection = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsPick, ...
+    'String', 'Drop', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .05 .69 pickButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.dropSelection();' ...
+);
+
+%% APPLY
+applyButtonHeight = .25;
+
+artoaGui.editPressure.frameControlsApply = uipanel( ...
+    'Title', 'Apply', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .5 width .2] ...
+);
+
 artoaGui.editPressure.buttonApply = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Apply', ...
+    'Parent', artoaGui.editPressure.frameControlsApply, ...
+    'String', 'Selected', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .85 .69 buttonHeight], ...
+    'Position', [.156 .65 .69 applyButtonHeight], ...
     'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(1);' ...
 );
 
-artoaGui.editPressure.buttonReset = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Reset', ...
+artoaGui.editPressure.buttonApplyAllVisible = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsApply, ...
+    'String', 'All visible', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .8 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(0);' ...
+    'Position', [.156 .35 .69 applyButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllVisible(1);' ...
 );
 
-artoaGui.editPressure.buttonDelete = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Delete', ...
+artoaGui.editPressure.buttonApplyAll = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsApply, ...
+    'String', 'All', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .7 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(2);' ...
+    'Position', [.156 .05 .69 applyButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPoints(1);' ...
 );
 
-artoaGui.editPressure.buttonApplyAll = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Apply all', ...
+
+%% RESET
+resetButtonHeight = .25;
+
+artoaGui.editPressure.frameControlsReset = uipanel( ...
+    'Title', 'Reset', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .28 width .2] ...
+);
+
+artoaGui.editPressure.buttonReset = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsReset, ...
+    'String', 'Selected', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .5 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPointsExceptDeleted(1);' ...
+    'Position', [.156 .65 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(0);' ...
 );
 
-artoaGui.editPressure.buttonResetAll = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Reset all', ...
+artoaGui.editPressure.buttonResetAllVisible = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsReset, ...
+    'String', 'All visible', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .45 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPointsExceptDeleted(0);' ...
+    'Position', [.156 .35 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllVisible(0);' ...
 );
 
-artoaGui.editPressure.buttonReplot = uicontrol( ...
-    'Parent', artoaGui.editPressure.frameControls, ...
-    'String', 'Replot', ...
+artoaGui.editPressure.buttonResetAll = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsReset, ...
+    'String', 'All', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .05 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.pressure.plot();' ...
+    'Position', [.156 .05 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToAllPoints(0);' ...
 );
 
+%% DELETE
+deleteButtonHeight = .4;
+
+artoaGui.editPressure.frameControlsDelete = uipanel( ...
+    'Title', 'Delete', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .11 width .15] ...
+);
+
+artoaGui.editPressure.buttonDelete = uicontrol( ...
+    'Parent', artoaGui.editPressure.frameControlsDelete, ...
+    'String', 'Selected', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .3 .69 deleteButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.pressure.applyStatusToSelectedPoints(2);' ...
+);
 
+%% Enable zoom
+zoom on;
 end
 
diff --git a/lib/+artoa/+gui/+edit/temperature.m b/lib/+artoa/+gui/+edit/temperature.m
index 10e685ad29cd7b694c00ff195cc012547d5ed06a..94e559dc9559a3d9b3c30c94b9b55681b185ace9 100644
--- a/lib/+artoa/+gui/+edit/temperature.m
+++ b/lib/+artoa/+gui/+edit/temperature.m
@@ -34,84 +34,149 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]);
 
 left = .85;
 width = .14;
-buttonHeight = .05;
 
-artoaGui.editTemperature.frameControls = uipanel( ...
-    'Title', 'Data', ...
+%% PICK
+pickButtonHeight = .25;
+
+artoaGui.editTemperature.frameControlsPick = uipanel( ...
+    'Title', 'Pick', ...
     'Units', 'normalized', ...
     'BackgroundColor', 'white', ...
-    'Position', [left .11 width .815] ...
+    'Position', [left .72 width .2] ...
 );
 
-artoaGui.editTemperature.buttonPick = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Pick', ...
+artoaGui.editTemperature.buttonPickPolygon = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsPick, ...
+    'String', 'Polygon', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .9 .69 buttonHeight], ...
+    'Position', [.156 .65 .69 pickButtonHeight], ...
     'CallBack', 'artoa.controller.edit.temperature.pickPolygon();' ...
 );
 
+artoaGui.editTemperature.buttonPickPoint = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsPick, ...
+    'String', 'Point', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .35 .69 pickButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.pickPoint();' ...
+);
+
+artoaGui.editTemperature.buttonDropSelection = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsPick, ...
+    'String', 'Drop', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .05 .69 pickButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.dropSelection();' ...
+);
+
+%% APPLY
+applyButtonHeight = .25;
+
+artoaGui.editTemperature.frameControlsApply = uipanel( ...
+    'Title', 'Apply', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .5 width .2] ...
+);
+
 artoaGui.editTemperature.buttonApply = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Apply', ...
+    'Parent', artoaGui.editTemperature.frameControlsApply, ...
+    'String', 'Selected', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .85 .69 buttonHeight], ...
+    'Position', [.156 .65 .69 applyButtonHeight], ...
     'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(1);' ...
 );
 
-artoaGui.editTemperature.buttonReset = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Reset', ...
+artoaGui.editTemperature.buttonApplyAllVisible = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsApply, ...
+    'String', 'All visible', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .8 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(0);' ...
+    'Position', [.156 .35 .69 applyButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllVisible(1);' ...
 );
 
-artoaGui.editTemperature.buttonDelete = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Delete', ...
+artoaGui.editTemperature.buttonApplyAll = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsApply, ...
+    'String', 'All', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .7 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(2);' ...
+    'Position', [.156 .05 .69 applyButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPoints(1);' ...
 );
 
-artoaGui.editTemperature.buttonApplyAll = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Apply all', ...
+%% RESET
+resetButtonHeight = .25;
+
+artoaGui.editTemperature.frameControlsReset = uipanel( ...
+    'Title', 'Reset', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .28 width .2] ...
+);
+
+artoaGui.editTemperature.buttonReset = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsReset, ...
+    'String', 'Selected', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .5 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPointsExceptDeleted(1);' ...
+    'Position', [.156 .65 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(0);' ...
+);
+
+artoaGui.editTemperature.buttonResetAllVisible = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsReset, ...
+    'String', 'All visible', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .35 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllVisible(0);' ...
 );
 
 artoaGui.editTemperature.buttonResetAll = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Reset all', ...
+    'Parent', artoaGui.editTemperature.frameControlsReset, ...
+    'String', 'All', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .45 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPointsExceptDeleted(0);' ...
+    'Position', [.156 .05 .69 resetButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToAllPoints(0);' ...
+);
+
+%% DELETE
+deleteButtonHeight = .4;
+
+artoaGui.editTemperature.frameControlsDelete = uipanel( ...
+    'Title', 'Delete', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .11 width .15] ...
 );
 
-artoaGui.editTemperature.buttonReplot = uicontrol( ...
-    'Parent', artoaGui.editTemperature.frameControls, ...
-    'String', 'Replot', ...
+artoaGui.editTemperature.buttonDelete = uicontrol( ...
+    'Parent', artoaGui.editTemperature.frameControlsDelete, ...
+    'String', 'Selected', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .05 .69 buttonHeight], ...
-    'CallBack', 'artoa.controller.edit.temperature.plot();' ...
+    'Position', [.156 .3 .69 deleteButtonHeight], ...
+    'CallBack', 'artoa.controller.edit.temperature.applyStatusToSelectedPoints(2);' ...
 );
 
+%% Enable zoom
+zoom on;
+
 end
 
diff --git a/lib/+artoa/+gui/+edit/timeOfArrival.m b/lib/+artoa/+gui/+edit/timeOfArrival.m
index 893c5cf0962fa2391ae4458c8307ee55244a1373..9b98175cf6a5fc2c27709269b539c9ef60351902 100644
--- a/lib/+artoa/+gui/+edit/timeOfArrival.m
+++ b/lib/+artoa/+gui/+edit/timeOfArrival.m
@@ -34,45 +34,71 @@ set(gca, 'Position', [0.13 0.11 0.706 0.815]);
 
 left = .85;
 width = .14;
-buttonHeight = .05;
-buttonMarginLeftRight = .005;
 
-%% Data frame
-artoaGui.editTimeOfArrival.frameControls = uipanel( ...
-    'Title', 'Data', ...
+%% Selection frame
+artoaGui.editTimeOfArrival.frameControlsSelect = uipanel( ...
+    'Title', 'Select', ...
     'Units', 'normalized', ...
     'BackgroundColor', 'white', ...
-    'Position', [left .6 width .3] ...
+    'Position', [left .6 width .2] ...
 );
 
-artoaGui.editTimeOfArrival.buttonPick = uicontrol( ...
-    'Parent', artoaGui.editTimeOfArrival.frameControls, ...
-    'String', 'Pick', ...
+artoaGui.editTimeOfArrival.buttonPickPolygon = uicontrol( ...
+    'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ...
+    'String', 'Polygon', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .75 .69 .2], ...
+    'Position', [.156 .7 .69 .2], ...
     'CallBack', 'artoa.controller.edit.timeOfArrival.pickPolygon();' ...
 );
 
-artoaGui.editTimeOfArrival.buttonShift = uicontrol( ...
-    'Parent', artoaGui.editTimeOfArrival.frameControls, ...
-    'String', 'Shift', ...
+artoaGui.editTimeOfArrival.buttonPickPoint = uicontrol( ...
+    'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ...
+    'String', 'Point', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .5 .69 .2], ...
-    'CallBack', 'artoa.controller.edit.timeOfArrival.shiftToaSelection();' ...
+    'Position', [.156 .4 .69 .2], ...
+    'CallBack', 'artoa.controller.edit.timeOfArrival.pickPoint();' ...
 );
 
-artoaGui.editTimeOfArrival.buttonReplot = uicontrol( ...
-    'Parent', artoaGui.editTimeOfArrival.frameControls, ...
-    'String', 'Replot', ...
+artoaGui.editTimeOfArrival.buttonDropSelection = uicontrol( ...
+    'Parent', artoaGui.editTimeOfArrival.frameControlsSelect, ...
+    'String', 'Drop', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
-    'Position', [.156 .05 .69 .2], ...
-    'CallBack', 'artoa.controller.edit.timeOfArrival.plot();' ...
+    'Position', [.156 .1 .69 .2], ...
+    'CallBack', 'artoa.controller.edit.timeOfArrival.dropSelection();' ...
+);
+
+%% Shift frame
+artoaGui.editTimeOfArrival.frameControlsShift = uipanel( ...
+    'Title', 'Shift', ...
+    'Units', 'normalized', ...
+    'BackgroundColor', 'white', ...
+    'Position', [left .35 width .2] ...
+);
+
+artoaGui.editTimeOfArrival.buttonShiftApply = uicontrol( ...
+    'Parent', artoaGui.editTimeOfArrival.frameControlsShift, ...
+    'String', 'Apply', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .6 .69 .3], ...
+    'CallBack', 'artoa.controller.edit.timeOfArrival.shiftToa();' ...
+);
+
+artoaGui.editTimeOfArrival.buttonShiftResetSelection = uicontrol( ...
+    'Parent', artoaGui.editTimeOfArrival.frameControlsShift, ...
+    'String', 'Reset', ...
+    'Style', 'PushButton', ...
+    'FontSize', 8, ...
+    'Units', 'normalized', ...
+    'Position', [.156 .2 .69 .3], ...
+    'CallBack', 'artoa.controller.edit.timeOfArrival.resetShiftToa();' ...
 );
 
 %% Sound source frame
@@ -104,6 +130,8 @@ artoaGui.editTimeOfArrival.buttonDelete = uicontrol( ...
     'CallBack', 'artoa.controller.edit.timeOfArrival.removeSoundSourceFromSelectedPoints();' ...
 );
 
+%% Enable zoom
+zoom on;
 
 end