diff --git a/Application/src/commons/common/gui/types/Drawable.cpp b/Application/src/commons/common/gui/types/Drawable.cpp
index 3c2993085fd5271b0e40e2e78e8b5f98803d030e..51f9f24b8f60b60cad6485bec65434fef76079c9 100644
--- a/Application/src/commons/common/gui/types/Drawable.cpp
+++ b/Application/src/commons/common/gui/types/Drawable.cpp
@@ -181,6 +181,7 @@ namespace gui {
         }
 
         clear_cache();
+        _event_handlers.clear();
         
         for(auto && [name, pair] : _custom_data)
             std::get<1>(pair)(std::get<0>(pair));
diff --git a/Application/src/grabber/pvinfo.cpp b/Application/src/grabber/pvinfo.cpp
index d3badfaf1b2896003168a5dd9c941d9655be97cf..27673ab3f6a95990bf94604ccb6bd4a7c1e6d176 100644
--- a/Application/src/grabber/pvinfo.cpp
+++ b/Application/src/grabber/pvinfo.cpp
@@ -832,4 +832,6 @@ int main(int argc, char**argv) {
         pv::File video(input);
         video.start_reading();
     }
+    
+    return 0;
 }
diff --git a/Application/src/tracker/gui/Timeline.cpp b/Application/src/tracker/gui/Timeline.cpp
index 2e57cd22cc8c2143b2ed7bb41e0451e3ed352054..5c5921f6535c8778249a0efe596ae327cfa45e44 100644
--- a/Application/src/tracker/gui/Timeline.cpp
+++ b/Application/src/tracker/gui/Timeline.cpp
@@ -378,7 +378,7 @@ void Timeline::update_consecs(float max_w, const Range<long_t>& consec, const st
                     float distance2frame = FLT_MAX;
                     long_t framemOver = -1;
                     
-                    if(_bar->hovered()) {
+                    if(_bar && _bar->hovered()) {
                         //Vec2 pp(max_w / float(_frame_info.video_length) * idx.first, 50);
                         //float dis = abs(e.hover.x - pp.x);
                         static Timing timing("Scrubbing", 0.01);
diff --git a/Application/src/tracker/misc/default_config.cpp b/Application/src/tracker/misc/default_config.cpp
index d7f70876328016fc1f8e5aeba5cbbc579298e8b5..cc3be4e542e1cbef4f218c080d64c1b4c19e8887 100644
--- a/Application/src/tracker/misc/default_config.cpp
+++ b/Application/src/tracker/misc/default_config.cpp
@@ -136,7 +136,8 @@ file::Path conda_environment_path() {
 #endif
 
     if(home == "CONDA_PREFIX" || home == "" || home == compiled_path) {
-	    Debug("Reset conda prefix '%S' / '%S'", &home, &compiled_path);
+        if(!SETTING(quiet))
+            Debug("Reset conda prefix '%S' / '%S'", &home, &compiled_path);
         auto conda_prefix = getenv("CONDA_PREFIX");
         
         if(conda_prefix) {
@@ -161,7 +162,9 @@ file::Path conda_environment_path() {
     } else
         home = compiled_path;
     
-    return home;;
+    if(!SETTING(quiet))
+        Debug("Set conda environment path = '%S'", &home);
+    return home;
 }
     
     const std::map<std::string, std::string>& deprecations() {
diff --git a/docs/batch.rst b/docs/batch.rst
new file mode 100644
index 0000000000000000000000000000000000000000..30799fd5098ed9f0fc83fbf287263d9e9fc27fce
--- /dev/null
+++ b/docs/batch.rst
@@ -0,0 +1,16 @@
+.. include:: names.rst
+
+.. toctree::
+   :maxdepth: 2
+
+Batch processing support
+========================
+
+|trex| and |grabs| both offer full batch processing support. All parameters that can be setup via the settings box (and even some that are read-only when the program is already started), can be appended to the command-line -- as mentioned above. For batch processing, special parameters are available::
+
+	auto_quit			  # automatically saves all requested data to the output folder and quits the app
+	auto_train			 # automatically attempts to train the visual identification if successfully tracked
+	auto_apply			 # automatically attempts to load weights from a previous training and auto correct the video
+	auto_no_results		# do not save a .results file
+	auto_no_tracking_data  # do not save the data/file_fishX.npz files
+	auto_no_memory_stats   # (enabled by default) do not save memory statistics
\ No newline at end of file
diff --git a/docs/contents.rst b/docs/contents.rst
index bd2289f910eefd871d2de1085b25c2a61e76f68a..4f123a6f57cb5586d1e80daf696441155f28f0d1 100644
--- a/docs/contents.rst
+++ b/docs/contents.rst
@@ -40,6 +40,8 @@ Whereas other use-cases are:
    
    install
    run
+   gui
+   batch
    examples
    formats
    parameters_trex
diff --git a/docs/gui.rst b/docs/gui.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b9b55d55f4a4c8eb8c84fe6493b79b944d21e81d
--- /dev/null
+++ b/docs/gui.rst
@@ -0,0 +1,39 @@
+.. include:: names.rst
+
+.. toctree::
+   :maxdepth: 2
+
+Using the graphical user interface
+==================================
+
+Generally, all the parameters for one specific task will be prefixed by ``task_``, so if you are searching for something like heatmap-related parameters, then simply search for ``heatmap`` in the interactive settings box on the bottom left (4) and you will see all options related to that topic. Each parameter shows inline documentation when hovering its name.
+
+.. image:: ../images/trex_screenshot_web.png
+	:width: 1024
+	:alt: Overview of the TRex graphical user interface
+
+Some parameter values cannot be changed (such as the build version of the software), but most parameters can be changed at runtime. When changing tracking parameters (prefixed by ``track_``), or posture parameters (prefixed either by ``outline_``, ``midline_``, or ``posture_``), then the video has to be reanalysed to see an effect. This is done by simply clicking on the "reanalyse" button on the top right (1). This button triggers |trex| to delete everything including the current and all following frames, and analyse them again with the new parameters. Some functionality will trigger such behavior automatically, for example when manually correcting identities (see below) where the video will be reanalysed automatically -- starting from the first assignment that has been changed. If you want to reanalyse the entire video, go to the first frame and click "reanalyse".
+
+Different visualisations can be enabled or disabled using the display menu (4) on the bottom left. Expand the "display" list by clicking on it, and you will see various options -- including the heatmaps feature, posture (for which you can also use the ``B`` key), outlines/midlines (a full list can be found below):
+
+.. image:: ../images/trex_display_options.png
+	:width: 200
+	:alt: All current display options
+	:align: center
+
+- export options
+	Toggles a movable window showing all possible output fields (for when you press ``S``/click on "menu" -> "export tracking data"). (This currently a bit crude and will be updated in a future version.)
+- zoom on selected
+	Whether to zoom in on the selected individual or not. Can be combined with the next option.
+- auto zoom
+	Always try to keep all individuals in-view, but zoom in if possible.
+- visual field ts
+	The timeseries of the visual field of the first selected individual. This includes left/right eye and all data-streams associated with it (distance/id, body-part).
+- visual field
+	Display visual fields of all selected individuals in the GUI.
+- recognition
+	Toggles display of recognition-related info in the tracking view (per object accuracy percentages).
+- confusion
+	A matrix in the center of the screen, only available after clicking "menu" -> "auto correct" -> "No".
+- dataset
+	
\ No newline at end of file
diff --git a/docs/parameters_trex.rst b/docs/parameters_trex.rst
index 7eca0141332f5ff6d6f719329b945d776fe4f277..a98d9a911f7ee83d21005af1ee736bd5be1e2584 100644
--- a/docs/parameters_trex.rst
+++ b/docs/parameters_trex.rst
@@ -1797,7 +1797,7 @@ TRex parameters
 
 .. function:: track_max_speed(float)
 
-	**default value:** 50
+	**default value:** 10
 
 
 	The maximum speed an individual can have (=> the maximum distance an individual can travel within one second) in cm/s. Uses `meta_real_width`.
diff --git a/docs/run.rst b/docs/run.rst
index 20e078e011717ac6639fadaca2f83248905a53a5..fa35bc1d40c301464aabdb5dcf72a8ccbd89466e 100644
--- a/docs/run.rst
+++ b/docs/run.rst
@@ -93,58 +93,60 @@ If no settings (apart from ``-i <pv-videopath>``) are provided, it displays some
 
 It can be useful for retrieving values of tracking parameters from external scripts, like in python (also things like ``video_size``)::
 
-	def get_parameter(video, parameter, root = "", prefix = "", info_path = "/path/to/pvinfo"):
-		"""Uses the pvinfo utility to retrieve information about tracked videos. 
-		This information is usually saved in the .pv files / .settings / .results files. 
-		The pvinfo utility will emulate a call to TRex + loading existing .results files 
-		and settings files in the same order.
-
-		Parameters
-		----------
-		video : str
-			Name of the video, or absolute path to the video
-		parameter : str
-			Name of the parameter to retrieve (see https://trex.run/docs/parameters_trex.html)
-		root : str, optional
-			Either empty (default), or path to the folder the video is in
-		prefix : str, optional
-			Either empty (default), or name of the output_prefix to be used
-		info_path : str
-			Absolute path to the pvinfo utility executable
-
-		Returns
-		-------
-		object
-			The return type is determined by the type of the parameter requested
-		"""
-	
-		from subprocess import Popen, PIPE
-		import ast
-	
-		if type(info_path) == type(None):
-			process = Popen(["which", "tgrabs"], stdout=PIPE)
-			(output, err) = process.communicate()
-			exit_code = process.wait()
-			if exit_code != 0:
-				raise Exception("Cannot retrieve info path.")
-			info_path = output.decode("utf-8").split("=")[-1][1:-1]
-			info_path = info_path.split("/tgrabs")[0] + "/info"
-			print(info_path)
-	
-		parameter_list = [info_path]
-		if root != "":
-			parameter_list += ["-d",root]
-		if prefix != "":
-			parameter_list += ["-p", prefix]
-	
-		parameter_list += ["-i", video,"-quiet","-print_parameters","["+parameter+"]"]
-	
-		process = Popen(parameter_list, stdout=PIPE)
-		(output, err) = process.communicate()
-		exit_code = process.wait()
-		if exit_code == 0:
-			return ast.literal_eval(output.decode("utf-8").split("=")[-1][1:-1])
-		raise Exception("Cannot retrieve "+parameter+" from "+video+": "+output.decode("utf-8")+" ("+str(exit_code)+") "+" ".join(parameter_list))
+	def get_parameter(video, parameter, root = "", prefix = "", conda_env = "", info_path = "pvinfo"):
+	    """Uses the pvinfo utility to retrieve information about tracked videos.
+	    This information is usually saved in the .pv files / .settings / .results files.
+	    The pvinfo utility will emulate a call to TRex + loading existing .results files
+	    and settings files in the same order.
+    
+	    Parameters
+	    ----------
+	    video : str
+	            Name of the video, or absolute path to the video
+	    parameter : str
+	            Name of the parameter to retrieve (see https://trex.run/docs/parameters_trex.html)
+	    root : str, optional
+	            Either empty (default), or path to the folder the video is in
+	    prefix : str, optional
+	            Either empty (default), or name of the output_prefix to be used
+	    conda_env : path, optional
+	            Either empty (default), or an absolute path to the conda environment in which pvinfo is installed 
+	            (e.g. C:\\Users\\Tristan\\Anaconda3\\envs\\tracking)
+	    info_path : str
+	            Absolute path to the pvinfo utility executable
+
+	    Returns
+	    -------
+	    object
+	            The return type is determined by the type of the parameter requested
+	    """
+
+	    from subprocess import Popen, PIPE
+	    import os
+	    import ast
+    
+	    if len(conda_env) > 0:
+	        if info_path == "pvinfo":
+	            info_path = conda_env+os.sep+"bin"+os.sep+"pvinfo"
+	    parameter_list = [info_path]
+	    if root != "":
+	            parameter_list += ["-d",root]
+	    if prefix != "":
+	            parameter_list += ["-p", prefix]
+
+	    parameter_list += ["-i", video,"-quiet", "-print_parameters","["+parameter+"]"]
+
+	    my_env = os.environ.copy()
+	    if len(conda_env) > 0:
+	        my_env["CONDA_PREFIX"] = conda_env
+	        my_env["PATH"] = conda_env+";"+conda_env+os.sep+"bin;"+my_env["PATH"]
+
+	    process = Popen(parameter_list, stdout=PIPE, env=my_env)
+	    (output, err) = process.communicate()
+	    exit_code = process.wait()
+	    if exit_code == 0:
+	        return ast.literal_eval(output.decode("utf-8").split("=")[-1][1:-1])
+	    raise Exception("Cannot retrieve "+parameter+" from "+video+": "+output.decode("utf-8")+" ("+str(exit_code)+") "+" ".join(parameter_list))
 
 But it has many other uses, too! For example, it can be used to save heatmap information that can be visualized in |trex| (but can not currently be saved directly from |trex| -> will be soon)::
 
@@ -157,16 +159,3 @@ Or to display information about objects inside the saved frames::
 	[15:24:07] Images average at 512.654519 px / blob and the range is [2-2154] with a median of 616.
 	[15:24:07] There are 10 blobs in each frame (median).
 
-
-
-Batch processing support
-========================
-
-|trex| and |grabs| both offer full batch processing support. All parameters that can be setup via the settings box (and even some that are read-only when the program is already started), can be appended to the command-line -- as mentioned above. For batch processing, special parameters are available::
-
-	auto_quit			  # automatically saves all requested data to the output folder and quits the app
-	auto_train			 # automatically attempts to train the visual identification if successfully tracked
-	auto_apply			 # automatically attempts to load weights from a previous training and auto correct the video
-	auto_no_results		# do not save a .results file
-	auto_no_tracking_data  # do not save the data/file_fishX.npz files
-	auto_no_memory_stats   # (enabled by default) do not save memory statistics
diff --git a/images/trex_display_options.png b/images/trex_display_options.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8a9ff1eae5967c3dfc78650a0388532086abb00
Binary files /dev/null and b/images/trex_display_options.png differ
diff --git a/images/trex_screenshot_web.png b/images/trex_screenshot_web.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7b051f389100dc2b65358d66b26cfdefa32c64f
Binary files /dev/null and b/images/trex_screenshot_web.png differ