diff --git a/configure.ac b/configure.ac
index fbf097976a7e67b8b35e20f1d66d231738fd80f6..50619f589b9377001538f3c62870c72249b3f102 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,6 +60,10 @@ if test "x$ax_enable_debug" != "xno"; then
    AC_DEFINE([SWIFT_DEVELOP_MODE],1,[Enable developer code options])
 fi
 
+# C++ in GCC 6 and above has an issue with undefined the min() and max()
+# macros. This hack works around that.
+AC_DEFINE([_GLIBCXX_INCLUDE_NEXT_C_HEADERS],1,[Hack for min() and max() using g++ 6+])
+
 # Enable POSIX and platform extension preprocessor macros.
 AC_USE_SYSTEM_EXTENSIONS
 
@@ -361,6 +365,18 @@ fi
 # Check whether we have any of the ARM v8.1 tick timers
 AX_ASM_ARM_PMCCNTR
 AX_ASM_ARM_CNTVCT
+# See if we want memuse reporting.
+AC_ARG_ENABLE([memuse-reports],
+   [AS_HELP_STRING([--enable-memuse-reports],
+     [Output reports about significant memory allocations@<:@yes/no@:>@]
+   )],
+   [enable_memuse_reports="$enableval"],
+   [enable_memuse_reports="no"]
+)
+if test "$enable_memuse_reports" = "yes"; then
+   AC_DEFINE([SWIFT_MEMUSE_REPORTS],1,[Enable memory usage reports])
+fi
+
 
 # Define HAVE_POSIX_MEMALIGN if it works.
 AX_FUNC_POSIX_MEMALIGN
diff --git a/doc/RTD/source/AnalysisTools/index.rst b/doc/RTD/source/AnalysisTools/index.rst
index f68fa77536e77df48cd1acc44e98a3408e48b037..9fa94e0baff5732092a704e20ecc12de57d8301f 100644
--- a/doc/RTD/source/AnalysisTools/index.rst
+++ b/doc/RTD/source/AnalysisTools/index.rst
@@ -1,5 +1,6 @@
 .. AnalysisTools
    Loic Hausammann 20th March 2019
+   Peter W. Draper 28th March 2019
 
 .. _analysistools:
 
@@ -33,3 +34,48 @@ or install ``npm`` and then run the following commands
    http-server .
 
 Now you can open the web page ``http://localhost:8080/cell_hierarchy.html``.
+
+Memory usage reports
+--------------------
+
+When SWIFT is configured using the ``--enable-memuse-reports`` flag it will
+log any calls to allocate or free memory that make use of the
+``swift_memalign()``, ``swift_malloc()``, ``swift_calloc()`` and
+``swift_free()`` functions and will generate a report at the end of each
+step. It will also attempt to dump the current memory use when SWIFT is
+aborted by calling the ``error()`` function. Failed memory allocations will be
+reported in these logs.
+
+These functions should be used by developers when allocating significant
+amounts of memory -- so don't use these for high frequency small allocations.
+Each call to the ``swift_`` functions differs to the standard calls by the
+inclusion of a "label", this should match between allocations and frees and
+ideally should be a short label that describes the use of the memory, i.e.
+"parts", "gparts", "hydro.sort" etc.
+
+Calls to external libraries that make allocations you'd also like to log
+can be made by calling the ``memuse_log_allocation()`` function directly.
+
+The output files are called ``memuse_report-step<n>.dat`` or
+``memuse_report-rank<m>-step<n>.dat`` if running using MPI. These have a line
+for each allocation or free that records the time, memory address, step,
+whether an allocation or free, the label and when an allocation, the amount of
+memory. The comments in this file also record the actual memory use of the
+process (including threads) as reported by the operating system at the end of
+the step.
+
+To post process these files into a memory used timeline and get a report of
+the peak memory use, as well as the memory still in use at the end of the step
+there is an basic analysis script ``analyse_memuse_logs.py`` and two wrappers
+that process a directory of logs, these are ``./process_memuse_logs.sh`` and
+``./process_memuse_logs_MPI.sh`` for non-MPI and MPI runs respectively.
+
+Note that the process scripts process each step individually and also process
+all the logs as a single sequence. When interpreting these some care should be
+taken as they are not all the memory allocated, just important allocations in
+SWIFT and when looking at a single step the context of any previous steps is
+not used, so you only see allocations made in that step and the effect of any
+matching frees (so allocations made in previous steps that are freed in this
+step will not be understood and will be ignored, you need the global analysis
+to understand that).
+
diff --git a/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_EOS.svg b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_EOS.svg
new file mode 100644
index 0000000000000000000000000000000000000000..398c2bd88331cff072cd82590d4691f0c48bc148
--- /dev/null
+++ b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_EOS.svg
@@ -0,0 +1,2353 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="226.8pt" version="1.1" viewBox="0 0 226.8 226.8" width="226.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <style type="text/css">
+*{stroke-linecap:butt;stroke-linejoin:round;}
+  </style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 226.8 
+L 226.8 226.8 
+L 226.8 0 
+L 0 0 
+z
+" style="fill:#ffffff;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 34.02 197.316 
+L 224.532 197.316 
+L 224.532 2.268 
+L 34.02 2.268 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="PathCollection_1">
+    <defs>
+     <path d="M 0 1 
+C 0.265203 1 0.51958 0.894634 0.707107 0.707107 
+C 0.894634 0.51958 1 0.265203 1 0 
+C 1 -0.265203 0.894634 -0.51958 0.707107 -0.707107 
+C 0.51958 -0.894634 0.265203 -1 0 -1 
+C -0.265203 -1 -0.51958 -0.894634 -0.707107 -0.707107 
+C -0.894634 -0.51958 -1 -0.265203 -1 0 
+C -1 0.265203 -0.894634 0.51958 -0.707107 0.707107 
+C -0.51958 0.894634 -0.265203 1 0 1 
+z
+" id="m85090810e3" style="stroke:#000000;"/>
+    </defs>
+    <g clip-path="url(#p70b35b528f)">
+     <use style="stroke:#000000;" x="146.991516" xlink:href="#m85090810e3" y="70.434351"/>
+    </g>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 
+L 0 3.5 
+" id="m00a3d680a8" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="60.395152" xlink:href="#m00a3d680a8" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- $\mathdefault{10^{-6}}$ -->
+      <defs>
+       <path d="M 8.90625 57.09375 
+L 8.90625 60.203125 
+Q 20.90625 60.203125 27.09375 66.59375 
+Q 28.796875 66.59375 29.09375 66.1875 
+Q 29.40625 65.796875 29.40625 64 
+L 29.40625 7.90625 
+Q 29.40625 4.90625 30.84375 4 
+Q 32.296875 3.09375 38.703125 3.09375 
+L 41.90625 3.09375 
+L 41.90625 0 
+Q 38.40625 0.296875 25.703125 0.296875 
+Q 13 0.296875 9.5 0 
+L 9.5 3.09375 
+L 12.703125 3.09375 
+Q 19 3.09375 20.5 4 
+Q 22 4.90625 22 7.90625 
+L 22 59.703125 
+Q 16.796875 57.09375 8.90625 57.09375 
+z
+" id="CMUSerif-Roman-49"/>
+       <path d="M 3.90625 32 
+Q 3.90625 46.703125 7.59375 54.703125 
+Q 12.796875 66.59375 25 66.59375 
+Q 27.59375 66.59375 30.296875 65.890625 
+Q 33 65.203125 36.453125 62.5 
+Q 39.90625 59.796875 42 55.40625 
+Q 46 46.90625 46 32 
+Q 46 17.40625 42.296875 9.40625 
+Q 36.90625 -2.203125 24.90625 -2.203125 
+Q 20.40625 -2.203125 15.84375 0.09375 
+Q 11.296875 2.40625 8.40625 7.90625 
+Q 3.90625 16.203125 3.90625 32 
+z
+M 12.203125 33.203125 
+Q 12.203125 18.09375 13.296875 12.09375 
+Q 14.5 5.59375 17.84375 2.796875 
+Q 21.203125 0 24.90625 0 
+Q 28.90625 0 32.25 3 
+Q 35.59375 6 36.59375 12.5 
+Q 37.703125 18.90625 37.703125 33.203125 
+Q 37.703125 47.09375 36.703125 52.703125 
+Q 35.40625 59.203125 31.90625 61.796875 
+Q 28.40625 64.40625 24.90625 64.40625 
+Q 23.59375 64.40625 22.1875 64 
+Q 20.796875 63.59375 18.796875 62.5 
+Q 16.796875 61.40625 15.25 58.59375 
+Q 13.703125 55.796875 13 51.59375 
+Q 12.203125 46.203125 12.203125 33.203125 
+z
+" id="CMUSerif-Roman-48"/>
+       <path d="M 1 18.59375 
+L 1 24.5 
+L 27.59375 24.5 
+L 27.59375 18.59375 
+z
+" id="CMUSerif-Roman-45"/>
+       <path d="M 4.203125 31.59375 
+Q 4.203125 47.296875 12.203125 56.9375 
+Q 20.203125 66.59375 30.5 66.59375 
+Q 36.5 66.59375 39.84375 63.546875 
+Q 43.203125 60.5 43.203125 55.796875 
+Q 43.203125 53.203125 41.703125 52.09375 
+Q 40.203125 51 38.59375 51 
+Q 36.796875 51 35.390625 52.203125 
+Q 34 53.40625 34 55.59375 
+Q 34 60.09375 39.5 60.09375 
+Q 36.90625 64.09375 30.703125 64.09375 
+Q 28.796875 64.09375 26.84375 63.546875 
+Q 24.90625 63 22.34375 61.140625 
+Q 19.796875 59.296875 17.84375 56.34375 
+Q 15.90625 53.40625 14.546875 47.90625 
+Q 13.203125 42.40625 13.203125 35.203125 
+L 13.203125 32.796875 
+Q 17.296875 42.703125 25.6875 42.703125 
+Q 34.09375 42.703125 39.890625 36.296875 
+Q 45.703125 29.90625 45.703125 20.40625 
+Q 45.703125 10.703125 39.640625 4.25 
+Q 33.59375 -2.203125 25.09375 -2.203125 
+Q 21.296875 -2.203125 17.84375 -0.59375 
+Q 14.40625 1 11.203125 4.59375 
+Q 8 8.203125 6.09375 15.140625 
+Q 4.203125 22.09375 4.203125 31.59375 
+z
+M 13.40625 22.59375 
+Q 13.40625 12.796875 15.203125 8.09375 
+Q 15.5 7.296875 16.140625 6.25 
+Q 16.796875 5.203125 17.9375 3.796875 
+Q 19.09375 2.40625 21 1.5 
+Q 22.90625 0.59375 25.09375 0.59375 
+Q 31.796875 0.59375 35 7.09375 
+Q 36.703125 10.703125 36.703125 20.5 
+Q 36.703125 30.5 34.90625 34.203125 
+Q 31.796875 40.40625 25.59375 40.40625 
+Q 21.40625 40.40625 18.5 37.5 
+Q 15.59375 34.59375 14.5 30.75 
+Q 13.40625 26.90625 13.40625 22.59375 
+z
+" id="CMUSerif-Roman-54"/>
+      </defs>
+      <g transform="translate(52.295152 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-54"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="95.033698" xlink:href="#m00a3d680a8" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- $\mathdefault{10^{-4}}$ -->
+      <defs>
+       <path d="M 2.796875 16.5 
+L 2.796875 19.59375 
+L 33.5 66.5 
+Q 34.296875 67.703125 35.5 67.703125 
+Q 36.59375 67.703125 36.84375 67.25 
+Q 37.09375 66.796875 37.09375 65.09375 
+L 37.09375 19.59375 
+L 47.09375 19.59375 
+L 47.09375 16.5 
+L 37.09375 16.5 
+L 37.09375 7.796875 
+Q 37.09375 4.90625 38.296875 4 
+Q 39.5 3.09375 44.703125 3.09375 
+L 46.796875 3.09375 
+L 46.796875 0 
+Q 42.703125 0.296875 33.203125 0.296875 
+Q 23.796875 0.296875 19.703125 0 
+L 19.703125 3.09375 
+L 21.796875 3.09375 
+Q 27 3.09375 28.203125 4 
+Q 29.40625 4.90625 29.40625 7.796875 
+L 29.40625 16.5 
+z
+M 5.59375 19.59375 
+L 30 19.59375 
+L 30 56.90625 
+z
+" id="CMUSerif-Roman-52"/>
+      </defs>
+      <g transform="translate(86.933698 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.442188)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.442188)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-52"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="129.672243" xlink:href="#m00a3d680a8" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- $\mathdefault{10^{-2}}$ -->
+      <defs>
+       <path d="M 5 0 
+Q 5 1.796875 5.140625 2.34375 
+Q 5.296875 2.90625 6.09375 3.703125 
+L 25.296875 25.09375 
+Q 35.796875 36.90625 35.796875 47.203125 
+Q 35.796875 53.90625 32.296875 58.703125 
+Q 28.796875 63.5 22.40625 63.5 
+Q 18 63.5 14.296875 60.796875 
+Q 10.59375 58.09375 8.90625 53.296875 
+Q 9.203125 53.40625 10.203125 53.40625 
+Q 12.703125 53.40625 14.09375 51.84375 
+Q 15.5 50.296875 15.5 48.203125 
+Q 15.5 45.5 13.75 44.203125 
+Q 12 42.90625 10.296875 42.90625 
+Q 9.59375 42.90625 8.6875 43.046875 
+Q 7.796875 43.203125 6.390625 44.59375 
+Q 5 46 5 48.5 
+Q 5 55.5 10.296875 61.046875 
+Q 15.59375 66.59375 23.703125 66.59375 
+Q 32.90625 66.59375 38.90625 61.140625 
+Q 44.90625 55.703125 44.90625 47.203125 
+Q 44.90625 44.203125 44 41.5 
+Q 43.09375 38.796875 41.890625 36.6875 
+Q 40.703125 34.59375 37.5 31.25 
+Q 34.296875 27.90625 31.6875 25.5 
+Q 29.09375 23.09375 23.296875 18 
+L 12.703125 7.703125 
+L 30.703125 7.703125 
+Q 39.5 7.703125 40.203125 8.5 
+Q 41.203125 9.90625 42.40625 17.40625 
+L 44.90625 17.40625 
+L 42.09375 0 
+z
+" id="CMUSerif-Roman-50"/>
+      </defs>
+      <g transform="translate(121.572243 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="164.310789" xlink:href="#m00a3d680a8" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- $\mathdefault{10^{0}}$ -->
+      <g transform="translate(157.410789 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-48"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="198.949334" xlink:href="#m00a3d680a8" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <!-- $\mathdefault{10^{2}}$ -->
+      <g transform="translate(192.049334 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_6">
+     <!-- Hydrogen number density $n_{\rm H}$ [cm$^{-3}$] -->
+     <defs>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+L 5.703125 3.09375 
+Q 11.09375 3.09375 12.34375 4 
+Q 13.59375 4.90625 13.59375 7.796875 
+L 13.59375 60.5 
+Q 13.59375 63.40625 12.34375 64.296875 
+Q 11.09375 65.203125 5.703125 65.203125 
+L 3.296875 65.203125 
+L 3.296875 68.296875 
+Q 6.796875 68 18.09375 68 
+Q 29.296875 68 32.796875 68.296875 
+L 32.796875 65.203125 
+L 30.40625 65.203125 
+Q 25 65.203125 23.75 64.296875 
+Q 22.5 63.40625 22.5 60.5 
+L 22.5 37.09375 
+L 52.40625 37.09375 
+L 52.40625 60.5 
+Q 52.40625 63.40625 51.15625 64.296875 
+Q 49.90625 65.203125 44.5 65.203125 
+L 42.09375 65.203125 
+L 42.09375 68.296875 
+Q 45.59375 68 56.90625 68 
+Q 68.09375 68 71.59375 68.296875 
+L 71.59375 65.203125 
+L 69.203125 65.203125 
+Q 63.796875 65.203125 62.546875 64.296875 
+Q 61.296875 63.40625 61.296875 60.5 
+L 61.296875 7.796875 
+Q 61.296875 4.90625 62.546875 4 
+Q 63.796875 3.09375 69.203125 3.09375 
+L 71.59375 3.09375 
+L 71.59375 0 
+Q 68.09375 0.296875 56.796875 0.296875 
+Q 45.59375 0.296875 42.09375 0 
+L 42.09375 3.09375 
+L 44.5 3.09375 
+Q 49.90625 3.09375 51.15625 4 
+Q 52.40625 4.90625 52.40625 7.796875 
+L 52.40625 34 
+L 22.5 34 
+L 22.5 7.796875 
+Q 22.5 4.90625 23.75 4 
+Q 25 3.09375 30.40625 3.09375 
+L 32.796875 3.09375 
+L 32.796875 0 
+Q 29.296875 0.296875 18 0.296875 
+Q 6.796875 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-72"/>
+      <path d="M 1.90625 -12.40625 
+Q 1.90625 -10.296875 3.15625 -9.1875 
+Q 4.40625 -8.09375 6.09375 -8.09375 
+Q 7.90625 -8.09375 9.09375 -9.25 
+Q 10.296875 -10.40625 10.296875 -12.296875 
+Q 10.296875 -16 6.40625 -16.5 
+Q 8.296875 -18.296875 11.09375 -18.296875 
+Q 14.09375 -18.296875 16.5 -16.09375 
+Q 18.90625 -13.90625 19.953125 -11.796875 
+Q 21 -9.703125 22.5 -5.90625 
+Q 23.90625 -2.90625 25 0 
+L 10 36.5 
+Q 9 38.90625 7.5 39.453125 
+Q 6 40 1.90625 40 
+L 1.90625 43.09375 
+Q 6.40625 42.796875 11.59375 42.796875 
+Q 14.703125 42.796875 22.5 43.09375 
+L 22.5 40 
+Q 16.90625 40 16.90625 37.40625 
+Q 16.90625 37.09375 17.5 35.59375 
+L 28.59375 8.703125 
+L 38.703125 33.296875 
+Q 39.296875 34.703125 39.296875 35.703125 
+Q 39.296875 39.796875 34.59375 40 
+L 34.59375 43.09375 
+Q 41.203125 42.796875 43.296875 42.796875 
+Q 47.40625 42.796875 50.796875 43.09375 
+L 50.796875 40 
+Q 44.09375 40 41.5 33.59375 
+L 23.90625 -9.09375 
+Q 19.09375 -20.5 11.09375 -20.5 
+Q 7.296875 -20.5 4.59375 -18.140625 
+Q 1.90625 -15.796875 1.90625 -12.40625 
+z
+" id="CMUSerif-Roman-121"/>
+      <path d="M 3.40625 21.5 
+Q 3.40625 31 10.046875 37.59375 
+Q 16.703125 44.203125 25.703125 44.203125 
+Q 33.296875 44.203125 38.296875 38 
+L 38.296875 59.59375 
+Q 38.296875 63.296875 37 64.25 
+Q 35.703125 65.203125 30.5 65.203125 
+L 30.5 68.296875 
+L 44.90625 69.40625 
+L 44.90625 8.703125 
+Q 44.90625 5 46.203125 4.046875 
+Q 47.5 3.09375 52.703125 3.09375 
+L 52.703125 0 
+L 38 -1.09375 
+L 38 5.5 
+Q 32.796875 -1.09375 24.59375 -1.09375 
+Q 16 -1.09375 9.703125 5.5 
+Q 3.40625 12.09375 3.40625 21.5 
+z
+M 11.703125 21.40625 
+Q 11.703125 12.09375 14.59375 7.5 
+Q 18.59375 1.09375 25.09375 1.09375 
+Q 32.5 1.09375 36.90625 8.09375 
+Q 38 9.796875 38 11.796875 
+L 38 32.296875 
+Q 38 34.296875 36.90625 36 
+Q 32.796875 42 26.09375 42 
+Q 19.09375 42 14.796875 35.59375 
+Q 11.703125 30.796875 11.703125 21.40625 
+z
+" id="CMUSerif-Roman-100"/>
+      <path d="M 2.796875 0 
+L 2.796875 3.09375 
+Q 8.09375 3.09375 9.34375 3.75 
+Q 10.59375 4.40625 10.59375 7.59375 
+L 10.59375 34.40625 
+Q 10.59375 38.09375 9.296875 39.046875 
+Q 8 40 2.796875 40 
+L 2.796875 43.09375 
+L 16.703125 44.203125 
+L 16.703125 33.203125 
+Q 18.09375 37.5 21.09375 40.84375 
+Q 24.09375 44.203125 29 44.203125 
+Q 32.203125 44.203125 34.296875 42.390625 
+Q 36.40625 40.59375 36.40625 38.09375 
+Q 36.40625 35.90625 35.046875 34.796875 
+Q 33.703125 33.703125 32.09375 33.703125 
+Q 30.296875 33.703125 29.046875 34.84375 
+Q 27.796875 36 27.796875 38 
+Q 27.796875 39.203125 28.34375 40.140625 
+Q 28.90625 41.09375 29.34375 41.4375 
+Q 29.796875 41.796875 30.09375 41.90625 
+Q 29.90625 42 29 42 
+Q 23.5 42 20.34375 36.5 
+Q 17.203125 31 17.203125 23.203125 
+L 17.203125 7.796875 
+Q 17.203125 4.90625 18.390625 4 
+Q 19.59375 3.09375 24.796875 3.09375 
+L 26.90625 3.09375 
+L 26.90625 0 
+Q 22.90625 0.296875 14.203125 0.296875 
+Q 13 0.296875 11.09375 0.25 
+Q 9.203125 0.203125 6.703125 0.09375 
+Q 4.203125 0 2.796875 0 
+z
+" id="CMUSerif-Roman-114"/>
+      <path d="M 16 -1.09375 
+Q 2.796875 11.90625 2.796875 21.40625 
+Q 2.796875 30.90625 9.25 37.84375 
+Q 15.703125 44.796875 25 44.796875 
+Q 34.09375 44.796875 40.59375 37.890625 
+Q 47.09375 31 47.09375 21.40625 
+Q 47.09375 12 40.546875 5.453125 
+Q 34 -1.09375 24.90625 -1.09375 
+Q 16 -1.09375 2.796875 11.90625 
+z
+M 11.09375 22.203125 
+Q 11.09375 12.5 13.59375 8.09375 
+Q 17.5 1.40625 25 1.40625 
+Q 28.703125 1.40625 31.796875 3.40625 
+Q 34.90625 5.40625 36.59375 8.796875 
+Q 38.796875 13.203125 38.796875 22.203125 
+Q 38.796875 31.796875 36.203125 36.09375 
+Q 32.296875 42.59375 24.90625 42.59375 
+Q 21.703125 42.59375 18.546875 40.890625 
+Q 15.40625 39.203125 13.5 35.90625 
+Q 11.09375 31.5 11.09375 22.203125 
+z
+" id="CMUSerif-Roman-111"/>
+      <path d="M 2.796875 -7.90625 
+Q 2.796875 -4.703125 5.25 -1.890625 
+Q 7.703125 0.90625 12 2.09375 
+Q 7.59375 4.90625 7.59375 11 
+Q 7.59375 15.703125 10.703125 19.296875 
+Q 6 23.203125 6 29.59375 
+Q 6 35.5 10.703125 39.84375 
+Q 15.40625 44.203125 22.203125 44.203125 
+Q 28.203125 44.203125 32.796875 40.59375 
+Q 37.59375 45.296875 43.40625 45.296875 
+Q 46 45.296875 47.25 43.6875 
+Q 48.5 42.09375 48.5 40.40625 
+Q 48.5 38.90625 47.546875 38.15625 
+Q 46.59375 37.40625 45.59375 37.40625 
+Q 44.40625 37.40625 43.546875 38.203125 
+Q 42.703125 39 42.703125 40.296875 
+Q 42.703125 42.40625 44.296875 43 
+Q 44 43.09375 43.296875 43.09375 
+Q 38.40625 43.09375 34.296875 39.203125 
+Q 38.40625 35.40625 38.40625 29.5 
+Q 38.40625 23.59375 33.703125 19.25 
+Q 29 14.90625 22.203125 14.90625 
+Q 16.59375 14.90625 12.296875 18 
+Q 10.59375 16 10.59375 13.296875 
+Q 10.59375 10.796875 12.09375 8.84375 
+Q 13.59375 6.90625 15.90625 6.59375 
+Q 16.59375 6.5 23.40625 6.5 
+Q 27.40625 6.5 29.59375 6.390625 
+Q 31.796875 6.296875 34.9375 5.640625 
+Q 38.09375 5 40.59375 3.703125 
+Q 47.09375 0.09375 47.09375 -7.703125 
+Q 47.09375 -13.40625 40.546875 -17 
+Q 34 -20.59375 24.90625 -20.59375 
+Q 15.703125 -20.59375 9.25 -16.9375 
+Q 2.796875 -13.296875 2.796875 -7.90625 
+z
+M 8 -7.90625 
+Q 8 -12 12.84375 -15.140625 
+Q 17.703125 -18.296875 25 -18.296875 
+Q 32.203125 -18.296875 37.046875 -15.1875 
+Q 41.90625 -12.09375 41.90625 -7.90625 
+Q 41.90625 -4.90625 40.203125 -3 
+Q 38.5 -1.09375 35 -0.34375 
+Q 31.5 0.40625 29.046875 0.546875 
+Q 26.59375 0.703125 22.09375 0.703125 
+L 16.203125 0.703125 
+Q 12.796875 0.5 10.390625 -2 
+Q 8 -4.5 8 -7.90625 
+z
+M 13.5 29.5 
+Q 13.5 17.203125 22.203125 17.203125 
+Q 26.59375 17.203125 29.296875 21.203125 
+Q 30.90625 23.90625 30.90625 29.59375 
+Q 30.90625 41.90625 22.203125 41.90625 
+Q 17.796875 41.90625 15.09375 37.90625 
+Q 13.5 35.203125 13.5 29.5 
+z
+" id="CMUSerif-Roman-103"/>
+      <path d="M 2.796875 22 
+Q 2.796875 31.40625 8.84375 38.09375 
+Q 14.90625 44.796875 23.59375 44.796875 
+Q 32.40625 44.796875 36.953125 39.09375 
+Q 41.5 33.40625 41.5 25.203125 
+Q 41.5 23.703125 41.09375 23.390625 
+Q 40.703125 23.09375 39 23.09375 
+L 11.09375 23.09375 
+Q 11.09375 12.90625 14.09375 8.09375 
+Q 18.296875 1.40625 25.40625 1.40625 
+Q 26.40625 1.40625 27.546875 1.59375 
+Q 28.703125 1.796875 31.09375 2.640625 
+Q 33.5 3.5 35.59375 5.796875 
+Q 37.703125 8.09375 38.90625 11.703125 
+Q 39.203125 13.09375 40.203125 13.09375 
+Q 41.5 13.09375 41.5 11.90625 
+Q 41.5 11 40.546875 9.046875 
+Q 39.59375 7.09375 37.796875 4.75 
+Q 36 2.40625 32.5 0.65625 
+Q 29 -1.09375 24.796875 -1.09375 
+Q 16 -1.09375 9.390625 5.546875 
+Q 2.796875 12.203125 2.796875 22 
+z
+M 11.203125 25.203125 
+L 34.90625 25.203125 
+Q 34.90625 27.296875 34.546875 29.640625 
+Q 34.203125 32 33.140625 35.25 
+Q 32.09375 38.5 29.640625 40.546875 
+Q 27.203125 42.59375 23.59375 42.59375 
+Q 22 42.59375 20.25 41.890625 
+Q 18.5 41.203125 16.390625 39.546875 
+Q 14.296875 37.90625 12.84375 34.15625 
+Q 11.40625 30.40625 11.203125 25.203125 
+z
+" id="CMUSerif-Roman-101"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 39.59375 44.203125 42.59375 40.5 
+Q 44.796875 38 45.25 35.203125 
+Q 45.703125 32.40625 45.703125 25.203125 
+L 45.703125 6.09375 
+Q 45.796875 4 47.390625 3.546875 
+Q 49 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-110"/>
+      <path id="CMUSerif-Roman-32"/>
+      <path d="M 3.203125 40 
+L 3.203125 43.09375 
+L 17.90625 44.203125 
+L 17.90625 11 
+Q 17.90625 8.59375 18.09375 7.1875 
+Q 18.296875 5.796875 19.09375 4.1875 
+Q 19.90625 2.59375 21.796875 1.84375 
+Q 23.703125 1.09375 26.703125 1.09375 
+Q 32.09375 1.09375 35.4375 5.546875 
+Q 38.796875 10 38.796875 16.59375 
+L 38.796875 34.40625 
+Q 38.796875 38.09375 37.5 39.046875 
+Q 36.203125 40 31 40 
+L 31 43.09375 
+L 45.703125 44.203125 
+L 45.703125 8.703125 
+Q 45.703125 5 47 4.046875 
+Q 48.296875 3.09375 53.5 3.09375 
+L 53.5 0 
+L 39.09375 -1.09375 
+L 39.09375 7.90625 
+Q 34.90625 -1.09375 26.203125 -1.09375 
+Q 21.796875 -1.09375 18.796875 0 
+Q 15.796875 1.09375 14.296875 2.5 
+Q 12.796875 3.90625 12 6.59375 
+Q 11.203125 9.296875 11.09375 10.9375 
+Q 11 12.59375 11 15.796875 
+L 11 30.796875 
+Q 11 37.59375 10 38.796875 
+Q 9 40 3.203125 40 
+z
+" id="CMUSerif-Roman-117"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 43.796875 44.203125 45.40625 34.40625 
+Q 47.09375 38.203125 50.6875 41.203125 
+Q 54.296875 44.203125 59.90625 44.203125 
+Q 67.40625 44.203125 70.40625 40.5 
+Q 72.59375 38 73.046875 35.203125 
+Q 73.5 32.40625 73.5 25.203125 
+L 73.5 6.09375 
+Q 73.59375 4 75.1875 3.546875 
+Q 76.796875 3.09375 81.296875 3.09375 
+L 81.296875 0 
+Q 71.09375 0.296875 70.09375 0.296875 
+Q 69.296875 0.296875 58.796875 0 
+L 58.796875 3.09375 
+Q 64.09375 3.09375 65.34375 3.75 
+Q 66.59375 4.40625 66.59375 7.59375 
+L 66.59375 30.90625 
+Q 66.59375 36 65.046875 39 
+Q 63.5 42 59.203125 42 
+Q 54 42 49.84375 37.640625 
+Q 45.703125 33.296875 45.703125 26 
+L 45.703125 7.59375 
+Q 45.703125 4.40625 46.953125 3.75 
+Q 48.203125 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-109"/>
+      <path d="M 2.796875 65.203125 
+L 2.796875 68.296875 
+L 17.203125 69.40625 
+L 17.203125 37.703125 
+Q 23 44.203125 30.90625 44.203125 
+Q 39.5 44.203125 45.796875 37.59375 
+Q 52.09375 31 52.09375 21.59375 
+Q 52.09375 12.09375 45.5 5.5 
+Q 38.90625 -1.09375 29.796875 -1.09375 
+Q 21.5 -1.09375 16.703125 6.203125 
+Q 13.203125 0.09375 13.09375 0 
+L 10.59375 0 
+L 10.59375 59.59375 
+Q 10.59375 63.296875 9.296875 64.25 
+Q 8 65.203125 2.796875 65.203125 
+z
+M 17.5 11.40625 
+Q 17.5 9.296875 18.90625 7.203125 
+Q 22.90625 1.09375 29.40625 1.09375 
+Q 36.40625 1.09375 40.703125 7.5 
+Q 43.796875 12.296875 43.796875 21.703125 
+Q 43.796875 31 40.90625 35.59375 
+Q 36.90625 42 30.40625 42 
+Q 23.09375 42 18.59375 35.59375 
+Q 17.5 34 17.5 32 
+z
+" id="CMUSerif-Roman-98"/>
+      <path d="M 3.296875 1.296875 
+L 3.296875 14.5 
+Q 3.296875 15.59375 3.34375 16 
+Q 3.40625 16.40625 3.703125 16.703125 
+Q 4 17 4.59375 17 
+Q 5.296875 17 5.546875 16.703125 
+Q 5.796875 16.40625 6 15.296875 
+Q 7.5 8.40625 10.75 4.75 
+Q 14 1.09375 19.90625 1.09375 
+Q 25.5 1.09375 28.34375 3.59375 
+Q 31.203125 6.09375 31.203125 10.203125 
+Q 31.203125 17.5 20.796875 19.40625 
+Q 14.796875 20.59375 12.296875 21.390625 
+Q 9.796875 22.203125 7.59375 24 
+Q 3.296875 27.5 3.296875 32.5 
+Q 3.296875 37.5 7.09375 41.140625 
+Q 10.90625 44.796875 19.296875 44.796875 
+Q 24.90625 44.796875 28.703125 42 
+Q 29.796875 42.90625 30.40625 43.59375 
+Q 31.703125 44.796875 32.40625 44.796875 
+Q 33.203125 44.796875 33.34375 44.296875 
+Q 33.5 43.796875 33.5 42.40625 
+L 33.5 32.296875 
+Q 33.5 31.203125 33.453125 30.796875 
+Q 33.40625 30.40625 33.09375 30.15625 
+Q 32.796875 29.90625 32.203125 29.90625 
+Q 31.09375 29.90625 31 30.796875 
+Q 30.203125 42.90625 19.296875 42.90625 
+Q 13.40625 42.90625 10.75 40.65625 
+Q 8.09375 38.40625 8.09375 35.296875 
+Q 8.09375 33.59375 8.890625 32.296875 
+Q 9.703125 31 10.75 30.25 
+Q 11.796875 29.5 13.75 28.796875 
+Q 15.703125 28.09375 16.890625 27.84375 
+Q 18.09375 27.59375 20.40625 27.09375 
+Q 28.40625 25.59375 31.796875 22.296875 
+Q 36 18.09375 36 12.796875 
+Q 36 6.90625 32 2.90625 
+Q 28 -1.09375 19.90625 -1.09375 
+Q 13.40625 -1.09375 8.90625 3.203125 
+Q 8.296875 2.59375 7.84375 2.09375 
+Q 7.40625 1.59375 7.25 1.390625 
+Q 7.09375 1.203125 7.046875 1.09375 
+Q 7 1 6.90625 0.90625 
+Q 4.90625 -1.09375 4.40625 -1.09375 
+Q 3.59375 -1.09375 3.4375 -0.59375 
+Q 3.296875 -0.09375 3.296875 1.296875 
+z
+" id="CMUSerif-Roman-115"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+Q 8.59375 3.09375 9.84375 3.75 
+Q 11.09375 4.40625 11.09375 7.59375 
+L 11.09375 34.5 
+Q 11.09375 38.203125 9.84375 39.09375 
+Q 8.59375 40 3.703125 40 
+L 3.703125 43.09375 
+L 17.703125 44.203125 
+L 17.703125 7.5 
+Q 17.703125 4.5 18.75 3.796875 
+Q 19.796875 3.09375 24.703125 3.09375 
+L 24.703125 0 
+Q 14.5 0.296875 14.296875 0.296875 
+Q 12.90625 0.296875 3.296875 0 
+z
+M 7.5 61.59375 
+Q 7.5 63.59375 9.046875 65.25 
+Q 10.59375 66.90625 12.796875 66.90625 
+Q 15 66.90625 16.546875 65.40625 
+Q 18.09375 63.90625 18.09375 61.59375 
+Q 18.09375 59.296875 16.546875 57.796875 
+Q 15 56.296875 12.796875 56.296875 
+Q 10.5 56.296875 9 57.890625 
+Q 7.5 59.5 7.5 61.59375 
+z
+" id="CMUSerif-Roman-105"/>
+      <path d="M 1.90625 40 
+L 1.90625 42.203125 
+Q 6.5 42.40625 9.546875 45.65625 
+Q 12.59375 48.90625 13.640625 52.90625 
+Q 14.703125 56.90625 14.796875 61.5 
+L 17.296875 61.5 
+L 17.296875 43.09375 
+L 31.59375 43.09375 
+L 31.59375 40 
+L 17.296875 40 
+L 17.296875 12.203125 
+Q 17.296875 1.40625 24 1.40625 
+Q 26.90625 1.40625 28.796875 4.34375 
+Q 30.703125 7.296875 30.703125 12.59375 
+L 30.703125 18.09375 
+L 33.203125 18.09375 
+L 33.203125 12.40625 
+Q 33.203125 7 30.703125 2.953125 
+Q 28.203125 -1.09375 23.296875 -1.09375 
+Q 21.5 -1.09375 19.703125 -0.640625 
+Q 17.90625 -0.203125 15.59375 1 
+Q 13.296875 2.203125 11.84375 5.140625 
+Q 10.40625 8.09375 10.40625 12.40625 
+L 10.40625 40 
+z
+" id="CMUSerif-Roman-116"/>
+      <path d="M 7.71875 1.703125 
+Q 7.71875 2.296875 7.8125 2.59375 
+L 15.28125 32.421875 
+Q 16.015625 35.203125 16.015625 37.3125 
+Q 16.015625 41.609375 13.09375 41.609375 
+Q 9.96875 41.609375 8.453125 37.859375 
+Q 6.9375 34.125 5.515625 28.421875 
+Q 5.515625 28.125 5.21875 27.953125 
+Q 4.9375 27.78125 4.6875 27.78125 
+L 3.515625 27.78125 
+Q 3.171875 27.78125 2.921875 28.140625 
+Q 2.6875 28.515625 2.6875 28.8125 
+Q 3.765625 33.15625 4.765625 36.171875 
+Q 5.765625 39.203125 7.890625 41.6875 
+Q 10.015625 44.1875 13.1875 44.1875 
+Q 16.9375 44.1875 19.8125 41.8125 
+Q 22.703125 39.453125 22.703125 35.796875 
+Q 25.6875 39.703125 29.6875 41.9375 
+Q 33.6875 44.1875 38.1875 44.1875 
+Q 41.75 44.1875 44.328125 42.96875 
+Q 46.921875 41.75 48.359375 39.28125 
+Q 49.8125 36.8125 49.8125 33.40625 
+Q 49.8125 29.296875 47.96875 23.484375 
+Q 46.140625 17.671875 43.40625 10.5 
+Q 42 7.234375 42 4.5 
+Q 42 1.515625 44.28125 1.515625 
+Q 48.1875 1.515625 50.796875 5.703125 
+Q 53.421875 9.90625 54.5 14.703125 
+Q 54.6875 15.28125 55.328125 15.28125 
+L 56.5 15.28125 
+Q 56.890625 15.28125 57.15625 15.03125 
+Q 57.421875 14.796875 57.421875 14.40625 
+Q 57.421875 14.3125 57.328125 14.109375 
+Q 55.953125 8.453125 52.5625 3.65625 
+Q 49.171875 -1.125 44.09375 -1.125 
+Q 40.578125 -1.125 38.078125 1.296875 
+Q 35.59375 3.71875 35.59375 7.171875 
+Q 35.59375 9.03125 36.375 11.078125 
+Q 37.640625 14.359375 39.28125 18.890625 
+Q 40.921875 23.4375 41.96875 27.578125 
+Q 43.015625 31.734375 43.015625 34.90625 
+Q 43.015625 37.703125 41.859375 39.65625 
+Q 40.71875 41.609375 37.984375 41.609375 
+Q 34.328125 41.609375 31.25 39.984375 
+Q 28.171875 38.375 25.875 35.71875 
+Q 23.578125 33.0625 21.6875 29.390625 
+L 14.890625 2.203125 
+Q 14.546875 0.828125 13.34375 -0.140625 
+Q 12.15625 -1.125 10.6875 -1.125 
+Q 9.46875 -1.125 8.59375 -0.34375 
+Q 7.71875 0.4375 7.71875 1.703125 
+z
+" id="Cmmi10-110"/>
+      <path d="M 3.078125 0 
+L 3.078125 3.515625 
+Q 13.375 3.515625 13.375 6.6875 
+L 13.375 61.625 
+Q 13.375 64.796875 3.078125 64.796875 
+L 3.078125 68.3125 
+L 33.015625 68.3125 
+L 33.015625 64.796875 
+Q 22.703125 64.796875 22.703125 61.625 
+L 22.703125 37.3125 
+L 52.203125 37.3125 
+L 52.203125 61.625 
+Q 52.203125 64.796875 41.890625 64.796875 
+L 41.890625 68.3125 
+L 71.78125 68.3125 
+L 71.78125 64.796875 
+Q 61.53125 64.796875 61.53125 61.625 
+L 61.53125 6.6875 
+Q 61.53125 3.515625 71.78125 3.515625 
+L 71.78125 0 
+L 41.890625 0 
+L 41.890625 3.515625 
+Q 52.203125 3.515625 52.203125 6.6875 
+L 52.203125 33.796875 
+L 22.703125 33.796875 
+L 22.703125 6.6875 
+Q 22.703125 3.515625 33.015625 3.515625 
+L 33.015625 0 
+z
+" id="Cmr10-72"/>
+      <path d="M 10.40625 -25 
+L 10.40625 75 
+L 25.5 75 
+L 25.5 72.703125 
+L 17.09375 72.703125 
+L 17.09375 -22.703125 
+L 25.5 -22.703125 
+L 25.5 -25 
+z
+" id="CMUSerif-Roman-91"/>
+      <path d="M 16.09375 -1.09375 
+Q 3.40625 12.09375 3.40625 21.59375 
+Q 3.40625 31.09375 9.65625 37.9375 
+Q 15.90625 44.796875 25.09375 44.796875 
+Q 31.203125 44.796875 35.796875 41.890625 
+Q 40.40625 39 40.40625 34.09375 
+Q 40.40625 31.90625 39.09375 30.65625 
+Q 37.796875 29.40625 35.796875 29.40625 
+Q 33.703125 29.40625 32.453125 30.703125 
+Q 31.203125 32 31.203125 34 
+Q 31.203125 34.90625 31.5 35.75 
+Q 31.796875 36.59375 32.890625 37.546875 
+Q 34 38.5 35.90625 38.59375 
+Q 32.296875 42.296875 25.203125 42.296875 
+Q 20.09375 42.296875 15.890625 37.5 
+Q 11.703125 32.703125 11.703125 21.796875 
+Q 11.703125 16.09375 13.09375 11.890625 
+Q 14.5 7.703125 16.796875 5.546875 
+Q 19.09375 3.40625 21.34375 2.40625 
+Q 23.59375 1.40625 25.796875 1.40625 
+Q 35.59375 1.40625 38.90625 11.90625 
+Q 39.203125 12.90625 40.203125 12.90625 
+Q 41.5 12.90625 41.5 11.90625 
+Q 41.5 11.40625 41.09375 10.15625 
+Q 40.703125 8.90625 39.5 6.90625 
+Q 38.296875 4.90625 36.546875 3.15625 
+Q 34.796875 1.40625 31.75 0.15625 
+Q 28.703125 -1.09375 24.90625 -1.09375 
+Q 16.09375 -1.09375 3.40625 12.09375 
+z
+" id="CMUSerif-Roman-99"/>
+      <path d="M 10.203125 23 
+Q 9.375 23 8.828125 23.625 
+Q 8.296875 24.265625 8.296875 25 
+Q 8.296875 25.734375 8.828125 26.359375 
+Q 9.375 27 10.203125 27 
+L 67.578125 27 
+Q 68.359375 27 68.875 26.359375 
+Q 69.390625 25.734375 69.390625 25 
+Q 69.390625 24.265625 68.875 23.625 
+Q 68.359375 23 67.578125 23 
+z
+" id="Cmsy10-161"/>
+      <path d="M 9.515625 7.71875 
+Q 11.859375 4.296875 15.8125 2.640625 
+Q 19.78125 0.984375 24.3125 0.984375 
+Q 30.125 0.984375 32.5625 5.9375 
+Q 35.015625 10.890625 35.015625 17.1875 
+Q 35.015625 20.015625 34.5 22.84375 
+Q 33.984375 25.6875 32.765625 28.125 
+Q 31.546875 30.5625 29.421875 32.03125 
+Q 27.296875 33.5 24.21875 33.5 
+L 17.578125 33.5 
+Q 16.703125 33.5 16.703125 34.421875 
+L 16.703125 35.296875 
+Q 16.703125 36.078125 17.578125 36.078125 
+L 23.09375 36.53125 
+Q 26.609375 36.53125 28.921875 39.15625 
+Q 31.25 41.796875 32.328125 45.578125 
+Q 33.40625 49.359375 33.40625 52.78125 
+Q 33.40625 57.5625 31.15625 60.640625 
+Q 28.90625 63.71875 24.3125 63.71875 
+Q 20.515625 63.71875 17.046875 62.28125 
+Q 13.578125 60.84375 11.53125 57.90625 
+Q 11.71875 57.953125 11.859375 57.984375 
+Q 12.015625 58.015625 12.203125 58.015625 
+Q 14.453125 58.015625 15.96875 56.453125 
+Q 17.484375 54.890625 17.484375 52.6875 
+Q 17.484375 50.53125 15.96875 48.96875 
+Q 14.453125 47.40625 12.203125 47.40625 
+Q 10.015625 47.40625 8.453125 48.96875 
+Q 6.890625 50.53125 6.890625 52.6875 
+Q 6.890625 56.984375 9.46875 60.15625 
+Q 12.0625 63.328125 16.140625 64.96875 
+Q 20.21875 66.609375 24.3125 66.609375 
+Q 27.34375 66.609375 30.703125 65.703125 
+Q 34.078125 64.796875 36.8125 63.109375 
+Q 39.546875 61.421875 41.28125 58.78125 
+Q 43.015625 56.15625 43.015625 52.78125 
+Q 43.015625 48.578125 41.140625 45.015625 
+Q 39.265625 41.453125 35.984375 38.859375 
+Q 32.71875 36.28125 28.8125 35.015625 
+Q 33.15625 34.1875 37.0625 31.734375 
+Q 40.96875 29.296875 43.328125 25.484375 
+Q 45.703125 21.6875 45.703125 17.28125 
+Q 45.703125 11.765625 42.671875 7.296875 
+Q 39.65625 2.828125 34.71875 0.3125 
+Q 29.78125 -2.203125 24.3125 -2.203125 
+Q 19.625 -2.203125 14.90625 -0.40625 
+Q 10.203125 1.375 7.203125 4.9375 
+Q 4.203125 8.5 4.203125 13.484375 
+Q 4.203125 15.96875 5.859375 17.625 
+Q 7.515625 19.28125 10.015625 19.28125 
+Q 11.625 19.28125 12.96875 18.53125 
+Q 14.3125 17.78125 15.0625 16.40625 
+Q 15.828125 15.046875 15.828125 13.484375 
+Q 15.828125 11.03125 14.109375 9.375 
+Q 12.40625 7.71875 10.015625 7.71875 
+z
+" id="Cmr10-51"/>
+      <path d="M 2.09375 -22.703125 
+L 10.5 -22.703125 
+L 10.5 72.703125 
+L 2.09375 72.703125 
+L 2.09375 75 
+L 17.203125 75 
+L 17.203125 -25 
+L 2.09375 -25 
+z
+" id="CMUSerif-Roman-93"/>
+     </defs>
+     <g transform="translate(48.976 221.69725)scale(0.1 -0.1)">
+      <use transform="translate(0 0.109375)" xlink:href="#CMUSerif-Roman-72"/>
+      <use transform="translate(74.999985 0.109375)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(127.699982 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(183.199966 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(222.299957 0.109375)" xlink:href="#CMUSerif-Roman-111"/>
+      <use transform="translate(272.299942 0.109375)" xlink:href="#CMUSerif-Roman-103"/>
+      <use transform="translate(322.299927 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(366.699921 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(422.199905 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(455.499893 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(510.999878 0.109375)" xlink:href="#CMUSerif-Roman-117"/>
+      <use transform="translate(566.499863 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(649.79985 0.109375)" xlink:href="#CMUSerif-Roman-98"/>
+      <use transform="translate(705.299835 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(749.699829 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(788.79982 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(822.099808 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(877.599792 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(921.999786 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(977.499771 0.109375)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(1016.899765 0.109375)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(1044.599762 0.109375)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(1083.39975 0.109375)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(1136.099747 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1169.399734 0.109375)" xlink:href="#Cmmi10-110"/>
+      <use transform="translate(1229.4095 -16.896875)scale(0.7)" xlink:href="#Cmr10-72"/>
+      <use transform="translate(1288.286844 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1321.586832 0.109375)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(1349.386819 0.109375)" xlink:href="#CMUSerif-Roman-99"/>
+      <use transform="translate(1393.786813 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(1481.550942 38.373438)scale(0.7)" xlink:href="#Cmsy10-161"/>
+      <use transform="translate(1535.930825 38.373438)scale(0.7)" xlink:href="#Cmr10-51"/>
+      <use transform="translate(1577.308168 0.109375)" xlink:href="#CMUSerif-Roman-93"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_6">
+      <defs>
+       <path d="M 0 0 
+L -3.5 0 
+" id="mbe9d5df88a" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mbe9d5df88a" y="163.232825"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <!-- $\mathdefault{10^{2}}$ -->
+      <g transform="translate(13.22 166.703137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_7">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mbe9d5df88a" y="114.470825"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- $\mathdefault{10^{3}}$ -->
+      <defs>
+       <path d="M 4.203125 13.5 
+Q 4.203125 16.5 5.890625 17.890625 
+Q 7.59375 19.296875 9.796875 19.296875 
+Q 12.09375 19.296875 13.75 17.796875 
+Q 15.40625 16.296875 15.40625 13.703125 
+Q 15.40625 10.90625 13.453125 9.34375 
+Q 11.5 7.796875 8.796875 8.203125 
+Q 11.203125 4.203125 15.59375 2.390625 
+Q 20 0.59375 24.09375 0.59375 
+Q 28.40625 0.59375 31.90625 4.296875 
+Q 35.40625 8 35.40625 17.09375 
+Q 35.40625 24.796875 32.40625 29.25 
+Q 29.40625 33.703125 23.5 33.703125 
+L 19.09375 33.703125 
+Q 17.59375 33.703125 17.140625 33.84375 
+Q 16.703125 34 16.703125 34.796875 
+Q 16.703125 35.796875 18.203125 36 
+Q 19.703125 36 22.09375 36.296875 
+Q 27.90625 36.5 31 41.5 
+Q 33.796875 46.203125 33.796875 52.90625 
+Q 33.796875 59 30.890625 61.546875 
+Q 28 64.09375 24.203125 64.09375 
+Q 20.703125 64.09375 16.84375 62.640625 
+Q 13 61.203125 10.90625 57.90625 
+Q 17.09375 57.90625 17.09375 52.90625 
+Q 17.09375 50.703125 15.6875 49.25 
+Q 14.296875 47.796875 12 47.796875 
+Q 9.796875 47.796875 8.34375 49.1875 
+Q 6.90625 50.59375 6.90625 53 
+Q 6.90625 58.703125 12 62.640625 
+Q 17.09375 66.59375 24.59375 66.59375 
+Q 32 66.59375 37.5 62.6875 
+Q 43 58.796875 43 52.796875 
+Q 43 46.90625 39.09375 42.046875 
+Q 35.203125 37.203125 29 35.203125 
+Q 36.59375 33.703125 41.140625 28.546875 
+Q 45.703125 23.40625 45.703125 17.09375 
+Q 45.703125 9.296875 39.546875 3.546875 
+Q 33.40625 -2.203125 24.40625 -2.203125 
+Q 16.09375 -2.203125 10.140625 2.296875 
+Q 4.203125 6.796875 4.203125 13.5 
+z
+" id="CMUSerif-Roman-51"/>
+      </defs>
+      <g transform="translate(13.22 117.941137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-51"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_8">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mbe9d5df88a" y="65.708825"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- $\mathdefault{10^{4}}$ -->
+      <g transform="translate(13.22 69.179137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.442188)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.442188)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-52"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_9">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mbe9d5df88a" y="16.946825"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- $\mathdefault{10^{5}}$ -->
+      <defs>
+       <path d="M 5 16.09375 
+Q 5 19.09375 6.59375 20.25 
+Q 8.203125 21.40625 9.90625 21.40625 
+Q 12.203125 21.40625 13.546875 19.953125 
+Q 14.90625 18.5 14.90625 16.5 
+Q 14.90625 14.5 13.546875 13.046875 
+Q 12.203125 11.59375 9.90625 11.59375 
+Q 8.796875 11.59375 8.203125 11.796875 
+Q 9.5 7.203125 13.546875 3.890625 
+Q 17.59375 0.59375 22.90625 0.59375 
+Q 29.59375 0.59375 33.59375 7.09375 
+Q 36 11.296875 36 20.796875 
+Q 36 29.203125 34.203125 33.40625 
+Q 31.40625 39.796875 25.703125 39.796875 
+Q 17.59375 39.796875 12.796875 32.796875 
+Q 12.203125 31.90625 11.5 31.90625 
+Q 10.5 31.90625 10.296875 32.453125 
+Q 10.09375 33 10.09375 34.5 
+L 10.09375 64.09375 
+Q 10.09375 66.5 11.09375 66.5 
+Q 11.5 66.5 12.296875 66.203125 
+Q 18.59375 63.40625 25.59375 63.40625 
+Q 32.796875 63.40625 39.203125 66.296875 
+Q 39.703125 66.59375 40 66.59375 
+Q 41 66.59375 41 65.5 
+Q 41 65.09375 40.203125 63.9375 
+Q 39.40625 62.796875 37.703125 61.296875 
+Q 36 59.796875 33.796875 58.390625 
+Q 31.59375 57 28.390625 56.046875 
+Q 25.203125 55.09375 21.703125 55.09375 
+Q 17.5 55.09375 13.203125 56.40625 
+L 13.203125 36.90625 
+Q 18.40625 42 25.90625 42 
+Q 33.90625 42 39.40625 35.546875 
+Q 44.90625 29.09375 44.90625 20.09375 
+Q 44.90625 10.703125 38.40625 4.25 
+Q 31.90625 -2.203125 23.09375 -2.203125 
+Q 15.09375 -2.203125 10.046875 3.5 
+Q 5 9.203125 5 16.09375 
+z
+" id="CMUSerif-Roman-53"/>
+      </defs>
+      <g transform="translate(13.22 20.417137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-53"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_5">
+     <g id="line2d_10">
+      <defs>
+       <path d="M 0 0 
+L -2 0 
+" id="m1f4f509585" style="stroke:#000000;stroke-width:0.6;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="197.316"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_6">
+     <g id="line2d_11">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="188.729438"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_7">
+     <g id="line2d_12">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="182.637175"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_8">
+     <g id="line2d_13">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="177.911649"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_9">
+     <g id="line2d_14">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="174.050613"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_10">
+     <g id="line2d_15">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="170.786154"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_11">
+     <g id="line2d_16">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="167.958351"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_12">
+     <g id="line2d_17">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="165.464051"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_13">
+     <g id="line2d_18">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="148.554"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_14">
+     <g id="line2d_19">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="139.967438"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_15">
+     <g id="line2d_20">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="133.875175"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_16">
+     <g id="line2d_21">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="129.149649"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_17">
+     <g id="line2d_22">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="125.288613"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_18">
+     <g id="line2d_23">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="122.024154"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_19">
+     <g id="line2d_24">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="119.196351"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_20">
+     <g id="line2d_25">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="116.702051"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_21">
+     <g id="line2d_26">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="99.792"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_22">
+     <g id="line2d_27">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="91.205438"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_23">
+     <g id="line2d_28">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="85.113175"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_24">
+     <g id="line2d_29">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="80.387649"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_25">
+     <g id="line2d_30">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="76.526613"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_26">
+     <g id="line2d_31">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="73.262154"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_27">
+     <g id="line2d_32">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="70.434351"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_28">
+     <g id="line2d_33">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="67.940051"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_29">
+     <g id="line2d_34">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="51.03"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_30">
+     <g id="line2d_35">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="42.443438"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_31">
+     <g id="line2d_36">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="36.351175"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_32">
+     <g id="line2d_37">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="31.625649"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_33">
+     <g id="line2d_38">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="27.764613"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_34">
+     <g id="line2d_39">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="24.500154"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_35">
+     <g id="line2d_40">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="21.672351"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_36">
+     <g id="line2d_41">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="19.178051"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_37">
+     <g id="line2d_42">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m1f4f509585" y="2.268"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_11">
+     <!-- Temperature $T$ [K] -->
+     <defs>
+      <path d="M 3.59375 45.203125 
+L 5.5 67.703125 
+L 66.59375 67.703125 
+L 68.5 45.203125 
+L 66 45.203125 
+Q 65.59375 49.703125 65.25 52.296875 
+Q 64.90625 54.90625 64.046875 57.34375 
+Q 63.203125 59.796875 62.140625 61 
+Q 61.09375 62.203125 59.09375 63.140625 
+Q 57.09375 64.09375 54.5 64.34375 
+Q 51.90625 64.59375 48 64.59375 
+Q 43.40625 64.59375 42.296875 64.40625 
+Q 41.09375 64.09375 40.796875 63.25 
+Q 40.5 62.40625 40.5 60.59375 
+L 40.5 7.90625 
+Q 40.5 5.90625 40.890625 5.09375 
+Q 41.296875 4.296875 43.59375 3.6875 
+Q 45.90625 3.09375 51 3.09375 
+L 55 3.09375 
+L 55 0 
+Q 50.90625 0.296875 36 0.296875 
+Q 21.203125 0.296875 17.09375 0 
+L 17.09375 3.09375 
+L 21.09375 3.09375 
+Q 26.203125 3.09375 28.5 3.6875 
+Q 30.796875 4.296875 31.1875 5.09375 
+Q 31.59375 5.90625 31.59375 7.90625 
+L 31.59375 60.59375 
+Q 31.59375 62 31.5 62.59375 
+Q 31.40625 63.203125 30.953125 63.703125 
+Q 30.5 64.203125 29.5 64.390625 
+Q 28.5 64.59375 24.09375 64.59375 
+Q 20.203125 64.59375 17.59375 64.34375 
+Q 15 64.09375 13 63.140625 
+Q 11 62.203125 9.953125 61 
+Q 8.90625 59.796875 8.046875 57.34375 
+Q 7.203125 54.90625 6.84375 52.296875 
+Q 6.5 49.703125 6.09375 45.203125 
+z
+" id="CMUSerif-Roman-84"/>
+      <path d="M 2.796875 -16.296875 
+Q 8.09375 -16.296875 9.34375 -15.640625 
+Q 10.59375 -15 10.59375 -11.796875 
+L 10.59375 35 
+Q 10.59375 38.296875 9.34375 39.140625 
+Q 8.09375 40 2.796875 40 
+L 2.796875 43.09375 
+L 17.203125 44.203125 
+L 17.203125 37.59375 
+Q 23.203125 44.203125 31.203125 44.203125 
+Q 39.703125 44.203125 45.890625 37.59375 
+Q 52.09375 31 52.09375 21.59375 
+Q 52.09375 12.09375 45.5 5.5 
+Q 38.90625 -1.09375 29.796875 -1.09375 
+Q 24.796875 -1.09375 21.4375 1.453125 
+Q 18.09375 4 17.5 5.90625 
+L 17.5 5 
+L 17.5 -11.796875 
+Q 17.5 -15 18.75 -15.640625 
+Q 20 -16.296875 25.296875 -16.296875 
+L 25.296875 -19.40625 
+Q 14.796875 -19.09375 14 -19.09375 
+Q 13 -19.09375 2.796875 -19.40625 
+z
+M 17.5 11.40625 
+Q 17.5 9.90625 17.703125 9.34375 
+Q 17.90625 8.796875 18.90625 7.203125 
+Q 22.90625 1.09375 29.40625 1.09375 
+Q 35.09375 1.09375 39.4375 6.9375 
+Q 43.796875 12.796875 43.796875 21.59375 
+Q 43.796875 30 39.84375 35.84375 
+Q 35.90625 41.703125 30.40625 41.703125 
+Q 26.5 41.703125 23.09375 39.59375 
+Q 19.703125 37.5 17.5 33.703125 
+z
+" id="CMUSerif-Roman-112"/>
+      <path d="M 4.203125 9.5 
+Q 4.203125 18 14.203125 22.5 
+Q 20.203125 25.40625 32.59375 26.09375 
+L 32.59375 29.796875 
+Q 32.59375 36 29.34375 39.296875 
+Q 26.09375 42.59375 22 42.59375 
+Q 14.703125 42.59375 11.203125 38 
+Q 14.203125 37.90625 15.25 36.40625 
+Q 16.296875 34.90625 16.296875 33.40625 
+Q 16.296875 31.40625 15.046875 30.09375 
+Q 13.796875 28.796875 11.703125 28.796875 
+Q 9.703125 28.796875 8.390625 30.046875 
+Q 7.09375 31.296875 7.09375 33.5 
+Q 7.09375 38.40625 11.5 41.59375 
+Q 15.90625 44.796875 22.203125 44.796875 
+Q 30.40625 44.796875 35.90625 39.296875 
+Q 37.59375 37.59375 38.4375 35.390625 
+Q 39.296875 33.203125 39.390625 31.75 
+Q 39.5 30.296875 39.5 27.5 
+L 39.5 7.5 
+Q 39.5 6.90625 39.703125 5.953125 
+Q 39.90625 5 40.796875 3.75 
+Q 41.703125 2.5 43.203125 2.5 
+Q 46.796875 2.5 46.796875 8.90625 
+L 46.796875 14.5 
+L 49.296875 14.5 
+L 49.296875 8.90625 
+Q 49.296875 3.59375 46.5 1.5 
+Q 43.703125 -0.59375 41.09375 -0.59375 
+Q 37.796875 -0.59375 35.6875 1.84375 
+Q 33.59375 4.296875 33.296875 7.59375 
+Q 31.796875 3.796875 28.34375 1.34375 
+Q 24.90625 -1.09375 20.203125 -1.09375 
+Q 16.59375 -1.09375 13.1875 -0.1875 
+Q 9.796875 0.703125 7 3.203125 
+Q 4.203125 5.703125 4.203125 9.5 
+z
+M 11.90625 9.59375 
+Q 11.90625 5.90625 14.546875 3.5 
+Q 17.203125 1.09375 20.90625 1.09375 
+Q 25.09375 1.09375 28.84375 4.34375 
+Q 32.59375 7.59375 32.59375 14 
+L 32.59375 24 
+Q 21.5 23.59375 16.703125 19.1875 
+Q 11.90625 14.796875 11.90625 9.59375 
+z
+" id="CMUSerif-Roman-97"/>
+      <path d="M 4.59375 1.3125 
+Q 4.640625 1.5625 4.8125 2.1875 
+Q 4.984375 2.828125 5.25 3.171875 
+Q 5.515625 3.515625 6 3.515625 
+Q 14.59375 3.515625 17.390625 4 
+Q 20.0625 4.6875 20.609375 6.890625 
+L 34.28125 61.8125 
+Q 34.71875 63.03125 34.71875 64.015625 
+Q 34.71875 64.796875 31.203125 64.796875 
+L 25.390625 64.796875 
+Q 18.703125 64.796875 15.0625 62.734375 
+Q 11.421875 60.6875 9.71875 57.3125 
+Q 8.015625 53.953125 5.328125 46.296875 
+Q 4.984375 45.40625 4.296875 45.40625 
+L 3.421875 45.40625 
+Q 2.390625 45.40625 2.390625 46.6875 
+L 9.515625 67.390625 
+Q 9.71875 68.3125 10.5 68.3125 
+L 69.578125 68.3125 
+Q 70.609375 68.3125 70.609375 67 
+L 67.28125 46.296875 
+Q 67.28125 46 66.9375 45.703125 
+Q 66.609375 45.40625 66.3125 45.40625 
+L 65.375 45.40625 
+Q 64.40625 45.40625 64.40625 46.6875 
+Q 65.484375 53.765625 65.484375 56.6875 
+Q 65.484375 60.203125 64.015625 62 
+Q 62.546875 63.8125 60.203125 64.296875 
+Q 57.859375 64.796875 54.109375 64.796875 
+L 48.1875 64.796875 
+Q 45.515625 64.796875 44.578125 64.296875 
+Q 43.65625 63.8125 43.015625 61.375 
+L 29.296875 6.5 
+Q 29.25 6.296875 29.21875 6.09375 
+Q 29.203125 5.90625 29.109375 5.609375 
+Q 29.109375 4.34375 30.609375 4 
+Q 33.203125 3.515625 41.703125 3.515625 
+Q 42.671875 3.515625 42.671875 2.203125 
+Q 42.328125 0.78125 42.125 0.390625 
+Q 41.9375 0 41.015625 0 
+L 5.609375 0 
+Q 4.59375 0 4.59375 1.3125 
+z
+" id="Cmmi10-84"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+L 5.703125 3.09375 
+Q 11.09375 3.09375 12.34375 4 
+Q 13.59375 4.90625 13.59375 7.796875 
+L 13.59375 60.5 
+Q 13.59375 63.40625 12.34375 64.296875 
+Q 11.09375 65.203125 5.703125 65.203125 
+L 3.296875 65.203125 
+L 3.296875 68.296875 
+Q 6.796875 68 18.09375 68 
+Q 29.296875 68 32.796875 68.296875 
+L 32.796875 65.203125 
+L 30.40625 65.203125 
+Q 25 65.203125 23.75 64.296875 
+Q 22.5 63.40625 22.5 60.5 
+L 22.5 28.703125 
+L 53.796875 58.59375 
+Q 55.59375 60.203125 55.59375 61.90625 
+Q 55.59375 62.5 55.34375 63.140625 
+Q 55.09375 63.796875 53.9375 64.5 
+Q 52.796875 65.203125 51 65.203125 
+L 51 68.296875 
+Q 54.40625 68 63.703125 68 
+Q 69.59375 68 72.203125 68.296875 
+L 72.203125 65.203125 
+Q 63.90625 65.09375 58 59.203125 
+L 40 41.90625 
+L 63.09375 7.90625 
+Q 65.203125 4.796875 67.25 3.9375 
+Q 69.296875 3.09375 73.59375 3.09375 
+L 73.59375 0 
+Q 67.296875 0.296875 62.09375 0.296875 
+Q 51.296875 0.296875 47.796875 0 
+L 47.796875 3.09375 
+Q 53.703125 3.09375 53.703125 6.09375 
+Q 53.703125 7.203125 52.203125 9.5 
+L 34.09375 36.296875 
+L 22.5 25.296875 
+L 22.5 7.796875 
+Q 22.5 4.90625 23.75 4 
+Q 25 3.09375 30.40625 3.09375 
+L 32.796875 3.09375 
+L 32.796875 0 
+Q 29.296875 0.296875 18 0.296875 
+Q 6.796875 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-75"/>
+     </defs>
+     <g transform="translate(8.72 141.042)rotate(-90)scale(0.1 -0.1)">
+      <use xlink:href="#CMUSerif-Roman-84"/>
+      <use transform="translate(72.199982 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(116.599976 0)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(199.899963 0)" xlink:href="#CMUSerif-Roman-112"/>
+      <use transform="translate(255.399948 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(299.799942 0)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(338.899933 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(388.899918 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(427.699905 0)" xlink:href="#CMUSerif-Roman-117"/>
+      <use transform="translate(483.19989 0)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(522.299881 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(566.699875 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(599.999863 0)" xlink:href="#Cmmi10-84"/>
+      <use transform="translate(658.3983 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(691.698288 0)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(719.498276 0)" xlink:href="#CMUSerif-Roman-75"/>
+      <use transform="translate(797.198257 0)" xlink:href="#CMUSerif-Roman-93"/>
+     </g>
+    </g>
+   </g>
+   <g id="line2d_43">
+    <path clip-path="url(#p70b35b528f)" d="M -1 209.323214 
+L 223.107611 -1 
+L 223.107611 -1 
+" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
+   </g>
+   <g id="line2d_44">
+    <path clip-path="url(#p70b35b528f)" d="M -1 70.434351 
+L 146.991516 70.434351 
+" style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="line2d_45">
+    <path clip-path="url(#p70b35b528f)" d="M 146.991516 197.316 
+L 146.991516 70.434351 
+" style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="line2d_46">
+    <path clip-path="url(#p70b35b528f)" d="M 146.991516 51.03 
+L 181.630061 18.522 
+" style="fill:none;stroke:#000000;stroke-dasharray:2.22,0.96;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="patch_3">
+    <path d="M 34.02 197.316 
+L 34.02 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_4">
+    <path d="M 224.532 197.316 
+L 224.532 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_5">
+    <path d="M 34.02 197.316 
+L 224.532 197.316 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_6">
+    <path d="M 34.02 2.268 
+L 224.532 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="text_12">
+    <!-- $n_{\rm H}$^EOS_gamma_effective -->
+    <defs>
+     <path d="M 34.421875 72.90625 
+L 56.6875 45.703125 
+L 48 45.703125 
+L 30.078125 64.984375 
+L 12.203125 45.703125 
+L 3.515625 45.703125 
+L 25.78125 72.90625 
+z
+" id="DejaVuSansMono-94"/>
+     <path d="M 9.625 72.90625 
+L 52.875 72.90625 
+L 52.875 64.59375 
+L 19.484375 64.59375 
+L 19.484375 43.015625 
+L 51.421875 43.015625 
+L 51.421875 34.71875 
+L 19.484375 34.71875 
+L 19.484375 8.296875 
+L 53.8125 8.296875 
+L 53.8125 0 
+L 9.625 0 
+z
+" id="DejaVuSansMono-69"/>
+     <path d="M 44.1875 36.375 
+Q 44.1875 52.4375 40.890625 59.328125 
+Q 37.59375 66.21875 30.078125 66.21875 
+Q 22.609375 66.21875 19.3125 59.328125 
+Q 16.015625 52.4375 16.015625 36.375 
+Q 16.015625 20.359375 19.3125 13.46875 
+Q 22.609375 6.59375 30.078125 6.59375 
+Q 37.59375 6.59375 40.890625 13.453125 
+Q 44.1875 20.3125 44.1875 36.375 
+z
+M 54.5 36.375 
+Q 54.5 17.328125 48.46875 7.953125 
+Q 42.4375 -1.421875 30.078125 -1.421875 
+Q 17.71875 -1.421875 11.71875 7.90625 
+Q 5.71875 17.234375 5.71875 36.375 
+Q 5.71875 55.46875 11.75 64.84375 
+Q 17.78125 74.21875 30.078125 74.21875 
+Q 42.4375 74.21875 48.46875 64.84375 
+Q 54.5 55.46875 54.5 36.375 
+z
+" id="DejaVuSansMono-79"/>
+     <path d="M 49.421875 70.40625 
+L 49.421875 60.40625 
+Q 44.921875 63.28125 40.40625 64.75 
+Q 35.890625 66.21875 31.296875 66.21875 
+Q 24.3125 66.21875 20.265625 62.96875 
+Q 16.21875 59.71875 16.21875 54.203125 
+Q 16.21875 49.359375 18.875 46.8125 
+Q 21.53125 44.28125 28.8125 42.578125 
+L 33.984375 41.40625 
+Q 44.234375 39.015625 48.921875 33.890625 
+Q 53.609375 28.765625 53.609375 19.921875 
+Q 53.609375 9.515625 47.15625 4.046875 
+Q 40.71875 -1.421875 28.421875 -1.421875 
+Q 23.296875 -1.421875 18.109375 -0.3125 
+Q 12.9375 0.78125 7.71875 2.984375 
+L 7.71875 13.484375 
+Q 13.328125 9.90625 18.328125 8.25 
+Q 23.34375 6.59375 28.421875 6.59375 
+Q 35.890625 6.59375 40.03125 9.9375 
+Q 44.1875 13.28125 44.1875 19.28125 
+Q 44.1875 24.75 41.328125 27.625 
+Q 38.484375 30.515625 31.390625 32.078125 
+L 26.125 33.296875 
+Q 15.96875 35.59375 11.375 40.234375 
+Q 6.78125 44.875 6.78125 52.6875 
+Q 6.78125 62.453125 13.34375 68.328125 
+Q 19.921875 74.21875 30.8125 74.21875 
+Q 35.015625 74.21875 39.640625 73.265625 
+Q 44.28125 72.3125 49.421875 70.40625 
+z
+" id="DejaVuSansMono-83"/>
+     <path d="M 60.203125 -19.671875 
+L 60.203125 -23.578125 
+L 0 -23.578125 
+L 0 -19.671875 
+z
+" id="DejaVuSansMono-95"/>
+     <path d="M 41.890625 27.78125 
+Q 41.890625 37.890625 38.59375 43.140625 
+Q 35.296875 48.390625 29 48.390625 
+Q 22.40625 48.390625 18.9375 43.140625 
+Q 15.484375 37.890625 15.484375 27.78125 
+Q 15.484375 17.671875 18.96875 12.375 
+Q 22.46875 7.078125 29.109375 7.078125 
+Q 35.296875 7.078125 38.59375 12.390625 
+Q 41.890625 17.71875 41.890625 27.78125 
+z
+M 50.875 3.515625 
+Q 50.875 -8.796875 45.0625 -15.140625 
+Q 39.265625 -21.484375 27.984375 -21.484375 
+Q 24.265625 -21.484375 20.203125 -20.796875 
+Q 16.15625 -20.125 12.109375 -18.796875 
+L 12.109375 -9.90625 
+Q 16.890625 -12.15625 20.796875 -13.234375 
+Q 24.703125 -14.3125 27.984375 -14.3125 
+Q 35.25 -14.3125 38.5625 -10.34375 
+Q 41.890625 -6.390625 41.890625 2.203125 
+L 41.890625 2.59375 
+L 41.890625 8.6875 
+Q 39.75 4.109375 36.03125 1.859375 
+Q 32.328125 -0.390625 27 -0.390625 
+Q 17.4375 -0.390625 11.71875 7.265625 
+Q 6 14.9375 6 27.78125 
+Q 6 40.671875 11.71875 48.328125 
+Q 17.4375 56 27 56 
+Q 32.28125 56 35.9375 53.90625 
+Q 39.59375 51.8125 41.890625 47.40625 
+L 41.890625 54.5 
+L 50.875 54.5 
+z
+" id="DejaVuSansMono-103"/>
+     <path d="M 34.28125 27.484375 
+L 31.296875 27.484375 
+Q 23.4375 27.484375 19.453125 24.71875 
+Q 15.484375 21.96875 15.484375 16.5 
+Q 15.484375 11.578125 18.453125 8.84375 
+Q 21.4375 6.109375 26.703125 6.109375 
+Q 34.125 6.109375 38.375 11.25 
+Q 42.625 16.40625 42.671875 25.484375 
+L 42.671875 27.484375 
+z
+M 51.703125 31.203125 
+L 51.703125 0 
+L 42.671875 0 
+L 42.671875 8.109375 
+Q 39.796875 3.21875 35.421875 0.890625 
+Q 31.0625 -1.421875 24.8125 -1.421875 
+Q 16.453125 -1.421875 11.46875 3.296875 
+Q 6.5 8.015625 6.5 15.921875 
+Q 6.5 25.046875 12.625 29.78125 
+Q 18.75 34.515625 30.609375 34.515625 
+L 42.671875 34.515625 
+L 42.671875 35.9375 
+Q 42.625 42.484375 39.34375 45.4375 
+Q 36.078125 48.390625 28.90625 48.390625 
+Q 24.3125 48.390625 19.625 47.0625 
+Q 14.9375 45.75 10.5 43.21875 
+L 10.5 52.203125 
+Q 15.484375 54.109375 20.046875 55.046875 
+Q 24.609375 56 28.90625 56 
+Q 35.6875 56 40.5 54 
+Q 45.3125 52 48.296875 48 
+Q 50.140625 45.5625 50.921875 41.96875 
+Q 51.703125 38.375 51.703125 31.203125 
+z
+" id="DejaVuSansMono-97"/>
+     <path d="M 33.015625 49.125 
+Q 34.671875 52.640625 37.234375 54.3125 
+Q 39.796875 56 43.40625 56 
+Q 50 56 52.703125 50.890625 
+Q 55.421875 45.796875 55.421875 31.6875 
+L 55.421875 0 
+L 47.21875 0 
+L 47.21875 31.296875 
+Q 47.21875 42.875 45.921875 45.671875 
+Q 44.625 48.484375 41.21875 48.484375 
+Q 37.3125 48.484375 35.859375 45.484375 
+Q 34.421875 42.484375 34.421875 31.296875 
+L 34.421875 0 
+L 26.21875 0 
+L 26.21875 31.296875 
+Q 26.21875 43.015625 24.828125 45.75 
+Q 23.4375 48.484375 19.828125 48.484375 
+Q 16.265625 48.484375 14.875 45.484375 
+Q 13.484375 42.484375 13.484375 31.296875 
+L 13.484375 0 
+L 5.328125 0 
+L 5.328125 54.6875 
+L 13.484375 54.6875 
+L 13.484375 50 
+Q 15.09375 52.9375 17.5 54.46875 
+Q 19.921875 56 23 56 
+Q 26.703125 56 29.171875 54.296875 
+Q 31.640625 52.59375 33.015625 49.125 
+z
+" id="DejaVuSansMono-109"/>
+     <path d="M 54.296875 29.59375 
+L 54.296875 25.203125 
+L 15.375 25.203125 
+L 15.375 24.90625 
+Q 15.375 15.96875 20.03125 11.078125 
+Q 24.703125 6.203125 33.203125 6.203125 
+Q 37.5 6.203125 42.1875 7.5625 
+Q 46.875 8.9375 52.203125 11.71875 
+L 52.203125 2.78125 
+Q 47.078125 0.6875 42.3125 -0.359375 
+Q 37.546875 -1.421875 33.109375 -1.421875 
+Q 20.359375 -1.421875 13.171875 6.21875 
+Q 6 13.875 6 27.296875 
+Q 6 40.375 13.03125 48.1875 
+Q 20.0625 56 31.78125 56 
+Q 42.234375 56 48.265625 48.921875 
+Q 54.296875 41.84375 54.296875 29.59375 
+z
+M 45.3125 32.234375 
+Q 45.125 40.140625 41.578125 44.265625 
+Q 38.03125 48.390625 31.390625 48.390625 
+Q 24.90625 48.390625 20.703125 44.09375 
+Q 16.5 39.796875 15.71875 32.171875 
+z
+" id="DejaVuSansMono-101"/>
+     <path d="M 51.90625 75.984375 
+L 51.90625 68.5 
+L 41.703125 68.5 
+Q 36.859375 68.5 34.984375 66.515625 
+Q 33.109375 64.546875 33.109375 59.515625 
+L 33.109375 54.6875 
+L 51.90625 54.6875 
+L 51.90625 47.703125 
+L 33.109375 47.703125 
+L 33.109375 0 
+L 24.125 0 
+L 24.125 47.703125 
+L 9.515625 47.703125 
+L 9.515625 54.6875 
+L 24.125 54.6875 
+L 24.125 58.5 
+Q 24.125 67.484375 28.25 71.734375 
+Q 32.375 75.984375 41.109375 75.984375 
+z
+" id="DejaVuSansMono-102"/>
+     <path d="M 51.8125 2.78125 
+Q 48.1875 0.6875 44.359375 -0.359375 
+Q 40.53125 -1.421875 36.53125 -1.421875 
+Q 23.828125 -1.421875 16.671875 6.1875 
+Q 9.515625 13.8125 9.515625 27.296875 
+Q 9.515625 40.765625 16.671875 48.375 
+Q 23.828125 56 36.53125 56 
+Q 40.484375 56 44.234375 54.96875 
+Q 48 53.953125 51.8125 51.8125 
+L 51.8125 42.390625 
+Q 48.25 45.5625 44.65625 46.96875 
+Q 41.0625 48.390625 36.53125 48.390625 
+Q 28.078125 48.390625 23.53125 42.921875 
+Q 19 37.453125 19 27.296875 
+Q 19 17.1875 23.5625 11.6875 
+Q 28.125 6.203125 36.53125 6.203125 
+Q 41.21875 6.203125 44.921875 7.640625 
+Q 48.640625 9.078125 51.8125 12.109375 
+z
+" id="DejaVuSansMono-99"/>
+     <path d="M 29.984375 70.21875 
+L 29.984375 54.6875 
+L 50.390625 54.6875 
+L 50.390625 47.703125 
+L 29.984375 47.703125 
+L 29.984375 18.015625 
+Q 29.984375 11.96875 32.28125 9.5625 
+Q 34.578125 7.171875 40.28125 7.171875 
+L 50.390625 7.171875 
+L 50.390625 0 
+L 39.40625 0 
+Q 29.296875 0 25.140625 4.046875 
+Q 21 8.109375 21 18.015625 
+L 21 47.703125 
+L 6.390625 47.703125 
+L 6.390625 54.6875 
+L 21 54.6875 
+L 21 70.21875 
+z
+" id="DejaVuSansMono-116"/>
+     <path d="M 12.5 54.6875 
+L 35.5 54.6875 
+L 35.5 6.984375 
+L 53.328125 6.984375 
+L 53.328125 0 
+L 8.6875 0 
+L 8.6875 6.984375 
+L 26.515625 6.984375 
+L 26.515625 47.703125 
+L 12.5 47.703125 
+z
+M 26.515625 75.984375 
+L 35.5 75.984375 
+L 35.5 64.59375 
+L 26.515625 64.59375 
+z
+" id="DejaVuSansMono-105"/>
+     <path d="M 4.890625 54.6875 
+L 14.203125 54.6875 
+L 30.078125 8.796875 
+L 46 54.6875 
+L 55.328125 54.6875 
+L 35.890625 0 
+L 24.3125 0 
+z
+" id="DejaVuSansMono-118"/>
+    </defs>
+    <g transform="translate(145.146967 64.529336)rotate(-43)scale(0.065 -0.065)">
+     <use transform="translate(0 0.015625)" xlink:href="#Cmmi10-110"/>
+     <use transform="translate(60.009766 -16.990625)scale(0.7)" xlink:href="#Cmr10-72"/>
+     <use transform="translate(118.887109 0.015625)" xlink:href="#DejaVuSansMono-94"/>
+     <use transform="translate(179.092187 0.015625)" xlink:href="#DejaVuSansMono-69"/>
+     <use transform="translate(239.297266 0.015625)" xlink:href="#DejaVuSansMono-79"/>
+     <use transform="translate(299.502344 0.015625)" xlink:href="#DejaVuSansMono-83"/>
+     <use transform="translate(359.707422 0.015625)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(419.9125 0.015625)" xlink:href="#DejaVuSansMono-103"/>
+     <use transform="translate(480.117578 0.015625)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(540.322656 0.015625)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(600.527734 0.015625)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(660.732813 0.015625)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(720.937891 0.015625)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(781.142969 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(841.348047 0.015625)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(901.553125 0.015625)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(961.758203 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(1021.963281 0.015625)" xlink:href="#DejaVuSansMono-99"/>
+     <use transform="translate(1082.168359 0.015625)" xlink:href="#DejaVuSansMono-116"/>
+     <use transform="translate(1142.373437 0.015625)" xlink:href="#DejaVuSansMono-105"/>
+     <use transform="translate(1202.578516 0.015625)" xlink:href="#DejaVuSansMono-118"/>
+     <use transform="translate(1262.783594 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+    </g>
+   </g>
+   <g id="text_13">
+    <!-- EOS_density_norm_H_p_cm3 -->
+    <defs>
+     <path d="M 41.890625 47.703125 
+L 41.890625 75.984375 
+L 50.875 75.984375 
+L 50.875 0 
+L 41.890625 0 
+L 41.890625 6.890625 
+Q 39.65625 2.828125 35.90625 0.703125 
+Q 32.171875 -1.421875 27.296875 -1.421875 
+Q 17.390625 -1.421875 11.6875 6.265625 
+Q 6 13.96875 6 27.484375 
+Q 6 40.828125 11.71875 48.40625 
+Q 17.4375 56 27.296875 56 
+Q 32.234375 56 35.984375 53.875 
+Q 39.75 51.765625 41.890625 47.703125 
+z
+M 15.484375 27.296875 
+Q 15.484375 16.84375 18.796875 11.515625 
+Q 22.125 6.203125 28.609375 6.203125 
+Q 35.109375 6.203125 38.5 11.5625 
+Q 41.890625 16.9375 41.890625 27.296875 
+Q 41.890625 37.703125 38.5 43.046875 
+Q 35.109375 48.390625 28.609375 48.390625 
+Q 22.125 48.390625 18.796875 43.0625 
+Q 15.484375 37.75 15.484375 27.296875 
+z
+" id="DejaVuSansMono-100"/>
+     <path d="M 51.3125 33.890625 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 33.890625 
+Q 42.28125 41.265625 39.6875 44.71875 
+Q 37.109375 48.1875 31.59375 48.1875 
+Q 25.296875 48.1875 21.890625 43.71875 
+Q 18.5 39.265625 18.5 30.90625 
+L 18.5 0 
+L 9.515625 0 
+L 9.515625 54.6875 
+L 18.5 54.6875 
+L 18.5 46.484375 
+Q 20.90625 51.171875 25 53.578125 
+Q 29.109375 56 34.71875 56 
+Q 43.0625 56 47.1875 50.5 
+Q 51.3125 45.015625 51.3125 33.890625 
+z
+" id="DejaVuSansMono-110"/>
+     <path d="M 47.515625 52.78125 
+L 47.515625 44 
+Q 43.65625 46.234375 39.75 47.359375 
+Q 35.84375 48.484375 31.78125 48.484375 
+Q 25.6875 48.484375 22.671875 46.5 
+Q 19.671875 44.53125 19.671875 40.484375 
+Q 19.671875 36.8125 21.921875 35 
+Q 24.171875 33.203125 33.109375 31.5 
+L 36.71875 30.8125 
+Q 43.40625 29.546875 46.84375 25.734375 
+Q 50.296875 21.921875 50.296875 15.828125 
+Q 50.296875 7.71875 44.53125 3.140625 
+Q 38.765625 -1.421875 28.515625 -1.421875 
+Q 24.46875 -1.421875 20.015625 -0.5625 
+Q 15.578125 0.296875 10.40625 2 
+L 10.40625 11.28125 
+Q 15.4375 8.6875 20.015625 7.390625 
+Q 24.609375 6.109375 28.71875 6.109375 
+Q 34.671875 6.109375 37.9375 8.515625 
+Q 41.21875 10.9375 41.21875 15.28125 
+Q 41.21875 21.53125 29.25 23.921875 
+L 28.859375 24.03125 
+L 25.484375 24.703125 
+Q 17.71875 26.21875 14.15625 29.8125 
+Q 10.59375 33.40625 10.59375 39.59375 
+Q 10.59375 47.46875 15.90625 51.734375 
+Q 21.234375 56 31.109375 56 
+Q 35.5 56 39.546875 55.1875 
+Q 43.609375 54.390625 47.515625 52.78125 
+z
+" id="DejaVuSansMono-115"/>
+     <path d="M 41.890625 17.578125 
+Q 39.65625 11.859375 36.1875 2.546875 
+Q 31.34375 -10.359375 29.6875 -13.1875 
+Q 27.4375 -17 24.0625 -18.890625 
+Q 20.703125 -20.796875 16.21875 -20.796875 
+L 8.984375 -20.796875 
+L 8.984375 -13.28125 
+L 14.3125 -13.28125 
+Q 18.265625 -13.28125 20.5 -10.984375 
+Q 22.75 -8.6875 26.21875 0.875 
+L 5.078125 54.6875 
+L 14.59375 54.6875 
+L 30.8125 11.921875 
+L 46.78125 54.6875 
+L 56.296875 54.6875 
+z
+" id="DejaVuSansMono-121"/>
+     <path d="M 30.078125 48.390625 
+Q 23.25 48.390625 19.734375 43.0625 
+Q 16.21875 37.75 16.21875 27.296875 
+Q 16.21875 16.890625 19.734375 11.546875 
+Q 23.25 6.203125 30.078125 6.203125 
+Q 36.96875 6.203125 40.484375 11.546875 
+Q 44 16.890625 44 27.296875 
+Q 44 37.75 40.484375 43.0625 
+Q 36.96875 48.390625 30.078125 48.390625 
+z
+M 30.078125 56 
+Q 41.453125 56 47.484375 48.625 
+Q 53.515625 41.265625 53.515625 27.296875 
+Q 53.515625 13.28125 47.5 5.921875 
+Q 41.5 -1.421875 30.078125 -1.421875 
+Q 18.703125 -1.421875 12.6875 5.921875 
+Q 6.6875 13.28125 6.6875 27.296875 
+Q 6.6875 41.265625 12.6875 48.625 
+Q 18.703125 56 30.078125 56 
+z
+" id="DejaVuSansMono-111"/>
+     <path d="M 56.390625 43.40625 
+Q 53.515625 45.65625 50.53125 46.671875 
+Q 47.5625 47.703125 44 47.703125 
+Q 35.59375 47.703125 31.140625 42.421875 
+Q 26.703125 37.15625 26.703125 27.203125 
+L 26.703125 0 
+L 17.671875 0 
+L 17.671875 54.6875 
+L 26.703125 54.6875 
+L 26.703125 44 
+Q 28.953125 49.8125 33.609375 52.90625 
+Q 38.28125 56 44.671875 56 
+Q 48 56 50.875 55.171875 
+Q 53.765625 54.34375 56.390625 52.59375 
+z
+" id="DejaVuSansMono-114"/>
+     <path d="M 6.6875 72.90625 
+L 16.609375 72.90625 
+L 16.609375 43.015625 
+L 43.609375 43.015625 
+L 43.609375 72.90625 
+L 53.515625 72.90625 
+L 53.515625 0 
+L 43.609375 0 
+L 43.609375 34.71875 
+L 16.609375 34.71875 
+L 16.609375 0 
+L 6.6875 0 
+z
+" id="DejaVuSansMono-72"/>
+     <path d="M 18.3125 6.890625 
+L 18.3125 -20.796875 
+L 9.28125 -20.796875 
+L 9.28125 54.6875 
+L 18.3125 54.6875 
+L 18.3125 47.703125 
+Q 20.5625 51.765625 24.296875 53.875 
+Q 28.03125 56 32.90625 56 
+Q 42.828125 56 48.46875 48.328125 
+Q 54.109375 40.671875 54.109375 27.09375 
+Q 54.109375 13.765625 48.4375 6.171875 
+Q 42.78125 -1.421875 32.90625 -1.421875 
+Q 27.9375 -1.421875 24.1875 0.703125 
+Q 20.453125 2.828125 18.3125 6.890625 
+z
+M 44.671875 27.296875 
+Q 44.671875 37.75 41.375 43.0625 
+Q 38.09375 48.390625 31.59375 48.390625 
+Q 25.046875 48.390625 21.671875 43.046875 
+Q 18.3125 37.703125 18.3125 27.296875 
+Q 18.3125 16.9375 21.671875 11.5625 
+Q 25.046875 6.203125 31.59375 6.203125 
+Q 38.09375 6.203125 41.375 11.515625 
+Q 44.671875 16.84375 44.671875 27.296875 
+z
+" id="DejaVuSansMono-112"/>
+     <path d="M 37.890625 39.015625 
+Q 45.0625 37.109375 48.875 32.25 
+Q 52.6875 27.390625 52.6875 20.125 
+Q 52.6875 10.0625 45.921875 4.3125 
+Q 39.15625 -1.421875 27.203125 -1.421875 
+Q 22.171875 -1.421875 16.9375 -0.484375 
+Q 11.71875 0.4375 6.6875 2.203125 
+L 6.6875 12.015625 
+Q 11.671875 9.421875 16.5 8.15625 
+Q 21.34375 6.890625 26.125 6.890625 
+Q 34.234375 6.890625 38.578125 10.546875 
+Q 42.921875 14.203125 42.921875 21.09375 
+Q 42.921875 27.4375 38.578125 31.171875 
+Q 34.234375 34.90625 26.8125 34.90625 
+L 19.28125 34.90625 
+L 19.28125 43.015625 
+L 26.8125 43.015625 
+Q 33.59375 43.015625 37.40625 45.984375 
+Q 41.21875 48.96875 41.21875 54.296875 
+Q 41.21875 59.90625 37.671875 62.90625 
+Q 34.125 65.921875 27.59375 65.921875 
+Q 23.25 65.921875 18.609375 64.9375 
+Q 13.96875 63.96875 8.890625 62.015625 
+L 8.890625 71.09375 
+Q 14.796875 72.65625 19.40625 73.4375 
+Q 24.03125 74.21875 27.59375 74.21875 
+Q 38.234375 74.21875 44.609375 68.875 
+Q 50.984375 63.53125 50.984375 54.6875 
+Q 50.984375 48.6875 47.625 44.671875 
+Q 44.28125 40.671875 37.890625 39.015625 
+z
+" id="DejaVuSansMono-51"/>
+    </defs>
+    <g transform="translate(144.955236 192.590474)rotate(-90)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-69"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-79"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-83"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-95"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-100"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-101"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-110"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-115"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-105"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-116"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-121"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-95"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-110"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-111"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-114"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-109"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-72"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-112"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-99"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1384.716797" xlink:href="#DejaVuSansMono-51"/>
+    </g>
+   </g>
+   <g id="text_14">
+    <!-- EOS_temperature_norm_K -->
+    <defs>
+     <path d="M 9.515625 20.703125 
+L 9.515625 54.59375 
+L 18.5 54.59375 
+L 18.5 20.703125 
+Q 18.5 13.328125 21.109375 9.859375 
+Q 23.734375 6.390625 29.203125 6.390625 
+Q 35.546875 6.390625 38.90625 10.859375 
+Q 42.28125 15.328125 42.28125 23.6875 
+L 42.28125 54.59375 
+L 51.3125 54.59375 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 8.203125 
+Q 39.890625 3.46875 35.765625 1.015625 
+Q 31.640625 -1.421875 26.125 -1.421875 
+Q 17.71875 -1.421875 13.609375 4.078125 
+Q 9.515625 9.578125 9.515625 20.703125 
+z
+" id="DejaVuSansMono-117"/>
+     <path d="M 6.6875 72.90625 
+L 16.609375 72.90625 
+L 16.609375 40.484375 
+L 47.40625 72.90625 
+L 58.984375 72.90625 
+L 30.609375 43.109375 
+L 59.8125 0 
+L 47.90625 0 
+L 24.125 36.53125 
+L 16.609375 28.515625 
+L 16.609375 0 
+L 6.6875 0 
+z
+" id="DejaVuSansMono-75"/>
+    </defs>
+    <g transform="translate(37.862259 67.750649)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-69"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-79"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-83"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-95"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-116"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-101"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-109"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-112"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-101"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-114"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-97"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-116"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-117"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-114"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-101"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-95"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-110"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-111"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-114"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-75"/>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p70b35b528f">
+   <rect height="195.048" width="190.512" x="34.02" y="2.268"/>
+  </clipPath>
+ </defs>
+</svg>
diff --git a/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_Z_dep.svg b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_Z_dep.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5314e6c83b0e394cc1262eb59fbfaf763151923a
--- /dev/null
+++ b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_SF_Z_dep.svg
@@ -0,0 +1,2649 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="226.8pt" version="1.1" viewBox="0 0 226.8 226.8" width="226.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <style type="text/css">
+*{stroke-linecap:butt;stroke-linejoin:round;}
+  </style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 226.8 
+L 226.8 226.8 
+L 226.8 0 
+L 0 0 
+z
+" style="fill:#ffffff;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 34.02 197.316 
+L 224.532 197.316 
+L 224.532 2.268 
+L 34.02 2.268 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="PathCollection_1">
+    <defs>
+     <path d="M 0 1 
+C 0.265203 1 0.51958 0.894634 0.707107 0.707107 
+C 0.894634 0.51958 1 0.265203 1 0 
+C 1 -0.265203 0.894634 -0.51958 0.707107 -0.707107 
+C 0.51958 -0.894634 0.265203 -1 0 -1 
+C -0.265203 -1 -0.51958 -0.894634 -0.707107 -0.707107 
+C -0.894634 -0.51958 -1 -0.265203 -1 0 
+C -1 0.265203 -0.894634 0.51958 -0.707107 0.707107 
+C -0.51958 0.894634 -0.265203 1 0 1 
+z
+" id="mfeca7ee311" style="stroke:#000000;"/>
+    </defs>
+    <g clip-path="url(#p23ab05f3c8)">
+     <use style="stroke:#000000;" x="151.076832" xlink:href="#mfeca7ee311" y="99.792"/>
+    </g>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 
+L 0 3.5 
+" id="mf7651b78e9" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mf7651b78e9" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- $\mathdefault{10^{-7}}$ -->
+      <defs>
+       <path d="M 8.90625 57.09375 
+L 8.90625 60.203125 
+Q 20.90625 60.203125 27.09375 66.59375 
+Q 28.796875 66.59375 29.09375 66.1875 
+Q 29.40625 65.796875 29.40625 64 
+L 29.40625 7.90625 
+Q 29.40625 4.90625 30.84375 4 
+Q 32.296875 3.09375 38.703125 3.09375 
+L 41.90625 3.09375 
+L 41.90625 0 
+Q 38.40625 0.296875 25.703125 0.296875 
+Q 13 0.296875 9.5 0 
+L 9.5 3.09375 
+L 12.703125 3.09375 
+Q 19 3.09375 20.5 4 
+Q 22 4.90625 22 7.90625 
+L 22 59.703125 
+Q 16.796875 57.09375 8.90625 57.09375 
+z
+" id="CMUSerif-Roman-49"/>
+       <path d="M 3.90625 32 
+Q 3.90625 46.703125 7.59375 54.703125 
+Q 12.796875 66.59375 25 66.59375 
+Q 27.59375 66.59375 30.296875 65.890625 
+Q 33 65.203125 36.453125 62.5 
+Q 39.90625 59.796875 42 55.40625 
+Q 46 46.90625 46 32 
+Q 46 17.40625 42.296875 9.40625 
+Q 36.90625 -2.203125 24.90625 -2.203125 
+Q 20.40625 -2.203125 15.84375 0.09375 
+Q 11.296875 2.40625 8.40625 7.90625 
+Q 3.90625 16.203125 3.90625 32 
+z
+M 12.203125 33.203125 
+Q 12.203125 18.09375 13.296875 12.09375 
+Q 14.5 5.59375 17.84375 2.796875 
+Q 21.203125 0 24.90625 0 
+Q 28.90625 0 32.25 3 
+Q 35.59375 6 36.59375 12.5 
+Q 37.703125 18.90625 37.703125 33.203125 
+Q 37.703125 47.09375 36.703125 52.703125 
+Q 35.40625 59.203125 31.90625 61.796875 
+Q 28.40625 64.40625 24.90625 64.40625 
+Q 23.59375 64.40625 22.1875 64 
+Q 20.796875 63.59375 18.796875 62.5 
+Q 16.796875 61.40625 15.25 58.59375 
+Q 13.703125 55.796875 13 51.59375 
+Q 12.203125 46.203125 12.203125 33.203125 
+z
+" id="CMUSerif-Roman-48"/>
+       <path d="M 1 18.59375 
+L 1 24.5 
+L 27.59375 24.5 
+L 27.59375 18.59375 
+z
+" id="CMUSerif-Roman-45"/>
+       <path d="M 5.59375 47 
+L 8.90625 67.59375 
+L 11.40625 67.59375 
+Q 11.703125 66.40625 12.203125 65.84375 
+Q 12.703125 65.296875 15.546875 64.84375 
+Q 18.40625 64.40625 24.203125 64.40625 
+L 48.5 64.40625 
+Q 48.5 62.09375 47.59375 60.90625 
+L 34.09375 41.90625 
+Q 29.796875 35.90625 27.90625 24.796875 
+Q 26.796875 17.40625 26.796875 8.40625 
+L 26.796875 3.296875 
+Q 26.796875 -2.203125 22.1875 -2.203125 
+Q 17.59375 -2.203125 17.59375 3.296875 
+Q 17.59375 22.40625 29.90625 40.90625 
+Q 31.203125 42.796875 36.046875 49.59375 
+Q 40.90625 56.40625 41.09375 56.703125 
+L 20.40625 56.703125 
+Q 11.296875 56.703125 10.59375 56.09375 
+Q 9.59375 55.203125 8.09375 47 
+z
+" id="CMUSerif-Roman-55"/>
+      </defs>
+      <g transform="translate(25.92 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.51875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.51875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.684375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.684375)scale(0.7)" xlink:href="#CMUSerif-Roman-55"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="88.452" xlink:href="#mf7651b78e9" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- $\mathdefault{10^{-5}}$ -->
+      <defs>
+       <path d="M 5 16.09375 
+Q 5 19.09375 6.59375 20.25 
+Q 8.203125 21.40625 9.90625 21.40625 
+Q 12.203125 21.40625 13.546875 19.953125 
+Q 14.90625 18.5 14.90625 16.5 
+Q 14.90625 14.5 13.546875 13.046875 
+Q 12.203125 11.59375 9.90625 11.59375 
+Q 8.796875 11.59375 8.203125 11.796875 
+Q 9.5 7.203125 13.546875 3.890625 
+Q 17.59375 0.59375 22.90625 0.59375 
+Q 29.59375 0.59375 33.59375 7.09375 
+Q 36 11.296875 36 20.796875 
+Q 36 29.203125 34.203125 33.40625 
+Q 31.40625 39.796875 25.703125 39.796875 
+Q 17.59375 39.796875 12.796875 32.796875 
+Q 12.203125 31.90625 11.5 31.90625 
+Q 10.5 31.90625 10.296875 32.453125 
+Q 10.09375 33 10.09375 34.5 
+L 10.09375 64.09375 
+Q 10.09375 66.5 11.09375 66.5 
+Q 11.5 66.5 12.296875 66.203125 
+Q 18.59375 63.40625 25.59375 63.40625 
+Q 32.796875 63.40625 39.203125 66.296875 
+Q 39.703125 66.59375 40 66.59375 
+Q 41 66.59375 41 65.5 
+Q 41 65.09375 40.203125 63.9375 
+Q 39.40625 62.796875 37.703125 61.296875 
+Q 36 59.796875 33.796875 58.390625 
+Q 31.59375 57 28.390625 56.046875 
+Q 25.203125 55.09375 21.703125 55.09375 
+Q 17.5 55.09375 13.203125 56.40625 
+L 13.203125 36.90625 
+Q 18.40625 42 25.90625 42 
+Q 33.90625 42 39.40625 35.546875 
+Q 44.90625 29.09375 44.90625 20.09375 
+Q 44.90625 10.703125 38.40625 4.25 
+Q 31.90625 -2.203125 23.09375 -2.203125 
+Q 15.09375 -2.203125 10.046875 3.5 
+Q 5 9.203125 5 16.09375 
+z
+" id="CMUSerif-Roman-53"/>
+      </defs>
+      <g transform="translate(80.352 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-53"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="142.884" xlink:href="#mf7651b78e9" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- $\mathdefault{10^{-3}}$ -->
+      <defs>
+       <path d="M 4.203125 13.5 
+Q 4.203125 16.5 5.890625 17.890625 
+Q 7.59375 19.296875 9.796875 19.296875 
+Q 12.09375 19.296875 13.75 17.796875 
+Q 15.40625 16.296875 15.40625 13.703125 
+Q 15.40625 10.90625 13.453125 9.34375 
+Q 11.5 7.796875 8.796875 8.203125 
+Q 11.203125 4.203125 15.59375 2.390625 
+Q 20 0.59375 24.09375 0.59375 
+Q 28.40625 0.59375 31.90625 4.296875 
+Q 35.40625 8 35.40625 17.09375 
+Q 35.40625 24.796875 32.40625 29.25 
+Q 29.40625 33.703125 23.5 33.703125 
+L 19.09375 33.703125 
+Q 17.59375 33.703125 17.140625 33.84375 
+Q 16.703125 34 16.703125 34.796875 
+Q 16.703125 35.796875 18.203125 36 
+Q 19.703125 36 22.09375 36.296875 
+Q 27.90625 36.5 31 41.5 
+Q 33.796875 46.203125 33.796875 52.90625 
+Q 33.796875 59 30.890625 61.546875 
+Q 28 64.09375 24.203125 64.09375 
+Q 20.703125 64.09375 16.84375 62.640625 
+Q 13 61.203125 10.90625 57.90625 
+Q 17.09375 57.90625 17.09375 52.90625 
+Q 17.09375 50.703125 15.6875 49.25 
+Q 14.296875 47.796875 12 47.796875 
+Q 9.796875 47.796875 8.34375 49.1875 
+Q 6.90625 50.59375 6.90625 53 
+Q 6.90625 58.703125 12 62.640625 
+Q 17.09375 66.59375 24.59375 66.59375 
+Q 32 66.59375 37.5 62.6875 
+Q 43 58.796875 43 52.796875 
+Q 43 46.90625 39.09375 42.046875 
+Q 35.203125 37.203125 29 35.203125 
+Q 36.59375 33.703125 41.140625 28.546875 
+Q 45.703125 23.40625 45.703125 17.09375 
+Q 45.703125 9.296875 39.546875 3.546875 
+Q 33.40625 -2.203125 24.40625 -2.203125 
+Q 16.09375 -2.203125 10.140625 2.296875 
+Q 4.203125 6.796875 4.203125 13.5 
+z
+" id="CMUSerif-Roman-51"/>
+      </defs>
+      <g transform="translate(134.784 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-51"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="197.316" xlink:href="#mf7651b78e9" y="197.316"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- $\mathdefault{10^{-1}}$ -->
+      <g transform="translate(189.216 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-49"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_5">
+     <!-- Metallicity (metal mass fraction) $Z$ [-] -->
+     <defs>
+      <path d="M 3.703125 0 
+L 3.703125 3.09375 
+Q 7.296875 3.09375 9.59375 3.796875 
+Q 11.90625 4.5 12.75 5.84375 
+Q 13.59375 7.203125 13.796875 8.09375 
+Q 14 9 14 10.5 
+L 14 60.5 
+Q 14 63.40625 12.75 64.296875 
+Q 11.5 65.203125 6.09375 65.203125 
+L 3.703125 65.203125 
+L 3.703125 68.296875 
+L 20.59375 68.296875 
+Q 22.40625 68.296875 22.90625 68 
+Q 23.40625 67.703125 24.09375 66.09375 
+L 45.796875 10.09375 
+L 67.703125 66.40625 
+Q 68.203125 67.796875 68.640625 68.046875 
+Q 69.09375 68.296875 71 68.296875 
+L 87.90625 68.296875 
+L 87.90625 65.203125 
+L 85.5 65.203125 
+Q 80.09375 65.203125 78.84375 64.296875 
+Q 77.59375 63.40625 77.59375 60.5 
+L 77.59375 7.796875 
+Q 77.59375 4.90625 78.84375 4 
+Q 80.09375 3.09375 85.5 3.09375 
+L 87.90625 3.09375 
+L 87.90625 0 
+Q 84.203125 0.296875 73.59375 0.296875 
+Q 62.90625 0.296875 59.203125 0 
+L 59.203125 3.09375 
+L 61.59375 3.09375 
+Q 67 3.09375 68.25 4 
+Q 69.5 4.90625 69.5 7.796875 
+L 69.5 65.203125 
+L 69.40625 65.203125 
+L 44.796875 1.90625 
+Q 44.09375 0 43 0 
+Q 41.796875 0 41 2.203125 
+L 16.90625 64.40625 
+L 16.796875 64.40625 
+L 16.796875 10.5 
+Q 16.796875 9 17 8.09375 
+Q 17.203125 7.203125 18.046875 5.84375 
+Q 18.90625 4.5 21.203125 3.796875 
+Q 23.5 3.09375 27.09375 3.09375 
+L 27.09375 0 
+Q 16.59375 0.296875 15.390625 0.296875 
+Q 14.203125 0.296875 3.703125 0 
+z
+" id="CMUSerif-Roman-77"/>
+      <path d="M 2.796875 22 
+Q 2.796875 31.40625 8.84375 38.09375 
+Q 14.90625 44.796875 23.59375 44.796875 
+Q 32.40625 44.796875 36.953125 39.09375 
+Q 41.5 33.40625 41.5 25.203125 
+Q 41.5 23.703125 41.09375 23.390625 
+Q 40.703125 23.09375 39 23.09375 
+L 11.09375 23.09375 
+Q 11.09375 12.90625 14.09375 8.09375 
+Q 18.296875 1.40625 25.40625 1.40625 
+Q 26.40625 1.40625 27.546875 1.59375 
+Q 28.703125 1.796875 31.09375 2.640625 
+Q 33.5 3.5 35.59375 5.796875 
+Q 37.703125 8.09375 38.90625 11.703125 
+Q 39.203125 13.09375 40.203125 13.09375 
+Q 41.5 13.09375 41.5 11.90625 
+Q 41.5 11 40.546875 9.046875 
+Q 39.59375 7.09375 37.796875 4.75 
+Q 36 2.40625 32.5 0.65625 
+Q 29 -1.09375 24.796875 -1.09375 
+Q 16 -1.09375 9.390625 5.546875 
+Q 2.796875 12.203125 2.796875 22 
+z
+M 11.203125 25.203125 
+L 34.90625 25.203125 
+Q 34.90625 27.296875 34.546875 29.640625 
+Q 34.203125 32 33.140625 35.25 
+Q 32.09375 38.5 29.640625 40.546875 
+Q 27.203125 42.59375 23.59375 42.59375 
+Q 22 42.59375 20.25 41.890625 
+Q 18.5 41.203125 16.390625 39.546875 
+Q 14.296875 37.90625 12.84375 34.15625 
+Q 11.40625 30.40625 11.203125 25.203125 
+z
+" id="CMUSerif-Roman-101"/>
+      <path d="M 1.90625 40 
+L 1.90625 42.203125 
+Q 6.5 42.40625 9.546875 45.65625 
+Q 12.59375 48.90625 13.640625 52.90625 
+Q 14.703125 56.90625 14.796875 61.5 
+L 17.296875 61.5 
+L 17.296875 43.09375 
+L 31.59375 43.09375 
+L 31.59375 40 
+L 17.296875 40 
+L 17.296875 12.203125 
+Q 17.296875 1.40625 24 1.40625 
+Q 26.90625 1.40625 28.796875 4.34375 
+Q 30.703125 7.296875 30.703125 12.59375 
+L 30.703125 18.09375 
+L 33.203125 18.09375 
+L 33.203125 12.40625 
+Q 33.203125 7 30.703125 2.953125 
+Q 28.203125 -1.09375 23.296875 -1.09375 
+Q 21.5 -1.09375 19.703125 -0.640625 
+Q 17.90625 -0.203125 15.59375 1 
+Q 13.296875 2.203125 11.84375 5.140625 
+Q 10.40625 8.09375 10.40625 12.40625 
+L 10.40625 40 
+z
+" id="CMUSerif-Roman-116"/>
+      <path d="M 4.203125 9.5 
+Q 4.203125 18 14.203125 22.5 
+Q 20.203125 25.40625 32.59375 26.09375 
+L 32.59375 29.796875 
+Q 32.59375 36 29.34375 39.296875 
+Q 26.09375 42.59375 22 42.59375 
+Q 14.703125 42.59375 11.203125 38 
+Q 14.203125 37.90625 15.25 36.40625 
+Q 16.296875 34.90625 16.296875 33.40625 
+Q 16.296875 31.40625 15.046875 30.09375 
+Q 13.796875 28.796875 11.703125 28.796875 
+Q 9.703125 28.796875 8.390625 30.046875 
+Q 7.09375 31.296875 7.09375 33.5 
+Q 7.09375 38.40625 11.5 41.59375 
+Q 15.90625 44.796875 22.203125 44.796875 
+Q 30.40625 44.796875 35.90625 39.296875 
+Q 37.59375 37.59375 38.4375 35.390625 
+Q 39.296875 33.203125 39.390625 31.75 
+Q 39.5 30.296875 39.5 27.5 
+L 39.5 7.5 
+Q 39.5 6.90625 39.703125 5.953125 
+Q 39.90625 5 40.796875 3.75 
+Q 41.703125 2.5 43.203125 2.5 
+Q 46.796875 2.5 46.796875 8.90625 
+L 46.796875 14.5 
+L 49.296875 14.5 
+L 49.296875 8.90625 
+Q 49.296875 3.59375 46.5 1.5 
+Q 43.703125 -0.59375 41.09375 -0.59375 
+Q 37.796875 -0.59375 35.6875 1.84375 
+Q 33.59375 4.296875 33.296875 7.59375 
+Q 31.796875 3.796875 28.34375 1.34375 
+Q 24.90625 -1.09375 20.203125 -1.09375 
+Q 16.59375 -1.09375 13.1875 -0.1875 
+Q 9.796875 0.703125 7 3.203125 
+Q 4.203125 5.703125 4.203125 9.5 
+z
+M 11.90625 9.59375 
+Q 11.90625 5.90625 14.546875 3.5 
+Q 17.203125 1.09375 20.90625 1.09375 
+Q 25.09375 1.09375 28.84375 4.34375 
+Q 32.59375 7.59375 32.59375 14 
+L 32.59375 24 
+Q 21.5 23.59375 16.703125 19.1875 
+Q 11.90625 14.796875 11.90625 9.59375 
+z
+" id="CMUSerif-Roman-97"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+Q 8.59375 3.09375 9.84375 3.75 
+Q 11.09375 4.40625 11.09375 7.59375 
+L 11.09375 59.59375 
+Q 11.09375 63.296875 9.796875 64.25 
+Q 8.5 65.203125 3.296875 65.203125 
+L 3.296875 68.296875 
+L 17.703125 69.40625 
+L 17.703125 7.59375 
+Q 17.703125 4.40625 18.953125 3.75 
+Q 20.203125 3.09375 25.5 3.09375 
+L 25.5 0 
+Q 24.296875 0 21.75 0.09375 
+Q 19.203125 0.203125 17.34375 0.25 
+Q 15.5 0.296875 14.40625 0.296875 
+Q 13.203125 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-108"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+Q 8.59375 3.09375 9.84375 3.75 
+Q 11.09375 4.40625 11.09375 7.59375 
+L 11.09375 34.5 
+Q 11.09375 38.203125 9.84375 39.09375 
+Q 8.59375 40 3.703125 40 
+L 3.703125 43.09375 
+L 17.703125 44.203125 
+L 17.703125 7.5 
+Q 17.703125 4.5 18.75 3.796875 
+Q 19.796875 3.09375 24.703125 3.09375 
+L 24.703125 0 
+Q 14.5 0.296875 14.296875 0.296875 
+Q 12.90625 0.296875 3.296875 0 
+z
+M 7.5 61.59375 
+Q 7.5 63.59375 9.046875 65.25 
+Q 10.59375 66.90625 12.796875 66.90625 
+Q 15 66.90625 16.546875 65.40625 
+Q 18.09375 63.90625 18.09375 61.59375 
+Q 18.09375 59.296875 16.546875 57.796875 
+Q 15 56.296875 12.796875 56.296875 
+Q 10.5 56.296875 9 57.890625 
+Q 7.5 59.5 7.5 61.59375 
+z
+" id="CMUSerif-Roman-105"/>
+      <path d="M 16.09375 -1.09375 
+Q 3.40625 12.09375 3.40625 21.59375 
+Q 3.40625 31.09375 9.65625 37.9375 
+Q 15.90625 44.796875 25.09375 44.796875 
+Q 31.203125 44.796875 35.796875 41.890625 
+Q 40.40625 39 40.40625 34.09375 
+Q 40.40625 31.90625 39.09375 30.65625 
+Q 37.796875 29.40625 35.796875 29.40625 
+Q 33.703125 29.40625 32.453125 30.703125 
+Q 31.203125 32 31.203125 34 
+Q 31.203125 34.90625 31.5 35.75 
+Q 31.796875 36.59375 32.890625 37.546875 
+Q 34 38.5 35.90625 38.59375 
+Q 32.296875 42.296875 25.203125 42.296875 
+Q 20.09375 42.296875 15.890625 37.5 
+Q 11.703125 32.703125 11.703125 21.796875 
+Q 11.703125 16.09375 13.09375 11.890625 
+Q 14.5 7.703125 16.796875 5.546875 
+Q 19.09375 3.40625 21.34375 2.40625 
+Q 23.59375 1.40625 25.796875 1.40625 
+Q 35.59375 1.40625 38.90625 11.90625 
+Q 39.203125 12.90625 40.203125 12.90625 
+Q 41.5 12.90625 41.5 11.90625 
+Q 41.5 11.40625 41.09375 10.15625 
+Q 40.703125 8.90625 39.5 6.90625 
+Q 38.296875 4.90625 36.546875 3.15625 
+Q 34.796875 1.40625 31.75 0.15625 
+Q 28.703125 -1.09375 24.90625 -1.09375 
+Q 16.09375 -1.09375 3.40625 12.09375 
+z
+" id="CMUSerif-Roman-99"/>
+      <path d="M 1.90625 -12.40625 
+Q 1.90625 -10.296875 3.15625 -9.1875 
+Q 4.40625 -8.09375 6.09375 -8.09375 
+Q 7.90625 -8.09375 9.09375 -9.25 
+Q 10.296875 -10.40625 10.296875 -12.296875 
+Q 10.296875 -16 6.40625 -16.5 
+Q 8.296875 -18.296875 11.09375 -18.296875 
+Q 14.09375 -18.296875 16.5 -16.09375 
+Q 18.90625 -13.90625 19.953125 -11.796875 
+Q 21 -9.703125 22.5 -5.90625 
+Q 23.90625 -2.90625 25 0 
+L 10 36.5 
+Q 9 38.90625 7.5 39.453125 
+Q 6 40 1.90625 40 
+L 1.90625 43.09375 
+Q 6.40625 42.796875 11.59375 42.796875 
+Q 14.703125 42.796875 22.5 43.09375 
+L 22.5 40 
+Q 16.90625 40 16.90625 37.40625 
+Q 16.90625 37.09375 17.5 35.59375 
+L 28.59375 8.703125 
+L 38.703125 33.296875 
+Q 39.296875 34.703125 39.296875 35.703125 
+Q 39.296875 39.796875 34.59375 40 
+L 34.59375 43.09375 
+Q 41.203125 42.796875 43.296875 42.796875 
+Q 47.40625 42.796875 50.796875 43.09375 
+L 50.796875 40 
+Q 44.09375 40 41.5 33.59375 
+L 23.90625 -9.09375 
+Q 19.09375 -20.5 11.09375 -20.5 
+Q 7.296875 -20.5 4.59375 -18.140625 
+Q 1.90625 -15.796875 1.90625 -12.40625 
+z
+" id="CMUSerif-Roman-121"/>
+      <path id="CMUSerif-Roman-32"/>
+      <path d="M 9.90625 25 
+Q 9.90625 41.90625 16.203125 55.5 
+Q 18.90625 61.203125 22.65625 66 
+Q 26.40625 70.796875 28.90625 72.890625 
+Q 31.40625 75 32.09375 75 
+Q 33.09375 75 33.09375 74 
+Q 33.09375 73.5 31.796875 72.296875 
+Q 15.703125 55.90625 15.703125 25 
+Q 15.703125 -6 31.40625 -21.796875 
+Q 33.09375 -23.5 33.09375 -24 
+Q 33.09375 -25 32.09375 -25 
+Q 31.40625 -25 29 -23 
+Q 26.59375 -21 22.890625 -16.390625 
+Q 19.203125 -11.796875 16.5 -6.203125 
+Q 9.90625 7.40625 9.90625 25 
+z
+" id="CMUSerif-Roman-40"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 43.796875 44.203125 45.40625 34.40625 
+Q 47.09375 38.203125 50.6875 41.203125 
+Q 54.296875 44.203125 59.90625 44.203125 
+Q 67.40625 44.203125 70.40625 40.5 
+Q 72.59375 38 73.046875 35.203125 
+Q 73.5 32.40625 73.5 25.203125 
+L 73.5 6.09375 
+Q 73.59375 4 75.1875 3.546875 
+Q 76.796875 3.09375 81.296875 3.09375 
+L 81.296875 0 
+Q 71.09375 0.296875 70.09375 0.296875 
+Q 69.296875 0.296875 58.796875 0 
+L 58.796875 3.09375 
+Q 64.09375 3.09375 65.34375 3.75 
+Q 66.59375 4.40625 66.59375 7.59375 
+L 66.59375 30.90625 
+Q 66.59375 36 65.046875 39 
+Q 63.5 42 59.203125 42 
+Q 54 42 49.84375 37.640625 
+Q 45.703125 33.296875 45.703125 26 
+L 45.703125 7.59375 
+Q 45.703125 4.40625 46.953125 3.75 
+Q 48.203125 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-109"/>
+      <path d="M 3.296875 1.296875 
+L 3.296875 14.5 
+Q 3.296875 15.59375 3.34375 16 
+Q 3.40625 16.40625 3.703125 16.703125 
+Q 4 17 4.59375 17 
+Q 5.296875 17 5.546875 16.703125 
+Q 5.796875 16.40625 6 15.296875 
+Q 7.5 8.40625 10.75 4.75 
+Q 14 1.09375 19.90625 1.09375 
+Q 25.5 1.09375 28.34375 3.59375 
+Q 31.203125 6.09375 31.203125 10.203125 
+Q 31.203125 17.5 20.796875 19.40625 
+Q 14.796875 20.59375 12.296875 21.390625 
+Q 9.796875 22.203125 7.59375 24 
+Q 3.296875 27.5 3.296875 32.5 
+Q 3.296875 37.5 7.09375 41.140625 
+Q 10.90625 44.796875 19.296875 44.796875 
+Q 24.90625 44.796875 28.703125 42 
+Q 29.796875 42.90625 30.40625 43.59375 
+Q 31.703125 44.796875 32.40625 44.796875 
+Q 33.203125 44.796875 33.34375 44.296875 
+Q 33.5 43.796875 33.5 42.40625 
+L 33.5 32.296875 
+Q 33.5 31.203125 33.453125 30.796875 
+Q 33.40625 30.40625 33.09375 30.15625 
+Q 32.796875 29.90625 32.203125 29.90625 
+Q 31.09375 29.90625 31 30.796875 
+Q 30.203125 42.90625 19.296875 42.90625 
+Q 13.40625 42.90625 10.75 40.65625 
+Q 8.09375 38.40625 8.09375 35.296875 
+Q 8.09375 33.59375 8.890625 32.296875 
+Q 9.703125 31 10.75 30.25 
+Q 11.796875 29.5 13.75 28.796875 
+Q 15.703125 28.09375 16.890625 27.84375 
+Q 18.09375 27.59375 20.40625 27.09375 
+Q 28.40625 25.59375 31.796875 22.296875 
+Q 36 18.09375 36 12.796875 
+Q 36 6.90625 32 2.90625 
+Q 28 -1.09375 19.90625 -1.09375 
+Q 13.40625 -1.09375 8.90625 3.203125 
+Q 8.296875 2.59375 7.84375 2.09375 
+Q 7.40625 1.59375 7.25 1.390625 
+Q 7.09375 1.203125 7.046875 1.09375 
+Q 7 1 6.90625 0.90625 
+Q 4.90625 -1.09375 4.40625 -1.09375 
+Q 3.59375 -1.09375 3.4375 -0.59375 
+Q 3.296875 -0.09375 3.296875 1.296875 
+z
+" id="CMUSerif-Roman-115"/>
+      <path d="M 3.296875 40 
+L 3.296875 43.09375 
+L 11.203125 43.09375 
+L 11.203125 54.59375 
+Q 11.203125 62 16 66.25 
+Q 20.796875 70.5 26.703125 70.5 
+Q 30.59375 70.5 33.140625 68.390625 
+Q 35.703125 66.296875 35.703125 63.5 
+Q 35.703125 61.59375 34.546875 60.34375 
+Q 33.40625 59.09375 31.296875 59.09375 
+Q 29.296875 59.09375 28.140625 60.34375 
+Q 27 61.59375 27 63.40625 
+Q 27 66.59375 30 67.59375 
+Q 28.5 68.296875 26.703125 68.296875 
+Q 23.09375 68.296875 20.296875 64.59375 
+Q 17.5 60.90625 17.5 54.703125 
+L 17.5 43.09375 
+L 29.203125 43.09375 
+L 29.203125 40 
+L 17.796875 40 
+L 17.796875 7.796875 
+Q 17.796875 4.90625 19 4 
+Q 20.203125 3.09375 25.40625 3.09375 
+L 27.5 3.09375 
+L 27.5 0 
+Q 23.5 0.296875 14.796875 0.296875 
+Q 13.59375 0.296875 11.6875 0.25 
+Q 9.796875 0.203125 7.296875 0.09375 
+Q 4.796875 0 3.40625 0 
+L 3.40625 3.09375 
+Q 8.703125 3.09375 9.953125 3.75 
+Q 11.203125 4.40625 11.203125 7.59375 
+L 11.203125 40 
+z
+" id="CMUSerif-Roman-102"/>
+      <path d="M 2.796875 0 
+L 2.796875 3.09375 
+Q 8.09375 3.09375 9.34375 3.75 
+Q 10.59375 4.40625 10.59375 7.59375 
+L 10.59375 34.40625 
+Q 10.59375 38.09375 9.296875 39.046875 
+Q 8 40 2.796875 40 
+L 2.796875 43.09375 
+L 16.703125 44.203125 
+L 16.703125 33.203125 
+Q 18.09375 37.5 21.09375 40.84375 
+Q 24.09375 44.203125 29 44.203125 
+Q 32.203125 44.203125 34.296875 42.390625 
+Q 36.40625 40.59375 36.40625 38.09375 
+Q 36.40625 35.90625 35.046875 34.796875 
+Q 33.703125 33.703125 32.09375 33.703125 
+Q 30.296875 33.703125 29.046875 34.84375 
+Q 27.796875 36 27.796875 38 
+Q 27.796875 39.203125 28.34375 40.140625 
+Q 28.90625 41.09375 29.34375 41.4375 
+Q 29.796875 41.796875 30.09375 41.90625 
+Q 29.90625 42 29 42 
+Q 23.5 42 20.34375 36.5 
+Q 17.203125 31 17.203125 23.203125 
+L 17.203125 7.796875 
+Q 17.203125 4.90625 18.390625 4 
+Q 19.59375 3.09375 24.796875 3.09375 
+L 26.90625 3.09375 
+L 26.90625 0 
+Q 22.90625 0.296875 14.203125 0.296875 
+Q 13 0.296875 11.09375 0.25 
+Q 9.203125 0.203125 6.703125 0.09375 
+Q 4.203125 0 2.796875 0 
+z
+" id="CMUSerif-Roman-114"/>
+      <path d="M 16 -1.09375 
+Q 2.796875 11.90625 2.796875 21.40625 
+Q 2.796875 30.90625 9.25 37.84375 
+Q 15.703125 44.796875 25 44.796875 
+Q 34.09375 44.796875 40.59375 37.890625 
+Q 47.09375 31 47.09375 21.40625 
+Q 47.09375 12 40.546875 5.453125 
+Q 34 -1.09375 24.90625 -1.09375 
+Q 16 -1.09375 2.796875 11.90625 
+z
+M 11.09375 22.203125 
+Q 11.09375 12.5 13.59375 8.09375 
+Q 17.5 1.40625 25 1.40625 
+Q 28.703125 1.40625 31.796875 3.40625 
+Q 34.90625 5.40625 36.59375 8.796875 
+Q 38.796875 13.203125 38.796875 22.203125 
+Q 38.796875 31.796875 36.203125 36.09375 
+Q 32.296875 42.59375 24.90625 42.59375 
+Q 21.703125 42.59375 18.546875 40.890625 
+Q 15.40625 39.203125 13.5 35.90625 
+Q 11.09375 31.5 11.09375 22.203125 
+z
+" id="CMUSerif-Roman-111"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 39.59375 44.203125 42.59375 40.5 
+Q 44.796875 38 45.25 35.203125 
+Q 45.703125 32.40625 45.703125 25.203125 
+L 45.703125 6.09375 
+Q 45.796875 4 47.390625 3.546875 
+Q 49 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-110"/>
+      <path d="M 5.703125 -24 
+Q 5.703125 -23.5 7 -22.296875 
+Q 23.09375 -5.90625 23.09375 25 
+Q 23.09375 56 7.59375 71.703125 
+Q 5.703125 73.5 5.703125 74 
+Q 5.703125 75 6.703125 75 
+Q 7.40625 75 9.796875 73 
+Q 12.203125 71 15.890625 66.390625 
+Q 19.59375 61.796875 22.296875 56.203125 
+Q 28.90625 42.59375 28.90625 25 
+Q 28.90625 8.09375 22.59375 -5.5 
+Q 19.90625 -11.203125 16.15625 -16 
+Q 12.40625 -20.796875 9.90625 -22.890625 
+Q 7.40625 -25 6.703125 -25 
+Q 5.703125 -25 5.703125 -24 
+z
+" id="CMUSerif-Roman-41"/>
+      <path d="M 5.8125 0.78125 
+Q 5.8125 2.25 6.5 3.078125 
+L 61.53125 64.796875 
+L 46.78125 64.796875 
+Q 39.453125 64.796875 34.640625 63.0625 
+Q 29.828125 61.328125 26.671875 57.296875 
+Q 23.53125 53.265625 21.390625 46.296875 
+Q 21.1875 45.40625 20.40625 45.40625 
+L 19.484375 45.40625 
+Q 18.5 45.40625 18.5 46.6875 
+L 24.8125 67.390625 
+Q 25 68.3125 25.78125 68.3125 
+L 71.390625 68.3125 
+Q 72.21875 68.3125 72.21875 67.484375 
+Q 72.21875 66.015625 71.578125 65.375 
+L 16.796875 3.8125 
+L 31.984375 3.8125 
+Q 40.828125 3.8125 45.875 5.984375 
+Q 50.921875 8.15625 53.875 12.84375 
+Q 56.84375 17.53125 59.625 26.21875 
+Q 59.71875 26.5625 59.984375 26.828125 
+Q 60.25 27.09375 60.59375 27.09375 
+L 61.53125 27.09375 
+Q 62.5 27.09375 62.5 25.78125 
+L 54.59375 0.875 
+Q 54.15625 0 53.609375 0 
+L 6.6875 0 
+Q 5.8125 0 5.8125 0.78125 
+z
+" id="Cmmi10-90"/>
+      <path d="M 10.40625 -25 
+L 10.40625 75 
+L 25.5 75 
+L 25.5 72.703125 
+L 17.09375 72.703125 
+L 17.09375 -22.703125 
+L 25.5 -22.703125 
+L 25.5 -25 
+z
+" id="CMUSerif-Roman-91"/>
+      <path d="M 2.09375 -22.703125 
+L 10.5 -22.703125 
+L 10.5 72.703125 
+L 2.09375 72.703125 
+L 2.09375 75 
+L 17.203125 75 
+L 17.203125 -25 
+L 2.09375 -25 
+z
+" id="CMUSerif-Roman-93"/>
+     </defs>
+     <g transform="translate(45.976 222.69725)scale(0.1 -0.1)">
+      <use xlink:href="#CMUSerif-Roman-77"/>
+      <use transform="translate(91.599991 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(135.999985 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(174.799973 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(224.799957 0)" xlink:href="#CMUSerif-Roman-108"/>
+      <use transform="translate(252.499954 0)" xlink:href="#CMUSerif-Roman-108"/>
+      <use transform="translate(280.199951 0)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(307.899948 0)" xlink:href="#CMUSerif-Roman-99"/>
+      <use transform="translate(352.299942 0)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(379.999939 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(418.799927 0)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(471.499924 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(504.799911 0)" xlink:href="#CMUSerif-Roman-40"/>
+      <use transform="translate(543.599899 0)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(626.899887 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(671.299881 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(710.099869 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(760.099854 0)" xlink:href="#CMUSerif-Roman-108"/>
+      <use transform="translate(787.79985 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(821.099838 0)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(904.399826 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(954.399811 0)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(993.799805 0)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(1033.199799 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1066.499786 0)" xlink:href="#CMUSerif-Roman-102"/>
+      <use transform="translate(1096.999771 0)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(1136.099762 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(1186.099747 0)" xlink:href="#CMUSerif-Roman-99"/>
+      <use transform="translate(1230.499741 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(1269.299728 0)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(1296.999725 0)" xlink:href="#CMUSerif-Roman-111"/>
+      <use transform="translate(1346.99971 0)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(1402.499695 0)" xlink:href="#CMUSerif-Roman-41"/>
+      <use transform="translate(1441.299683 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1474.59967 0)" xlink:href="#Cmmi10-90"/>
+      <use transform="translate(1542.812561 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1576.112549 0)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(1603.912537 0)" xlink:href="#CMUSerif-Roman-45"/>
+      <use transform="translate(1637.212524 0)" xlink:href="#CMUSerif-Roman-93"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_5">
+      <defs>
+       <path d="M 0 0 
+L -3.5 0 
+" id="m7bcf80c517" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#m7bcf80c517" y="172.059569"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <!-- $\mathdefault{10^{-3}}$ -->
+      <g transform="translate(10.82 175.529881)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-51"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_6">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#m7bcf80c517" y="135.925784"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <!-- $\mathdefault{10^{-2}}$ -->
+      <defs>
+       <path d="M 5 0 
+Q 5 1.796875 5.140625 2.34375 
+Q 5.296875 2.90625 6.09375 3.703125 
+L 25.296875 25.09375 
+Q 35.796875 36.90625 35.796875 47.203125 
+Q 35.796875 53.90625 32.296875 58.703125 
+Q 28.796875 63.5 22.40625 63.5 
+Q 18 63.5 14.296875 60.796875 
+Q 10.59375 58.09375 8.90625 53.296875 
+Q 9.203125 53.40625 10.203125 53.40625 
+Q 12.703125 53.40625 14.09375 51.84375 
+Q 15.5 50.296875 15.5 48.203125 
+Q 15.5 45.5 13.75 44.203125 
+Q 12 42.90625 10.296875 42.90625 
+Q 9.59375 42.90625 8.6875 43.046875 
+Q 7.796875 43.203125 6.390625 44.59375 
+Q 5 46 5 48.5 
+Q 5 55.5 10.296875 61.046875 
+Q 15.59375 66.59375 23.703125 66.59375 
+Q 32.90625 66.59375 38.90625 61.140625 
+Q 44.90625 55.703125 44.90625 47.203125 
+Q 44.90625 44.203125 44 41.5 
+Q 43.09375 38.796875 41.890625 36.6875 
+Q 40.703125 34.59375 37.5 31.25 
+Q 34.296875 27.90625 31.6875 25.5 
+Q 29.09375 23.09375 23.296875 18 
+L 12.703125 7.703125 
+L 30.703125 7.703125 
+Q 39.5 7.703125 40.203125 8.5 
+Q 41.203125 9.90625 42.40625 17.40625 
+L 44.90625 17.40625 
+L 42.09375 0 
+z
+" id="CMUSerif-Roman-50"/>
+      </defs>
+      <g transform="translate(10.82 139.396097)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_7">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#m7bcf80c517" y="99.792"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- $\mathdefault{10^{-1}}$ -->
+      <g transform="translate(10.82 103.262312)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-49"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_8">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#m7bcf80c517" y="63.658216"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- $\mathdefault{10^{0}}$ -->
+      <g transform="translate(13.22 67.128528)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-48"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_5">
+     <g id="line2d_9">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#m7bcf80c517" y="27.524431"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- $\mathdefault{10^{1}}$ -->
+      <g transform="translate(13.22 30.994744)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-49"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_6">
+     <g id="line2d_10">
+      <defs>
+       <path d="M 0 0 
+L -2 0 
+" id="mb9ef9ffb1f" style="stroke:#000000;stroke-width:0.6;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="197.316"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_7">
+     <g id="line2d_11">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="190.953156"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_8">
+     <g id="line2d_12">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="186.438647"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_9">
+     <g id="line2d_13">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="182.936922"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_10">
+     <g id="line2d_14">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="180.075803"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_11">
+     <g id="line2d_15">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="177.656763"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_12">
+     <g id="line2d_16">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="175.561294"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_13">
+     <g id="line2d_17">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="173.71296"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_14">
+     <g id="line2d_18">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="161.182216"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_15">
+     <g id="line2d_19">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="154.819372"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_16">
+     <g id="line2d_20">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="150.304863"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_17">
+     <g id="line2d_21">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="146.803137"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_18">
+     <g id="line2d_22">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="143.942019"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_19">
+     <g id="line2d_23">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="141.522978"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_20">
+     <g id="line2d_24">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="139.42751"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_21">
+     <g id="line2d_25">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="137.579176"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_22">
+     <g id="line2d_26">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="125.048431"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_23">
+     <g id="line2d_27">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="118.685588"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_24">
+     <g id="line2d_28">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="114.171078"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_25">
+     <g id="line2d_29">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="110.669353"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_26">
+     <g id="line2d_30">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="107.808235"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_27">
+     <g id="line2d_31">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="105.389194"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_28">
+     <g id="line2d_32">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="103.293726"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_29">
+     <g id="line2d_33">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="101.445391"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_30">
+     <g id="line2d_34">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="88.914647"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_31">
+     <g id="line2d_35">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="82.551803"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_32">
+     <g id="line2d_36">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="78.037294"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_33">
+     <g id="line2d_37">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="74.535569"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_34">
+     <g id="line2d_38">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="71.674451"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_35">
+     <g id="line2d_39">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="69.25541"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_36">
+     <g id="line2d_40">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="67.159941"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_37">
+     <g id="line2d_41">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="65.311607"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_38">
+     <g id="line2d_42">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="52.780863"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_39">
+     <g id="line2d_43">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="46.418019"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_40">
+     <g id="line2d_44">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="41.90351"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_41">
+     <g id="line2d_45">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="38.401784"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_42">
+     <g id="line2d_46">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="35.540666"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_43">
+     <g id="line2d_47">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="33.121625"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_44">
+     <g id="line2d_48">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="31.026157"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_45">
+     <g id="line2d_49">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="29.177823"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_46">
+     <g id="line2d_50">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="16.647078"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_47">
+     <g id="line2d_51">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="10.284235"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_48">
+     <g id="line2d_52">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="5.769726"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_49">
+     <g id="line2d_53">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mb9ef9ffb1f" y="2.268"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_11">
+     <!-- SF threshold number density $n_{\rm H, thresh}$ [cm$^{-3}$] -->
+     <defs>
+      <path d="M 5.59375 0.203125 
+L 5.59375 20.203125 
+Q 5.59375 21.296875 5.640625 21.6875 
+Q 5.703125 22.09375 6 22.390625 
+Q 6.296875 22.703125 6.90625 22.703125 
+Q 8 22.703125 8.09375 21.703125 
+Q 8.40625 11.796875 14.296875 6.296875 
+Q 20.09375 0.90625 30.09375 0.90625 
+Q 36.09375 0.90625 39.796875 5.203125 
+Q 43.5 9.5 43.5 15.203125 
+Q 43.5 20.59375 40.40625 24.40625 
+Q 39.09375 26.09375 37.4375 27.1875 
+Q 35.796875 28.296875 34.796875 28.640625 
+Q 33.796875 29 31.90625 29.5 
+Q 19.5 32.5 18.703125 32.796875 
+Q 12.796875 34.796875 9.1875 39.84375 
+Q 5.59375 44.90625 5.59375 51.09375 
+Q 5.59375 59.09375 11.25 64.796875 
+Q 16.90625 70.5 25.09375 70.5 
+Q 29.203125 70.5 32.640625 69.203125 
+Q 36.09375 67.90625 37.5 66.75 
+Q 38.90625 65.59375 41.09375 63.5 
+L 44.59375 69.203125 
+Q 45.40625 70.5 46.09375 70.5 
+Q 46.90625 70.5 47.046875 70.046875 
+Q 47.203125 69.59375 47.203125 68.09375 
+L 47.203125 48 
+Q 47.203125 46.90625 47.140625 46.5 
+Q 47.09375 46.09375 46.796875 45.84375 
+Q 46.5 45.59375 45.90625 45.59375 
+Q 44.90625 45.59375 44.703125 46.796875 
+Q 41.90625 67.703125 25.203125 67.703125 
+Q 19.5 67.703125 15.75 63.84375 
+Q 12 60 12 54.59375 
+Q 12 50.203125 14.75 46.59375 
+Q 17.5 43 22.09375 41.90625 
+L 34.90625 38.796875 
+Q 41.296875 37.296875 45.59375 31.640625 
+Q 49.90625 26 49.90625 18.59375 
+Q 49.90625 10.09375 44.34375 3.9375 
+Q 38.796875 -2.203125 30.203125 -2.203125 
+Q 24 -2.203125 19.203125 -0.140625 
+Q 14.40625 1.90625 11.796875 4.796875 
+Q 9.796875 1.5 8.5 -0.40625 
+L 8.203125 -0.90625 
+Q 7.40625 -2.203125 6.703125 -2.203125 
+Q 5.90625 -2.203125 5.75 -1.703125 
+Q 5.59375 -1.203125 5.59375 0.203125 
+z
+" id="CMUSerif-Roman-83"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+L 5.703125 3.09375 
+Q 11.09375 3.09375 12.34375 4 
+Q 13.59375 4.90625 13.59375 7.796875 
+L 13.59375 60.203125 
+Q 13.59375 63.09375 12.34375 64 
+Q 11.09375 64.90625 5.703125 64.90625 
+L 3.296875 64.90625 
+L 3.296875 68 
+L 58.203125 68 
+L 61 45.5 
+L 58.5 45.5 
+Q 57.796875 51.203125 56.890625 54.453125 
+Q 56 57.703125 53.953125 60.296875 
+Q 51.90625 62.90625 48.453125 63.90625 
+Q 45 64.90625 39.40625 64.90625 
+L 27.40625 64.90625 
+Q 24 64.90625 23.25 64.203125 
+Q 22.5 63.5 22.5 60.90625 
+L 22.5 35.59375 
+L 31.09375 35.59375 
+Q 37.90625 35.59375 39.796875 38.046875 
+Q 41.703125 40.5 41.703125 47.296875 
+L 44.203125 47.296875 
+L 44.203125 20.796875 
+L 41.703125 20.796875 
+Q 41.703125 27.703125 39.796875 30.09375 
+Q 37.90625 32.5 31.09375 32.5 
+L 22.5 32.5 
+L 22.5 7.90625 
+Q 22.5 5.796875 22.84375 5 
+Q 23.203125 4.203125 25.296875 3.640625 
+Q 27.40625 3.09375 32 3.09375 
+L 35.296875 3.09375 
+L 35.296875 0 
+Q 31.703125 0.296875 18.5 0.296875 
+Q 6.796875 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-70"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 59.59375 
+Q 11 63.296875 9.703125 64.25 
+Q 8.40625 65.203125 3.203125 65.203125 
+L 3.203125 68.296875 
+L 17.59375 69.40625 
+L 17.59375 34.59375 
+L 17.703125 34.59375 
+Q 19.296875 38.203125 22.890625 41.203125 
+Q 26.5 44.203125 32.09375 44.203125 
+Q 39.59375 44.203125 42.59375 40.5 
+Q 44.796875 38 45.25 35.203125 
+Q 45.703125 32.40625 45.703125 25.203125 
+L 45.703125 6.09375 
+Q 45.796875 4 47.390625 3.546875 
+Q 49 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-104"/>
+      <path d="M 3.40625 21.5 
+Q 3.40625 31 10.046875 37.59375 
+Q 16.703125 44.203125 25.703125 44.203125 
+Q 33.296875 44.203125 38.296875 38 
+L 38.296875 59.59375 
+Q 38.296875 63.296875 37 64.25 
+Q 35.703125 65.203125 30.5 65.203125 
+L 30.5 68.296875 
+L 44.90625 69.40625 
+L 44.90625 8.703125 
+Q 44.90625 5 46.203125 4.046875 
+Q 47.5 3.09375 52.703125 3.09375 
+L 52.703125 0 
+L 38 -1.09375 
+L 38 5.5 
+Q 32.796875 -1.09375 24.59375 -1.09375 
+Q 16 -1.09375 9.703125 5.5 
+Q 3.40625 12.09375 3.40625 21.5 
+z
+M 11.703125 21.40625 
+Q 11.703125 12.09375 14.59375 7.5 
+Q 18.59375 1.09375 25.09375 1.09375 
+Q 32.5 1.09375 36.90625 8.09375 
+Q 38 9.796875 38 11.796875 
+L 38 32.296875 
+Q 38 34.296875 36.90625 36 
+Q 32.796875 42 26.09375 42 
+Q 19.09375 42 14.796875 35.59375 
+Q 11.703125 30.796875 11.703125 21.40625 
+z
+" id="CMUSerif-Roman-100"/>
+      <path d="M 3.203125 40 
+L 3.203125 43.09375 
+L 17.90625 44.203125 
+L 17.90625 11 
+Q 17.90625 8.59375 18.09375 7.1875 
+Q 18.296875 5.796875 19.09375 4.1875 
+Q 19.90625 2.59375 21.796875 1.84375 
+Q 23.703125 1.09375 26.703125 1.09375 
+Q 32.09375 1.09375 35.4375 5.546875 
+Q 38.796875 10 38.796875 16.59375 
+L 38.796875 34.40625 
+Q 38.796875 38.09375 37.5 39.046875 
+Q 36.203125 40 31 40 
+L 31 43.09375 
+L 45.703125 44.203125 
+L 45.703125 8.703125 
+Q 45.703125 5 47 4.046875 
+Q 48.296875 3.09375 53.5 3.09375 
+L 53.5 0 
+L 39.09375 -1.09375 
+L 39.09375 7.90625 
+Q 34.90625 -1.09375 26.203125 -1.09375 
+Q 21.796875 -1.09375 18.796875 0 
+Q 15.796875 1.09375 14.296875 2.5 
+Q 12.796875 3.90625 12 6.59375 
+Q 11.203125 9.296875 11.09375 10.9375 
+Q 11 12.59375 11 15.796875 
+L 11 30.796875 
+Q 11 37.59375 10 38.796875 
+Q 9 40 3.203125 40 
+z
+" id="CMUSerif-Roman-117"/>
+      <path d="M 2.796875 65.203125 
+L 2.796875 68.296875 
+L 17.203125 69.40625 
+L 17.203125 37.703125 
+Q 23 44.203125 30.90625 44.203125 
+Q 39.5 44.203125 45.796875 37.59375 
+Q 52.09375 31 52.09375 21.59375 
+Q 52.09375 12.09375 45.5 5.5 
+Q 38.90625 -1.09375 29.796875 -1.09375 
+Q 21.5 -1.09375 16.703125 6.203125 
+Q 13.203125 0.09375 13.09375 0 
+L 10.59375 0 
+L 10.59375 59.59375 
+Q 10.59375 63.296875 9.296875 64.25 
+Q 8 65.203125 2.796875 65.203125 
+z
+M 17.5 11.40625 
+Q 17.5 9.296875 18.90625 7.203125 
+Q 22.90625 1.09375 29.40625 1.09375 
+Q 36.40625 1.09375 40.703125 7.5 
+Q 43.796875 12.296875 43.796875 21.703125 
+Q 43.796875 31 40.90625 35.59375 
+Q 36.90625 42 30.40625 42 
+Q 23.09375 42 18.59375 35.59375 
+Q 17.5 34 17.5 32 
+z
+" id="CMUSerif-Roman-98"/>
+      <path d="M 7.71875 1.703125 
+Q 7.71875 2.296875 7.8125 2.59375 
+L 15.28125 32.421875 
+Q 16.015625 35.203125 16.015625 37.3125 
+Q 16.015625 41.609375 13.09375 41.609375 
+Q 9.96875 41.609375 8.453125 37.859375 
+Q 6.9375 34.125 5.515625 28.421875 
+Q 5.515625 28.125 5.21875 27.953125 
+Q 4.9375 27.78125 4.6875 27.78125 
+L 3.515625 27.78125 
+Q 3.171875 27.78125 2.921875 28.140625 
+Q 2.6875 28.515625 2.6875 28.8125 
+Q 3.765625 33.15625 4.765625 36.171875 
+Q 5.765625 39.203125 7.890625 41.6875 
+Q 10.015625 44.1875 13.1875 44.1875 
+Q 16.9375 44.1875 19.8125 41.8125 
+Q 22.703125 39.453125 22.703125 35.796875 
+Q 25.6875 39.703125 29.6875 41.9375 
+Q 33.6875 44.1875 38.1875 44.1875 
+Q 41.75 44.1875 44.328125 42.96875 
+Q 46.921875 41.75 48.359375 39.28125 
+Q 49.8125 36.8125 49.8125 33.40625 
+Q 49.8125 29.296875 47.96875 23.484375 
+Q 46.140625 17.671875 43.40625 10.5 
+Q 42 7.234375 42 4.5 
+Q 42 1.515625 44.28125 1.515625 
+Q 48.1875 1.515625 50.796875 5.703125 
+Q 53.421875 9.90625 54.5 14.703125 
+Q 54.6875 15.28125 55.328125 15.28125 
+L 56.5 15.28125 
+Q 56.890625 15.28125 57.15625 15.03125 
+Q 57.421875 14.796875 57.421875 14.40625 
+Q 57.421875 14.3125 57.328125 14.109375 
+Q 55.953125 8.453125 52.5625 3.65625 
+Q 49.171875 -1.125 44.09375 -1.125 
+Q 40.578125 -1.125 38.078125 1.296875 
+Q 35.59375 3.71875 35.59375 7.171875 
+Q 35.59375 9.03125 36.375 11.078125 
+Q 37.640625 14.359375 39.28125 18.890625 
+Q 40.921875 23.4375 41.96875 27.578125 
+Q 43.015625 31.734375 43.015625 34.90625 
+Q 43.015625 37.703125 41.859375 39.65625 
+Q 40.71875 41.609375 37.984375 41.609375 
+Q 34.328125 41.609375 31.25 39.984375 
+Q 28.171875 38.375 25.875 35.71875 
+Q 23.578125 33.0625 21.6875 29.390625 
+L 14.890625 2.203125 
+Q 14.546875 0.828125 13.34375 -0.140625 
+Q 12.15625 -1.125 10.6875 -1.125 
+Q 9.46875 -1.125 8.59375 -0.34375 
+Q 7.71875 0.4375 7.71875 1.703125 
+z
+" id="Cmmi10-110"/>
+      <path d="M 3.078125 0 
+L 3.078125 3.515625 
+Q 13.375 3.515625 13.375 6.6875 
+L 13.375 61.625 
+Q 13.375 64.796875 3.078125 64.796875 
+L 3.078125 68.3125 
+L 33.015625 68.3125 
+L 33.015625 64.796875 
+Q 22.703125 64.796875 22.703125 61.625 
+L 22.703125 37.3125 
+L 52.203125 37.3125 
+L 52.203125 61.625 
+Q 52.203125 64.796875 41.890625 64.796875 
+L 41.890625 68.3125 
+L 71.78125 68.3125 
+L 71.78125 64.796875 
+Q 61.53125 64.796875 61.53125 61.625 
+L 61.53125 6.6875 
+Q 61.53125 3.515625 71.78125 3.515625 
+L 71.78125 0 
+L 41.890625 0 
+L 41.890625 3.515625 
+Q 52.203125 3.515625 52.203125 6.6875 
+L 52.203125 33.796875 
+L 22.703125 33.796875 
+L 22.703125 6.6875 
+Q 22.703125 3.515625 33.015625 3.515625 
+L 33.015625 0 
+z
+" id="Cmr10-72"/>
+      <path d="M 9.90625 -18.015625 
+Q 9.90625 -17.578125 10.296875 -17.1875 
+Q 13.921875 -13.71875 15.921875 -9.171875 
+Q 17.921875 -4.640625 17.921875 0.390625 
+L 17.921875 1.609375 
+Q 16.3125 0 13.921875 0 
+Q 11.625 0 10.015625 1.609375 
+Q 8.40625 3.21875 8.40625 5.515625 
+Q 8.40625 7.859375 10.015625 9.421875 
+Q 11.625 10.984375 13.921875 10.984375 
+Q 17.484375 10.984375 19 7.6875 
+Q 20.515625 4.390625 20.515625 0.390625 
+Q 20.515625 -5.171875 18.28125 -10.171875 
+Q 16.0625 -15.1875 12.015625 -19.1875 
+Q 11.625 -19.390625 11.375 -19.390625 
+Q 10.890625 -19.390625 10.390625 -18.9375 
+Q 9.90625 -18.5 9.90625 -18.015625 
+z
+" id="Cmmi10-59"/>
+      <path d="M 10.203125 12.015625 
+L 10.203125 39.59375 
+L 1.90625 39.59375 
+L 1.90625 42.1875 
+Q 8.453125 42.1875 11.515625 48.28125 
+Q 14.59375 54.390625 14.59375 61.53125 
+L 17.484375 61.53125 
+L 17.484375 43.109375 
+L 31.59375 43.109375 
+L 31.59375 39.59375 
+L 17.484375 39.59375 
+L 17.484375 12.203125 
+Q 17.484375 8.0625 18.875 4.9375 
+Q 20.265625 1.8125 23.875 1.8125 
+Q 27.296875 1.8125 28.8125 5.109375 
+Q 30.328125 8.40625 30.328125 12.203125 
+L 30.328125 18.109375 
+L 33.203125 18.109375 
+L 33.203125 12.015625 
+Q 33.203125 8.890625 32.046875 5.828125 
+Q 30.90625 2.78125 28.65625 0.828125 
+Q 26.421875 -1.125 23.1875 -1.125 
+Q 17.1875 -1.125 13.6875 2.46875 
+Q 10.203125 6.0625 10.203125 12.015625 
+z
+" id="Cmr10-116"/>
+      <path d="M 2.984375 0 
+L 2.984375 3.515625 
+Q 6.390625 3.515625 8.59375 4.046875 
+Q 10.796875 4.59375 10.796875 6.6875 
+L 10.796875 59.1875 
+Q 10.796875 61.859375 9.984375 63.0625 
+Q 9.1875 64.265625 7.671875 64.53125 
+Q 6.15625 64.796875 2.984375 64.796875 
+L 2.984375 68.3125 
+L 17.828125 69.390625 
+L 17.828125 35.015625 
+Q 19.921875 39.15625 23.671875 41.671875 
+Q 27.4375 44.1875 31.984375 44.1875 
+Q 38.921875 44.1875 42.40625 40.859375 
+Q 45.90625 37.546875 45.90625 30.71875 
+L 45.90625 6.6875 
+Q 45.90625 4.59375 48.09375 4.046875 
+Q 50.296875 3.515625 53.71875 3.515625 
+L 53.71875 0 
+L 30.8125 0 
+L 30.8125 3.515625 
+Q 34.234375 3.515625 36.421875 4.046875 
+Q 38.625 4.59375 38.625 6.6875 
+L 38.625 30.421875 
+Q 38.625 35.296875 37.203125 38.453125 
+Q 35.796875 41.609375 31.390625 41.609375 
+Q 25.59375 41.609375 21.84375 36.96875 
+Q 18.109375 32.328125 18.109375 26.421875 
+L 18.109375 6.6875 
+Q 18.109375 4.59375 20.3125 4.046875 
+Q 22.515625 3.515625 25.875 3.515625 
+L 25.875 0 
+z
+" id="Cmr10-104"/>
+      <path d="M 2.59375 0 
+L 2.59375 3.515625 
+Q 6 3.515625 8.203125 4.046875 
+Q 10.40625 4.59375 10.40625 6.6875 
+L 10.40625 33.984375 
+Q 10.40625 36.671875 9.59375 37.859375 
+Q 8.796875 39.0625 7.28125 39.328125 
+Q 5.765625 39.59375 2.59375 39.59375 
+L 2.59375 43.109375 
+L 16.890625 44.1875 
+L 16.890625 34.421875 
+Q 18.5 38.765625 21.484375 41.46875 
+Q 24.46875 44.1875 28.71875 44.1875 
+Q 31.6875 44.1875 34.03125 42.421875 
+Q 36.375 40.671875 36.375 37.796875 
+Q 36.375 35.984375 35.078125 34.640625 
+Q 33.796875 33.296875 31.890625 33.296875 
+Q 30.03125 33.296875 28.703125 34.609375 
+Q 27.390625 35.9375 27.390625 37.796875 
+Q 27.390625 40.484375 29.296875 41.609375 
+L 28.71875 41.609375 
+Q 24.65625 41.609375 22.09375 38.671875 
+Q 19.53125 35.75 18.453125 31.390625 
+Q 17.390625 27.046875 17.390625 23.09375 
+L 17.390625 6.6875 
+Q 17.390625 3.515625 27.09375 3.515625 
+L 27.09375 0 
+z
+" id="Cmr10-114"/>
+      <path d="M 24.90625 -1.125 
+Q 18.796875 -1.125 13.6875 2.078125 
+Q 8.59375 5.28125 5.6875 10.625 
+Q 2.78125 15.96875 2.78125 21.921875 
+Q 2.78125 27.78125 5.4375 33.046875 
+Q 8.109375 38.328125 12.859375 41.578125 
+Q 17.625 44.828125 23.484375 44.828125 
+Q 28.078125 44.828125 31.46875 43.28125 
+Q 34.859375 41.75 37.0625 39.015625 
+Q 39.265625 36.28125 40.375 32.5625 
+Q 41.5 28.859375 41.5 24.421875 
+Q 41.5 23.09375 40.484375 23.09375 
+L 11.53125 23.09375 
+L 11.53125 22.015625 
+Q 11.53125 13.71875 14.875 7.765625 
+Q 18.21875 1.8125 25.78125 1.8125 
+Q 28.859375 1.8125 31.46875 3.171875 
+Q 34.078125 4.546875 36 6.984375 
+Q 37.9375 9.421875 38.625 12.203125 
+Q 38.71875 12.546875 38.984375 12.8125 
+Q 39.265625 13.09375 39.59375 13.09375 
+L 40.484375 13.09375 
+Q 41.5 13.09375 41.5 11.8125 
+Q 40.09375 6.15625 35.40625 2.515625 
+Q 30.71875 -1.125 24.90625 -1.125 
+z
+M 11.625 25.59375 
+L 34.421875 25.59375 
+Q 34.421875 29.34375 33.375 33.203125 
+Q 32.328125 37.0625 29.875 39.625 
+Q 27.4375 42.1875 23.484375 42.1875 
+Q 17.828125 42.1875 14.71875 36.890625 
+Q 11.625 31.59375 11.625 25.59375 
+z
+" id="Cmr10-101"/>
+      <path d="M 3.328125 -0.296875 
+L 3.328125 16.015625 
+Q 3.328125 16.796875 4.203125 16.796875 
+L 5.421875 16.796875 
+Q 6 16.796875 6.203125 16.015625 
+Q 8.984375 1.515625 19.671875 1.515625 
+Q 24.421875 1.515625 27.609375 3.65625 
+Q 30.8125 5.8125 30.8125 10.296875 
+Q 30.8125 13.53125 28.3125 15.796875 
+Q 25.828125 18.0625 22.40625 18.890625 
+L 15.71875 20.21875 
+Q 12.359375 20.953125 9.59375 22.453125 
+Q 6.84375 23.96875 5.078125 26.484375 
+Q 3.328125 29 3.328125 32.328125 
+Q 3.328125 36.71875 5.640625 39.515625 
+Q 7.953125 42.328125 11.65625 43.578125 
+Q 15.375 44.828125 19.671875 44.828125 
+Q 24.8125 44.828125 28.609375 42.09375 
+L 31.5 44.578125 
+Q 31.5 44.828125 31.984375 44.828125 
+L 32.71875 44.828125 
+Q 33.015625 44.828125 33.25 44.546875 
+Q 33.5 44.28125 33.5 44 
+L 33.5 30.90625 
+Q 33.5 29.984375 32.71875 29.984375 
+L 31.5 29.984375 
+Q 30.609375 29.984375 30.609375 30.90625 
+Q 30.609375 36.140625 27.703125 39.3125 
+Q 24.8125 42.484375 19.578125 42.484375 
+Q 15.09375 42.484375 11.796875 40.8125 
+Q 8.5 39.15625 8.5 35.109375 
+Q 8.5 32.328125 10.859375 30.546875 
+Q 13.234375 28.765625 16.40625 27.984375 
+L 23.1875 26.703125 
+Q 26.609375 25.921875 29.5625 24.0625 
+Q 32.515625 22.21875 34.25 19.375 
+Q 35.984375 16.546875 35.984375 12.984375 
+Q 35.984375 9.375 34.734375 6.703125 
+Q 33.5 4.046875 31.265625 2.28125 
+Q 29.046875 0.53125 26.015625 -0.296875 
+Q 23 -1.125 19.671875 -1.125 
+Q 13.421875 -1.125 8.984375 3.078125 
+L 5.328125 -0.875 
+Q 5.328125 -1.125 4.78125 -1.125 
+L 4.203125 -1.125 
+Q 3.328125 -1.125 3.328125 -0.296875 
+z
+" id="Cmr10-115"/>
+      <path d="M 10.203125 23 
+Q 9.375 23 8.828125 23.625 
+Q 8.296875 24.265625 8.296875 25 
+Q 8.296875 25.734375 8.828125 26.359375 
+Q 9.375 27 10.203125 27 
+L 67.578125 27 
+Q 68.359375 27 68.875 26.359375 
+Q 69.390625 25.734375 69.390625 25 
+Q 69.390625 24.265625 68.875 23.625 
+Q 68.359375 23 67.578125 23 
+z
+" id="Cmsy10-161"/>
+      <path d="M 9.515625 7.71875 
+Q 11.859375 4.296875 15.8125 2.640625 
+Q 19.78125 0.984375 24.3125 0.984375 
+Q 30.125 0.984375 32.5625 5.9375 
+Q 35.015625 10.890625 35.015625 17.1875 
+Q 35.015625 20.015625 34.5 22.84375 
+Q 33.984375 25.6875 32.765625 28.125 
+Q 31.546875 30.5625 29.421875 32.03125 
+Q 27.296875 33.5 24.21875 33.5 
+L 17.578125 33.5 
+Q 16.703125 33.5 16.703125 34.421875 
+L 16.703125 35.296875 
+Q 16.703125 36.078125 17.578125 36.078125 
+L 23.09375 36.53125 
+Q 26.609375 36.53125 28.921875 39.15625 
+Q 31.25 41.796875 32.328125 45.578125 
+Q 33.40625 49.359375 33.40625 52.78125 
+Q 33.40625 57.5625 31.15625 60.640625 
+Q 28.90625 63.71875 24.3125 63.71875 
+Q 20.515625 63.71875 17.046875 62.28125 
+Q 13.578125 60.84375 11.53125 57.90625 
+Q 11.71875 57.953125 11.859375 57.984375 
+Q 12.015625 58.015625 12.203125 58.015625 
+Q 14.453125 58.015625 15.96875 56.453125 
+Q 17.484375 54.890625 17.484375 52.6875 
+Q 17.484375 50.53125 15.96875 48.96875 
+Q 14.453125 47.40625 12.203125 47.40625 
+Q 10.015625 47.40625 8.453125 48.96875 
+Q 6.890625 50.53125 6.890625 52.6875 
+Q 6.890625 56.984375 9.46875 60.15625 
+Q 12.0625 63.328125 16.140625 64.96875 
+Q 20.21875 66.609375 24.3125 66.609375 
+Q 27.34375 66.609375 30.703125 65.703125 
+Q 34.078125 64.796875 36.8125 63.109375 
+Q 39.546875 61.421875 41.28125 58.78125 
+Q 43.015625 56.15625 43.015625 52.78125 
+Q 43.015625 48.578125 41.140625 45.015625 
+Q 39.265625 41.453125 35.984375 38.859375 
+Q 32.71875 36.28125 28.8125 35.015625 
+Q 33.15625 34.1875 37.0625 31.734375 
+Q 40.96875 29.296875 43.328125 25.484375 
+Q 45.703125 21.6875 45.703125 17.28125 
+Q 45.703125 11.765625 42.671875 7.296875 
+Q 39.65625 2.828125 34.71875 0.3125 
+Q 29.78125 -2.203125 24.3125 -2.203125 
+Q 19.625 -2.203125 14.90625 -0.40625 
+Q 10.203125 1.375 7.203125 4.9375 
+Q 4.203125 8.5 4.203125 13.484375 
+Q 4.203125 15.96875 5.859375 17.625 
+Q 7.515625 19.28125 10.015625 19.28125 
+Q 11.625 19.28125 12.96875 18.53125 
+Q 14.3125 17.78125 15.0625 16.40625 
+Q 15.828125 15.046875 15.828125 13.484375 
+Q 15.828125 11.03125 14.109375 9.375 
+Q 12.40625 7.71875 10.015625 7.71875 
+z
+" id="Cmr10-51"/>
+     </defs>
+     <g transform="translate(8.72 198.042)rotate(-90)scale(0.1 -0.1)">
+      <use transform="translate(0 0.109375)" xlink:href="#CMUSerif-Roman-83"/>
+      <use transform="translate(55.499985 0.109375)" xlink:href="#CMUSerif-Roman-70"/>
+      <use transform="translate(120.699982 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(153.999969 0.109375)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(192.799957 0.109375)" xlink:href="#CMUSerif-Roman-104"/>
+      <use transform="translate(248.299942 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(287.399933 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(331.799927 0.109375)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(371.199921 0.109375)" xlink:href="#CMUSerif-Roman-104"/>
+      <use transform="translate(426.699905 0.109375)" xlink:href="#CMUSerif-Roman-111"/>
+      <use transform="translate(476.69989 0.109375)" xlink:href="#CMUSerif-Roman-108"/>
+      <use transform="translate(504.399887 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(559.899872 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(593.19986 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(648.699844 0.109375)" xlink:href="#CMUSerif-Roman-117"/>
+      <use transform="translate(704.199829 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(787.499817 0.109375)" xlink:href="#CMUSerif-Roman-98"/>
+      <use transform="translate(842.999802 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(887.399796 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(926.499786 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(959.799774 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(1015.299759 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(1059.699753 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(1115.199738 0.109375)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(1154.599731 0.109375)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(1182.299728 0.109375)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(1221.099716 0.109375)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(1273.799713 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1307.099701 0.109375)" xlink:href="#Cmmi10-110"/>
+      <use transform="translate(1367.109467 -16.896875)scale(0.7)" xlink:href="#Cmr10-72"/>
+      <use transform="translate(1419.609467 -16.896875)scale(0.7)" xlink:href="#Cmmi10-59"/>
+      <use transform="translate(1450.651459 -16.896875)scale(0.7)" xlink:href="#Cmr10-116"/>
+      <use transform="translate(1477.82431 -16.896875)scale(0.7)" xlink:href="#Cmr10-104"/>
+      <use transform="translate(1516.686615 -16.896875)scale(0.7)" xlink:href="#Cmr10-114"/>
+      <use transform="translate(1544.064545 -16.896875)scale(0.7)" xlink:href="#Cmr10-101"/>
+      <use transform="translate(1575.133881 -16.896875)scale(0.7)" xlink:href="#Cmr10-115"/>
+      <use transform="translate(1602.716888 -16.896875)scale(0.7)" xlink:href="#Cmr10-104"/>
+      <use transform="translate(1647.956537 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1681.256525 0.109375)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(1709.056512 0.109375)" xlink:href="#CMUSerif-Roman-99"/>
+      <use transform="translate(1753.456506 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(1841.220635 38.373438)scale(0.7)" xlink:href="#Cmsy10-161"/>
+      <use transform="translate(1895.600518 38.373438)scale(0.7)" xlink:href="#Cmr10-51"/>
+      <use transform="translate(1936.977861 0.109375)" xlink:href="#CMUSerif-Roman-93"/>
+     </g>
+    </g>
+   </g>
+   <g id="line2d_54">
+    <path clip-path="url(#p23ab05f3c8)" d="M 6.804 27.524431 
+L 66.139784 27.620407 
+L 227.8 164.984202 
+L 227.8 164.984202 
+" style="fill:none;stroke:#000000;stroke-linecap:square;"/>
+   </g>
+   <g id="line2d_55">
+    <path clip-path="url(#p23ab05f3c8)" d="M 128.653332 63.658216 
+L 183.085332 109.90946 
+" style="fill:none;stroke:#000000;stroke-dasharray:2.22,0.96;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="line2d_56">
+    <path clip-path="url(#p23ab05f3c8)" d="M -1 27.524431 
+L 227.8 27.524431 
+" style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="line2d_57">
+    <path clip-path="url(#p23ab05f3c8)" d="M 151.076832 227.8 
+L 151.076832 99.792 
+" style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="line2d_58">
+    <path clip-path="url(#p23ab05f3c8)" d="M -1 99.792 
+L 151.076832 99.792 
+" style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
+   </g>
+   <g id="patch_3">
+    <path d="M 34.02 197.316 
+L 34.02 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_4">
+    <path d="M 224.532 197.316 
+L 224.532 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_5">
+    <path d="M 34.02 197.316 
+L 224.532 197.316 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_6">
+    <path d="M 34.02 2.268 
+L 224.532 2.268 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_7">
+    <path d="M 174.027021 190.953156 
+Q 174.027021 184.004135 174.027021 177.055114 
+L 172.577021 177.055114 
+Q 173.327021 174.557342 174.077021 172.059569 
+Q 174.827021 174.557342 175.577021 177.055114 
+L 174.127021 177.055114 
+Q 174.127021 184.004135 174.127021 190.953156 
+L 174.027021 190.953156 
+z
+" style="stroke:#000000;stroke-linecap:round;"/>
+   </g>
+   <g id="text_12">
+    <!-- ${Z_\odot}$ -->
+    <defs>
+     <path d="M 38.921875 -8.296875 
+Q 32.078125 -8.296875 26.0625 -5.703125 
+Q 20.0625 -3.125 15.40625 1.484375 
+Q 10.75 6.109375 8.171875 12.1875 
+Q 5.609375 18.265625 5.609375 25 
+Q 5.609375 31.84375 8.140625 37.84375 
+Q 10.6875 43.84375 15.375 48.53125 
+Q 20.0625 53.21875 26.0625 55.75 
+Q 32.078125 58.296875 38.921875 58.296875 
+Q 45.703125 58.296875 51.75 55.703125 
+Q 57.8125 53.125 62.40625 48.5 
+Q 67 43.890625 69.5625 37.828125 
+Q 72.125 31.78125 72.125 25 
+Q 72.125 18.3125 69.53125 12.1875 
+Q 66.9375 6.0625 62.375 1.484375 
+Q 57.8125 -3.078125 51.75 -5.6875 
+Q 45.703125 -8.296875 38.921875 -8.296875 
+z
+M 38.921875 -5.421875 
+Q 44.96875 -5.421875 50.53125 -3.046875 
+Q 56.109375 -0.6875 60.296875 3.515625 
+Q 64.5 7.71875 66.84375 13.25 
+Q 69.1875 18.796875 69.1875 25 
+Q 69.1875 31.203125 66.8125 36.796875 
+Q 64.453125 42.390625 60.34375 46.515625 
+Q 56.25 50.640625 50.703125 53.03125 
+Q 45.171875 55.421875 38.921875 55.421875 
+Q 32.671875 55.421875 27.09375 53.03125 
+Q 21.53125 50.640625 17.421875 46.53125 
+Q 13.328125 42.4375 10.90625 36.71875 
+Q 8.5 31 8.5 25 
+Q 8.5 19 10.859375 13.359375 
+Q 13.234375 7.71875 17.453125 3.515625 
+Q 21.6875 -0.6875 27.265625 -3.046875 
+Q 32.859375 -5.421875 38.921875 -5.421875 
+z
+M 38.921875 17.828125 
+Q 36.03125 17.828125 33.859375 19.953125 
+Q 31.6875 22.078125 31.6875 25 
+Q 31.6875 27 32.65625 28.609375 
+Q 33.640625 30.21875 35.296875 31.1875 
+Q 36.96875 32.171875 38.921875 32.171875 
+Q 40.765625 32.171875 42.40625 31.1875 
+Q 44.046875 30.21875 45.015625 28.609375 
+Q 46 27 46 25 
+Q 46 22.078125 43.875 19.953125 
+Q 41.75 17.828125 38.921875 17.828125 
+z
+" id="Cmsy10-175"/>
+    </defs>
+    <g transform="translate(175.655329 188.534116)scale(0.09 -0.09)">
+     <use transform="translate(0 0.6875)" xlink:href="#Cmmi10-90"/>
+     <use transform="translate(80.503906 -16.31875)scale(0.7)" xlink:href="#Cmsy10-175"/>
+    </g>
+   </g>
+   <g id="text_13">
+    <!-- Z^threshold_slope -->
+    <defs>
+     <path d="M 8.6875 72.90625 
+L 56 72.90625 
+L 56 65.375 
+L 17.921875 8.296875 
+L 57.078125 8.296875 
+L 57.078125 0 
+L 7.625 0 
+L 7.625 7.515625 
+L 44.671875 64.59375 
+L 8.6875 64.59375 
+z
+" id="DejaVuSansMono-90"/>
+     <path d="M 34.421875 72.90625 
+L 56.6875 45.703125 
+L 48 45.703125 
+L 30.078125 64.984375 
+L 12.203125 45.703125 
+L 3.515625 45.703125 
+L 25.78125 72.90625 
+z
+" id="DejaVuSansMono-94"/>
+     <path d="M 29.984375 70.21875 
+L 29.984375 54.6875 
+L 50.390625 54.6875 
+L 50.390625 47.703125 
+L 29.984375 47.703125 
+L 29.984375 18.015625 
+Q 29.984375 11.96875 32.28125 9.5625 
+Q 34.578125 7.171875 40.28125 7.171875 
+L 50.390625 7.171875 
+L 50.390625 0 
+L 39.40625 0 
+Q 29.296875 0 25.140625 4.046875 
+Q 21 8.109375 21 18.015625 
+L 21 47.703125 
+L 6.390625 47.703125 
+L 6.390625 54.6875 
+L 21 54.6875 
+L 21 70.21875 
+z
+" id="DejaVuSansMono-116"/>
+     <path d="M 51.3125 33.890625 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 33.890625 
+Q 42.28125 41.265625 39.6875 44.71875 
+Q 37.109375 48.1875 31.59375 48.1875 
+Q 25.296875 48.1875 21.890625 43.71875 
+Q 18.5 39.265625 18.5 30.90625 
+L 18.5 0 
+L 9.515625 0 
+L 9.515625 75.984375 
+L 18.5 75.984375 
+L 18.5 46.484375 
+Q 20.90625 51.171875 25 53.578125 
+Q 29.109375 56 34.71875 56 
+Q 43.0625 56 47.1875 50.5 
+Q 51.3125 45.015625 51.3125 33.890625 
+z
+" id="DejaVuSansMono-104"/>
+     <path d="M 56.390625 43.40625 
+Q 53.515625 45.65625 50.53125 46.671875 
+Q 47.5625 47.703125 44 47.703125 
+Q 35.59375 47.703125 31.140625 42.421875 
+Q 26.703125 37.15625 26.703125 27.203125 
+L 26.703125 0 
+L 17.671875 0 
+L 17.671875 54.6875 
+L 26.703125 54.6875 
+L 26.703125 44 
+Q 28.953125 49.8125 33.609375 52.90625 
+Q 38.28125 56 44.671875 56 
+Q 48 56 50.875 55.171875 
+Q 53.765625 54.34375 56.390625 52.59375 
+z
+" id="DejaVuSansMono-114"/>
+     <path d="M 54.296875 29.59375 
+L 54.296875 25.203125 
+L 15.375 25.203125 
+L 15.375 24.90625 
+Q 15.375 15.96875 20.03125 11.078125 
+Q 24.703125 6.203125 33.203125 6.203125 
+Q 37.5 6.203125 42.1875 7.5625 
+Q 46.875 8.9375 52.203125 11.71875 
+L 52.203125 2.78125 
+Q 47.078125 0.6875 42.3125 -0.359375 
+Q 37.546875 -1.421875 33.109375 -1.421875 
+Q 20.359375 -1.421875 13.171875 6.21875 
+Q 6 13.875 6 27.296875 
+Q 6 40.375 13.03125 48.1875 
+Q 20.0625 56 31.78125 56 
+Q 42.234375 56 48.265625 48.921875 
+Q 54.296875 41.84375 54.296875 29.59375 
+z
+M 45.3125 32.234375 
+Q 45.125 40.140625 41.578125 44.265625 
+Q 38.03125 48.390625 31.390625 48.390625 
+Q 24.90625 48.390625 20.703125 44.09375 
+Q 16.5 39.796875 15.71875 32.171875 
+z
+" id="DejaVuSansMono-101"/>
+     <path d="M 47.515625 52.78125 
+L 47.515625 44 
+Q 43.65625 46.234375 39.75 47.359375 
+Q 35.84375 48.484375 31.78125 48.484375 
+Q 25.6875 48.484375 22.671875 46.5 
+Q 19.671875 44.53125 19.671875 40.484375 
+Q 19.671875 36.8125 21.921875 35 
+Q 24.171875 33.203125 33.109375 31.5 
+L 36.71875 30.8125 
+Q 43.40625 29.546875 46.84375 25.734375 
+Q 50.296875 21.921875 50.296875 15.828125 
+Q 50.296875 7.71875 44.53125 3.140625 
+Q 38.765625 -1.421875 28.515625 -1.421875 
+Q 24.46875 -1.421875 20.015625 -0.5625 
+Q 15.578125 0.296875 10.40625 2 
+L 10.40625 11.28125 
+Q 15.4375 8.6875 20.015625 7.390625 
+Q 24.609375 6.109375 28.71875 6.109375 
+Q 34.671875 6.109375 37.9375 8.515625 
+Q 41.21875 10.9375 41.21875 15.28125 
+Q 41.21875 21.53125 29.25 23.921875 
+L 28.859375 24.03125 
+L 25.484375 24.703125 
+Q 17.71875 26.21875 14.15625 29.8125 
+Q 10.59375 33.40625 10.59375 39.59375 
+Q 10.59375 47.46875 15.90625 51.734375 
+Q 21.234375 56 31.109375 56 
+Q 35.5 56 39.546875 55.1875 
+Q 43.609375 54.390625 47.515625 52.78125 
+z
+" id="DejaVuSansMono-115"/>
+     <path d="M 30.078125 48.390625 
+Q 23.25 48.390625 19.734375 43.0625 
+Q 16.21875 37.75 16.21875 27.296875 
+Q 16.21875 16.890625 19.734375 11.546875 
+Q 23.25 6.203125 30.078125 6.203125 
+Q 36.96875 6.203125 40.484375 11.546875 
+Q 44 16.890625 44 27.296875 
+Q 44 37.75 40.484375 43.0625 
+Q 36.96875 48.390625 30.078125 48.390625 
+z
+M 30.078125 56 
+Q 41.453125 56 47.484375 48.625 
+Q 53.515625 41.265625 53.515625 27.296875 
+Q 53.515625 13.28125 47.5 5.921875 
+Q 41.5 -1.421875 30.078125 -1.421875 
+Q 18.703125 -1.421875 12.6875 5.921875 
+Q 6.6875 13.28125 6.6875 27.296875 
+Q 6.6875 41.265625 12.6875 48.625 
+Q 18.703125 56 30.078125 56 
+z
+" id="DejaVuSansMono-111"/>
+     <path d="M 31.203125 19.828125 
+Q 31.203125 13.765625 33.421875 10.6875 
+Q 35.640625 7.625 39.984375 7.625 
+L 50.484375 7.625 
+L 50.484375 0 
+L 39.109375 0 
+Q 31.0625 0 26.640625 5.171875 
+Q 22.21875 10.359375 22.21875 19.828125 
+L 22.21875 69.484375 
+L 7.8125 69.484375 
+L 7.8125 76.515625 
+L 31.203125 76.515625 
+z
+" id="DejaVuSansMono-108"/>
+     <path d="M 41.890625 47.703125 
+L 41.890625 75.984375 
+L 50.875 75.984375 
+L 50.875 0 
+L 41.890625 0 
+L 41.890625 6.890625 
+Q 39.65625 2.828125 35.90625 0.703125 
+Q 32.171875 -1.421875 27.296875 -1.421875 
+Q 17.390625 -1.421875 11.6875 6.265625 
+Q 6 13.96875 6 27.484375 
+Q 6 40.828125 11.71875 48.40625 
+Q 17.4375 56 27.296875 56 
+Q 32.234375 56 35.984375 53.875 
+Q 39.75 51.765625 41.890625 47.703125 
+z
+M 15.484375 27.296875 
+Q 15.484375 16.84375 18.796875 11.515625 
+Q 22.125 6.203125 28.609375 6.203125 
+Q 35.109375 6.203125 38.5 11.5625 
+Q 41.890625 16.9375 41.890625 27.296875 
+Q 41.890625 37.703125 38.5 43.046875 
+Q 35.109375 48.390625 28.609375 48.390625 
+Q 22.125 48.390625 18.796875 43.0625 
+Q 15.484375 37.75 15.484375 27.296875 
+z
+" id="DejaVuSansMono-100"/>
+     <path d="M 60.203125 -19.671875 
+L 60.203125 -23.578125 
+L 0 -23.578125 
+L 0 -19.671875 
+z
+" id="DejaVuSansMono-95"/>
+     <path d="M 18.3125 6.890625 
+L 18.3125 -20.796875 
+L 9.28125 -20.796875 
+L 9.28125 54.6875 
+L 18.3125 54.6875 
+L 18.3125 47.703125 
+Q 20.5625 51.765625 24.296875 53.875 
+Q 28.03125 56 32.90625 56 
+Q 42.828125 56 48.46875 48.328125 
+Q 54.109375 40.671875 54.109375 27.09375 
+Q 54.109375 13.765625 48.4375 6.171875 
+Q 42.78125 -1.421875 32.90625 -1.421875 
+Q 27.9375 -1.421875 24.1875 0.703125 
+Q 20.453125 2.828125 18.3125 6.890625 
+z
+M 44.671875 27.296875 
+Q 44.671875 37.75 41.375 43.0625 
+Q 38.09375 48.390625 31.59375 48.390625 
+Q 25.046875 48.390625 21.671875 43.046875 
+Q 18.3125 37.703125 18.3125 27.296875 
+Q 18.3125 16.9375 21.671875 11.5625 
+Q 25.046875 6.203125 31.59375 6.203125 
+Q 38.09375 6.203125 41.375 11.515625 
+Q 44.671875 16.84375 44.671875 27.296875 
+z
+" id="DejaVuSansMono-112"/>
+    </defs>
+    <g transform="translate(129.714233 61.930385)rotate(-320)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-90"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-94"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-116"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-104"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-114"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-101"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-115"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-104"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-111"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-108"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-100"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-95"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-115"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-108"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-111"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-112"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-101"/>
+    </g>
+   </g>
+   <g id="text_14">
+    <!-- threshold_max_density_H_p_cm3 -->
+    <defs>
+     <path d="M 33.015625 49.125 
+Q 34.671875 52.640625 37.234375 54.3125 
+Q 39.796875 56 43.40625 56 
+Q 50 56 52.703125 50.890625 
+Q 55.421875 45.796875 55.421875 31.6875 
+L 55.421875 0 
+L 47.21875 0 
+L 47.21875 31.296875 
+Q 47.21875 42.875 45.921875 45.671875 
+Q 44.625 48.484375 41.21875 48.484375 
+Q 37.3125 48.484375 35.859375 45.484375 
+Q 34.421875 42.484375 34.421875 31.296875 
+L 34.421875 0 
+L 26.21875 0 
+L 26.21875 31.296875 
+Q 26.21875 43.015625 24.828125 45.75 
+Q 23.4375 48.484375 19.828125 48.484375 
+Q 16.265625 48.484375 14.875 45.484375 
+Q 13.484375 42.484375 13.484375 31.296875 
+L 13.484375 0 
+L 5.328125 0 
+L 5.328125 54.6875 
+L 13.484375 54.6875 
+L 13.484375 50 
+Q 15.09375 52.9375 17.5 54.46875 
+Q 19.921875 56 23 56 
+Q 26.703125 56 29.171875 54.296875 
+Q 31.640625 52.59375 33.015625 49.125 
+z
+" id="DejaVuSansMono-109"/>
+     <path d="M 34.28125 27.484375 
+L 31.296875 27.484375 
+Q 23.4375 27.484375 19.453125 24.71875 
+Q 15.484375 21.96875 15.484375 16.5 
+Q 15.484375 11.578125 18.453125 8.84375 
+Q 21.4375 6.109375 26.703125 6.109375 
+Q 34.125 6.109375 38.375 11.25 
+Q 42.625 16.40625 42.671875 25.484375 
+L 42.671875 27.484375 
+z
+M 51.703125 31.203125 
+L 51.703125 0 
+L 42.671875 0 
+L 42.671875 8.109375 
+Q 39.796875 3.21875 35.421875 0.890625 
+Q 31.0625 -1.421875 24.8125 -1.421875 
+Q 16.453125 -1.421875 11.46875 3.296875 
+Q 6.5 8.015625 6.5 15.921875 
+Q 6.5 25.046875 12.625 29.78125 
+Q 18.75 34.515625 30.609375 34.515625 
+L 42.671875 34.515625 
+L 42.671875 35.9375 
+Q 42.625 42.484375 39.34375 45.4375 
+Q 36.078125 48.390625 28.90625 48.390625 
+Q 24.3125 48.390625 19.625 47.0625 
+Q 14.9375 45.75 10.5 43.21875 
+L 10.5 52.203125 
+Q 15.484375 54.109375 20.046875 55.046875 
+Q 24.609375 56 28.90625 56 
+Q 35.6875 56 40.5 54 
+Q 45.3125 52 48.296875 48 
+Q 50.140625 45.5625 50.921875 41.96875 
+Q 51.703125 38.375 51.703125 31.203125 
+z
+" id="DejaVuSansMono-97"/>
+     <path d="M 54.59375 54.6875 
+L 35.015625 28.515625 
+L 56.5 0 
+L 46.09375 0 
+L 30.078125 21.921875 
+L 14.109375 0 
+L 3.71875 0 
+L 25.203125 28.515625 
+L 5.609375 54.6875 
+L 15.578125 54.6875 
+L 30.078125 34.90625 
+L 44.484375 54.6875 
+z
+" id="DejaVuSansMono-120"/>
+     <path d="M 51.3125 33.890625 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 33.890625 
+Q 42.28125 41.265625 39.6875 44.71875 
+Q 37.109375 48.1875 31.59375 48.1875 
+Q 25.296875 48.1875 21.890625 43.71875 
+Q 18.5 39.265625 18.5 30.90625 
+L 18.5 0 
+L 9.515625 0 
+L 9.515625 54.6875 
+L 18.5 54.6875 
+L 18.5 46.484375 
+Q 20.90625 51.171875 25 53.578125 
+Q 29.109375 56 34.71875 56 
+Q 43.0625 56 47.1875 50.5 
+Q 51.3125 45.015625 51.3125 33.890625 
+z
+" id="DejaVuSansMono-110"/>
+     <path d="M 12.5 54.6875 
+L 35.5 54.6875 
+L 35.5 6.984375 
+L 53.328125 6.984375 
+L 53.328125 0 
+L 8.6875 0 
+L 8.6875 6.984375 
+L 26.515625 6.984375 
+L 26.515625 47.703125 
+L 12.5 47.703125 
+z
+M 26.515625 75.984375 
+L 35.5 75.984375 
+L 35.5 64.59375 
+L 26.515625 64.59375 
+z
+" id="DejaVuSansMono-105"/>
+     <path d="M 41.890625 17.578125 
+Q 39.65625 11.859375 36.1875 2.546875 
+Q 31.34375 -10.359375 29.6875 -13.1875 
+Q 27.4375 -17 24.0625 -18.890625 
+Q 20.703125 -20.796875 16.21875 -20.796875 
+L 8.984375 -20.796875 
+L 8.984375 -13.28125 
+L 14.3125 -13.28125 
+Q 18.265625 -13.28125 20.5 -10.984375 
+Q 22.75 -8.6875 26.21875 0.875 
+L 5.078125 54.6875 
+L 14.59375 54.6875 
+L 30.8125 11.921875 
+L 46.78125 54.6875 
+L 56.296875 54.6875 
+z
+" id="DejaVuSansMono-121"/>
+     <path d="M 6.6875 72.90625 
+L 16.609375 72.90625 
+L 16.609375 43.015625 
+L 43.609375 43.015625 
+L 43.609375 72.90625 
+L 53.515625 72.90625 
+L 53.515625 0 
+L 43.609375 0 
+L 43.609375 34.71875 
+L 16.609375 34.71875 
+L 16.609375 0 
+L 6.6875 0 
+z
+" id="DejaVuSansMono-72"/>
+     <path d="M 51.8125 2.78125 
+Q 48.1875 0.6875 44.359375 -0.359375 
+Q 40.53125 -1.421875 36.53125 -1.421875 
+Q 23.828125 -1.421875 16.671875 6.1875 
+Q 9.515625 13.8125 9.515625 27.296875 
+Q 9.515625 40.765625 16.671875 48.375 
+Q 23.828125 56 36.53125 56 
+Q 40.484375 56 44.234375 54.96875 
+Q 48 53.953125 51.8125 51.8125 
+L 51.8125 42.390625 
+Q 48.25 45.5625 44.65625 46.96875 
+Q 41.0625 48.390625 36.53125 48.390625 
+Q 28.078125 48.390625 23.53125 42.921875 
+Q 19 37.453125 19 27.296875 
+Q 19 17.1875 23.5625 11.6875 
+Q 28.125 6.203125 36.53125 6.203125 
+Q 41.21875 6.203125 44.921875 7.640625 
+Q 48.640625 9.078125 51.8125 12.109375 
+z
+" id="DejaVuSansMono-99"/>
+     <path d="M 37.890625 39.015625 
+Q 45.0625 37.109375 48.875 32.25 
+Q 52.6875 27.390625 52.6875 20.125 
+Q 52.6875 10.0625 45.921875 4.3125 
+Q 39.15625 -1.421875 27.203125 -1.421875 
+Q 22.171875 -1.421875 16.9375 -0.484375 
+Q 11.71875 0.4375 6.6875 2.203125 
+L 6.6875 12.015625 
+Q 11.671875 9.421875 16.5 8.15625 
+Q 21.34375 6.890625 26.125 6.890625 
+Q 34.234375 6.890625 38.578125 10.546875 
+Q 42.921875 14.203125 42.921875 21.09375 
+Q 42.921875 27.4375 38.578125 31.171875 
+Q 34.234375 34.90625 26.8125 34.90625 
+L 19.28125 34.90625 
+L 19.28125 43.015625 
+L 26.8125 43.015625 
+Q 33.59375 43.015625 37.40625 45.984375 
+Q 41.21875 48.96875 41.21875 54.296875 
+Q 41.21875 59.90625 37.671875 62.90625 
+Q 34.125 65.921875 27.59375 65.921875 
+Q 23.25 65.921875 18.609375 64.9375 
+Q 13.96875 63.96875 8.890625 62.015625 
+L 8.890625 71.09375 
+Q 14.796875 72.65625 19.40625 73.4375 
+Q 24.03125 74.21875 27.59375 74.21875 
+Q 38.234375 74.21875 44.609375 68.875 
+Q 50.984375 63.53125 50.984375 54.6875 
+Q 50.984375 48.6875 47.625 44.671875 
+Q 44.28125 40.671875 37.890625 39.015625 
+z
+" id="DejaVuSansMono-51"/>
+    </defs>
+    <g transform="translate(101.437332 24.663313)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-116"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-104"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-114"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-101"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-115"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-104"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-111"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-108"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-100"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-95"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-109"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-97"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-120"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-95"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-100"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-101"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-110"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-115"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-105"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-116"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-121"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-72"/>
+     <use x="1384.716797" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1444.921875" xlink:href="#DejaVuSansMono-112"/>
+     <use x="1505.126953" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1565.332031" xlink:href="#DejaVuSansMono-99"/>
+     <use x="1625.537109" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1685.742188" xlink:href="#DejaVuSansMono-51"/>
+    </g>
+   </g>
+   <g id="text_15">
+    <!-- threshold_norm_H_p_cm3 -->
+    <g transform="translate(47.005332 96.930882)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-116"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-104"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-114"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-101"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-115"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-104"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-111"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-108"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-100"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-95"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-110"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-111"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-114"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-109"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-95"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-72"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-112"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-99"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-51"/>
+    </g>
+   </g>
+   <g id="text_16">
+    <!-- threshold_Z0 -->
+    <defs>
+     <path d="M 23.578125 36.625 
+Q 23.578125 39.3125 25.453125 41.265625 
+Q 27.34375 43.21875 29.984375 43.21875 
+Q 32.71875 43.21875 34.671875 41.265625 
+Q 36.625 39.3125 36.625 36.625 
+Q 36.625 33.890625 34.6875 31.984375 
+Q 32.765625 30.078125 29.984375 30.078125 
+Q 27.25 30.078125 25.40625 31.9375 
+Q 23.578125 33.796875 23.578125 36.625 
+z
+M 30.078125 66.40625 
+Q 23.1875 66.40625 19.796875 58.984375 
+Q 16.40625 51.5625 16.40625 36.375 
+Q 16.40625 21.234375 19.796875 13.8125 
+Q 23.1875 6.390625 30.078125 6.390625 
+Q 37.015625 6.390625 40.40625 13.8125 
+Q 43.796875 21.234375 43.796875 36.375 
+Q 43.796875 51.5625 40.40625 58.984375 
+Q 37.015625 66.40625 30.078125 66.40625 
+z
+M 30.078125 74.21875 
+Q 41.75 74.21875 47.734375 64.640625 
+Q 53.71875 55.078125 53.71875 36.375 
+Q 53.71875 17.71875 47.734375 8.140625 
+Q 41.75 -1.421875 30.078125 -1.421875 
+Q 18.40625 -1.421875 12.453125 8.140625 
+Q 6.5 17.71875 6.5 36.375 
+Q 6.5 55.078125 12.453125 64.640625 
+Q 18.40625 74.21875 30.078125 74.21875 
+z
+" id="DejaVuSansMono-48"/>
+    </defs>
+    <g transform="translate(148.181028 186.438647)rotate(-90)scale(0.07 -0.07)">
+     <use xlink:href="#DejaVuSansMono-116"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-104"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-114"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-101"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-115"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-104"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-111"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-108"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-100"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-95"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-90"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-48"/>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p23ab05f3c8">
+   <rect height="195.048" width="190.512" x="34.02" y="2.268"/>
+  </clipPath>
+ </defs>
+</svg>
diff --git a/doc/RTD/source/SubgridModels/EAGLE/EAGLE_entropy_floor.svg b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_entropy_floor.svg
index 383b074fc947ed072dc50015152ba694b929c611..2b1061de9c001d4e48574b7ea7029ba1c280e37f 100644
--- a/doc/RTD/source/SubgridModels/EAGLE/EAGLE_entropy_floor.svg
+++ b/doc/RTD/source/SubgridModels/EAGLE/EAGLE_entropy_floor.svg
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
   "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Created with matplotlib (http://matplotlib.org/) -->
-<svg height="226pt" version="1.1" viewBox="0 0 226 226" width="226pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="226.8pt" version="1.1" viewBox="0 0 226.8 226.8" width="226.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
   <style type="text/css">
 *{stroke-linecap:butt;stroke-linejoin:round;}
@@ -35,14 +35,14 @@ L 250.907152 -156.365649
 L 250.907152 -156.365649 
 L 77.714425 -156.365649 
 z
-" id="m8f9d87720a" style="stroke:#e6e6e6;"/>
+" id="m5eebb27285" style="stroke:#e6e6e6;"/>
     </defs>
-    <g clip-path="url(#p107a2e5a22)">
-     <use style="fill:#e6e6e6;stroke:#e6e6e6;" x="0" xlink:href="#m8f9d87720a" y="226.8"/>
+    <g clip-path="url(#pf19aa30d2c)">
+     <use style="fill:#e6e6e6;stroke:#e6e6e6;" x="0" xlink:href="#m5eebb27285" y="226.8"/>
     </g>
    </g>
    <g id="PolyCollection_2">
-    <path clip-path="url(#p107a2e5a22)" d="M 146.991516 49022.756825 
+    <path clip-path="url(#pf19aa30d2c)" d="M 146.991516 49022.756825 
 L 146.991516 85.113175 
 L 250.907152 -12.410825 
 L 250.907152 49022.756825 
@@ -63,15 +63,15 @@ C -0.894634 -0.51958 -1 -0.265203 -1 0
 C -1 0.265203 -0.894634 0.51958 -0.707107 0.707107 
 C -0.51958 0.894634 -0.265203 1 0 1 
 z
-" id="me37d9803e9" style="stroke:#000000;"/>
+" id="mbe6c555b8c" style="stroke:#000000;"/>
     </defs>
-    <g clip-path="url(#p107a2e5a22)">
-     <use style="stroke:#000000;" x="77.714425" xlink:href="#me37d9803e9" y="70.434351"/>
+    <g clip-path="url(#pf19aa30d2c)">
+     <use style="stroke:#000000;" x="77.714425" xlink:href="#mbe6c555b8c" y="70.434351"/>
     </g>
    </g>
    <g id="PathCollection_2">
-    <g clip-path="url(#p107a2e5a22)">
-     <use style="stroke:#000000;" x="146.991516" xlink:href="#me37d9803e9" y="85.113175"/>
+    <g clip-path="url(#pf19aa30d2c)">
+     <use style="stroke:#000000;" x="146.991516" xlink:href="#mbe6c555b8c" y="85.113175"/>
     </g>
    </g>
    <g id="matplotlib.axis_1">
@@ -80,518 +80,1010 @@ z
       <defs>
        <path d="M 0 0 
 L 0 3.5 
-" id="mddab006ef2" style="stroke:#000000;stroke-width:0.8;"/>
+" id="m9a9665ec89" style="stroke:#000000;stroke-width:0.8;"/>
       </defs>
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="60.395152" xlink:href="#mddab006ef2" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="60.395152" xlink:href="#m9a9665ec89" y="197.316"/>
       </g>
      </g>
      <g id="text_1">
-      <!-- $10^{-6}$ -->
+      <!-- $\mathdefault{10^{-6}}$ -->
       <defs>
-       <path d="M 29.09375 67.796875 
-L 11.09375 58.703125 
-L 11.09375 57.296875 
-C 12.296875 57.796875 13.40625 58.203125 13.796875 58.40625 
-C 15.59375 59.109375 17.296875 59.5 18.296875 59.5 
-C 20.40625 59.5 21.296875 57.984375 21.296875 54.765625 
-L 21.296875 9.25 
-C 21.296875 5.921875 20.5 3.625 18.90625 2.703125 
-C 17.40625 1.8125 16 1.5 11.796875 1.5 
-L 11.796875 0 
-L 39.40625 0 
-L 39.40625 1.5 
-C 31.5 1.5 29.90625 2.5 29.90625 7.34375 
-L 29.90625 67.609375 
-z
-" id="Nimbus_Roman_No9_L_Regular-49"/>
-       <path d="M 25.40625 68 
-C 19.90625 68 15.703125 66.3125 12 62.8125 
-C 6.203125 57.203125 2.40625 45.703125 2.40625 34 
-C 2.40625 23.109375 5.703125 11.40625 10.40625 5.8125 
-C 14.09375 1.40625 19.203125 -1 25 -1 
-C 30.09375 -1 34.40625 0.703125 38 4.203125 
-C 43.796875 9.703125 47.59375 21.3125 47.59375 33.40625 
-C 47.59375 53.90625 38.5 68 25.40625 68 
-z
-M 25.09375 65.40625 
-C 33.5 65.40625 38 54.109375 38 33.203125 
-C 38 12.3125 33.59375 1.609375 25 1.609375 
-C 16.40625 1.609375 12 12.3125 12 33.109375 
-C 12 54.3125 16.5 65.40625 25.09375 65.40625 
-z
-" id="Nimbus_Roman_No9_L_Regular-48"/>
-       <path d="M 65.90625 23 
-C 67.59375 23 69.40625 23 69.40625 25 
-C 69.40625 27 67.59375 27 65.90625 27 
-L 11.796875 27 
-C 10.09375 27 8.296875 27 8.296875 25 
-C 8.296875 23 10.09375 23 11.796875 23 
-z
-" id="CMSY10-0"/>
-       <path d="M 44.59375 68.609375 
-C 33.203125 67.609375 27.40625 65.703125 20.09375 60.609375 
-C 9.296875 52.90625 3.40625 41.5 3.40625 28.15625 
-C 3.40625 19.5 6.09375 10.75 10.40625 5.78125 
-C 14.203125 1.390625 19.59375 -1 25.796875 -1 
-C 38.203125 -1 46.796875 8.453125 46.796875 22.203125 
-C 46.796875 34.9375 39.5 43 28 43 
-C 23.59375 43 21.5 42.296875 15.203125 38.5 
-C 17.90625 53.609375 29.09375 64.40625 44.796875 67 
-z
-M 24.203125 38.40625 
-C 32.796875 38.40625 37.796875 31.25 37.796875 18.8125 
-C 37.796875 7.875 33.90625 1.8125 26.90625 1.8125 
-C 18.09375 1.8125 12.703125 11.15625 12.703125 26.5625 
-C 12.703125 31.640625 13.5 34.421875 15.5 35.921875 
-C 17.59375 37.5 20.703125 38.40625 24.203125 38.40625 
-z
-" id="Nimbus_Roman_No9_L_Regular-54"/>
+       <path d="M 8.90625 57.09375 
+L 8.90625 60.203125 
+Q 20.90625 60.203125 27.09375 66.59375 
+Q 28.796875 66.59375 29.09375 66.1875 
+Q 29.40625 65.796875 29.40625 64 
+L 29.40625 7.90625 
+Q 29.40625 4.90625 30.84375 4 
+Q 32.296875 3.09375 38.703125 3.09375 
+L 41.90625 3.09375 
+L 41.90625 0 
+Q 38.40625 0.296875 25.703125 0.296875 
+Q 13 0.296875 9.5 0 
+L 9.5 3.09375 
+L 12.703125 3.09375 
+Q 19 3.09375 20.5 4 
+Q 22 4.90625 22 7.90625 
+L 22 59.703125 
+Q 16.796875 57.09375 8.90625 57.09375 
+z
+" id="CMUSerif-Roman-49"/>
+       <path d="M 3.90625 32 
+Q 3.90625 46.703125 7.59375 54.703125 
+Q 12.796875 66.59375 25 66.59375 
+Q 27.59375 66.59375 30.296875 65.890625 
+Q 33 65.203125 36.453125 62.5 
+Q 39.90625 59.796875 42 55.40625 
+Q 46 46.90625 46 32 
+Q 46 17.40625 42.296875 9.40625 
+Q 36.90625 -2.203125 24.90625 -2.203125 
+Q 20.40625 -2.203125 15.84375 0.09375 
+Q 11.296875 2.40625 8.40625 7.90625 
+Q 3.90625 16.203125 3.90625 32 
+z
+M 12.203125 33.203125 
+Q 12.203125 18.09375 13.296875 12.09375 
+Q 14.5 5.59375 17.84375 2.796875 
+Q 21.203125 0 24.90625 0 
+Q 28.90625 0 32.25 3 
+Q 35.59375 6 36.59375 12.5 
+Q 37.703125 18.90625 37.703125 33.203125 
+Q 37.703125 47.09375 36.703125 52.703125 
+Q 35.40625 59.203125 31.90625 61.796875 
+Q 28.40625 64.40625 24.90625 64.40625 
+Q 23.59375 64.40625 22.1875 64 
+Q 20.796875 63.59375 18.796875 62.5 
+Q 16.796875 61.40625 15.25 58.59375 
+Q 13.703125 55.796875 13 51.59375 
+Q 12.203125 46.203125 12.203125 33.203125 
+z
+" id="CMUSerif-Roman-48"/>
+       <path d="M 1 18.59375 
+L 1 24.5 
+L 27.59375 24.5 
+L 27.59375 18.59375 
+z
+" id="CMUSerif-Roman-45"/>
+       <path d="M 4.203125 31.59375 
+Q 4.203125 47.296875 12.203125 56.9375 
+Q 20.203125 66.59375 30.5 66.59375 
+Q 36.5 66.59375 39.84375 63.546875 
+Q 43.203125 60.5 43.203125 55.796875 
+Q 43.203125 53.203125 41.703125 52.09375 
+Q 40.203125 51 38.59375 51 
+Q 36.796875 51 35.390625 52.203125 
+Q 34 53.40625 34 55.59375 
+Q 34 60.09375 39.5 60.09375 
+Q 36.90625 64.09375 30.703125 64.09375 
+Q 28.796875 64.09375 26.84375 63.546875 
+Q 24.90625 63 22.34375 61.140625 
+Q 19.796875 59.296875 17.84375 56.34375 
+Q 15.90625 53.40625 14.546875 47.90625 
+Q 13.203125 42.40625 13.203125 35.203125 
+L 13.203125 32.796875 
+Q 17.296875 42.703125 25.6875 42.703125 
+Q 34.09375 42.703125 39.890625 36.296875 
+Q 45.703125 29.90625 45.703125 20.40625 
+Q 45.703125 10.703125 39.640625 4.25 
+Q 33.59375 -2.203125 25.09375 -2.203125 
+Q 21.296875 -2.203125 17.84375 -0.59375 
+Q 14.40625 1 11.203125 4.59375 
+Q 8 8.203125 6.09375 15.140625 
+Q 4.203125 22.09375 4.203125 31.59375 
+z
+M 13.40625 22.59375 
+Q 13.40625 12.796875 15.203125 8.09375 
+Q 15.5 7.296875 16.140625 6.25 
+Q 16.796875 5.203125 17.9375 3.796875 
+Q 19.09375 2.40625 21 1.5 
+Q 22.90625 0.59375 25.09375 0.59375 
+Q 31.796875 0.59375 35 7.09375 
+Q 36.703125 10.703125 36.703125 20.5 
+Q 36.703125 30.5 34.90625 34.203125 
+Q 31.796875 40.40625 25.59375 40.40625 
+Q 21.40625 40.40625 18.5 37.5 
+Q 15.59375 34.59375 14.5 30.75 
+Q 13.40625 26.90625 13.40625 22.59375 
+z
+" id="CMUSerif-Roman-54"/>
       </defs>
-      <g transform="translate(50.706631 211.234498)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#CMSY10-0"/>
-       <use transform="translate(156.909271 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-54"/>
+      <g transform="translate(52.295152 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-54"/>
       </g>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="95.033698" xlink:href="#mddab006ef2" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="95.033698" xlink:href="#m9a9665ec89" y="197.316"/>
       </g>
      </g>
      <g id="text_2">
-      <!-- $10^{-4}$ -->
+      <!-- $\mathdefault{10^{-4}}$ -->
       <defs>
-       <path d="M 47.203125 23.390625 
-L 37 23.390625 
-L 37 68 
-L 32.59375 68 
-L 1.203125 23.390625 
-L 1.203125 17 
-L 29.296875 17 
-L 29.296875 0.5 
-L 37 0.5 
-L 37 17 
-L 47.203125 17 
-z
-M 29.203125 23.390625 
-L 5.203125 23.390625 
-L 29.203125 57.78125 
-z
-" id="Nimbus_Roman_No9_L_Regular-52"/>
+       <path d="M 2.796875 16.5 
+L 2.796875 19.59375 
+L 33.5 66.5 
+Q 34.296875 67.703125 35.5 67.703125 
+Q 36.59375 67.703125 36.84375 67.25 
+Q 37.09375 66.796875 37.09375 65.09375 
+L 37.09375 19.59375 
+L 47.09375 19.59375 
+L 47.09375 16.5 
+L 37.09375 16.5 
+L 37.09375 7.796875 
+Q 37.09375 4.90625 38.296875 4 
+Q 39.5 3.09375 44.703125 3.09375 
+L 46.796875 3.09375 
+L 46.796875 0 
+Q 42.703125 0.296875 33.203125 0.296875 
+Q 23.796875 0.296875 19.703125 0 
+L 19.703125 3.09375 
+L 21.796875 3.09375 
+Q 27 3.09375 28.203125 4 
+Q 29.40625 4.90625 29.40625 7.796875 
+L 29.40625 16.5 
+z
+M 5.59375 19.59375 
+L 30 19.59375 
+L 30 56.90625 
+z
+" id="CMUSerif-Roman-52"/>
       </defs>
-      <g transform="translate(85.345176 211.234498)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#CMSY10-0"/>
-       <use transform="translate(156.909271 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-52"/>
+      <g transform="translate(86.933698 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.442188)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.442188)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-52"/>
       </g>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="129.672243" xlink:href="#mddab006ef2" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="129.672243" xlink:href="#m9a9665ec89" y="197.316"/>
       </g>
      </g>
      <g id="text_3">
-      <!-- $10^{-2}$ -->
+      <!-- $\mathdefault{10^{-2}}$ -->
       <defs>
-       <path d="M 47.5 13.671875 
-L 46.203125 14.171875 
-C 42.5 8.5 41.203125 7.59375 36.703125 7.59375 
-L 12.796875 7.59375 
-L 29.59375 25.140625 
-C 38.5 34.40625 42.40625 41.984375 42.40625 49.765625 
-C 42.40625 59.734375 34.296875 67.390625 23.90625 67.390625 
-C 18.40625 67.390625 13.203125 65.203125 9.5 61.21875 
-C 6.296875 57.8125 4.796875 54.625 3.09375 47.546875 
-L 5.203125 47.046875 
-C 9.203125 56.8125 12.796875 60 19.703125 60 
-C 28.09375 60 33.796875 54.3125 33.796875 45.9375 
-C 33.796875 38.171875 29.203125 28.90625 20.796875 20.03125 
-L 3 1.203125 
-L 3 0 
-L 42 0 
-z
-" id="Nimbus_Roman_No9_L_Regular-50"/>
+       <path d="M 5 0 
+Q 5 1.796875 5.140625 2.34375 
+Q 5.296875 2.90625 6.09375 3.703125 
+L 25.296875 25.09375 
+Q 35.796875 36.90625 35.796875 47.203125 
+Q 35.796875 53.90625 32.296875 58.703125 
+Q 28.796875 63.5 22.40625 63.5 
+Q 18 63.5 14.296875 60.796875 
+Q 10.59375 58.09375 8.90625 53.296875 
+Q 9.203125 53.40625 10.203125 53.40625 
+Q 12.703125 53.40625 14.09375 51.84375 
+Q 15.5 50.296875 15.5 48.203125 
+Q 15.5 45.5 13.75 44.203125 
+Q 12 42.90625 10.296875 42.90625 
+Q 9.59375 42.90625 8.6875 43.046875 
+Q 7.796875 43.203125 6.390625 44.59375 
+Q 5 46 5 48.5 
+Q 5 55.5 10.296875 61.046875 
+Q 15.59375 66.59375 23.703125 66.59375 
+Q 32.90625 66.59375 38.90625 61.140625 
+Q 44.90625 55.703125 44.90625 47.203125 
+Q 44.90625 44.203125 44 41.5 
+Q 43.09375 38.796875 41.890625 36.6875 
+Q 40.703125 34.59375 37.5 31.25 
+Q 34.296875 27.90625 31.6875 25.5 
+Q 29.09375 23.09375 23.296875 18 
+L 12.703125 7.703125 
+L 30.703125 7.703125 
+Q 39.5 7.703125 40.203125 8.5 
+Q 41.203125 9.90625 42.40625 17.40625 
+L 44.90625 17.40625 
+L 42.09375 0 
+z
+" id="CMUSerif-Roman-50"/>
       </defs>
-      <g transform="translate(119.983722 211.234498)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#CMSY10-0"/>
-       <use transform="translate(156.909271 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-50"/>
+      <g transform="translate(121.572243 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-45"/>
+       <use transform="translate(124.064102 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
       </g>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="164.310789" xlink:href="#mddab006ef2" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="164.310789" xlink:href="#m9a9665ec89" y="197.316"/>
       </g>
      </g>
      <g id="text_4">
-      <!-- $10^{0}$ -->
-      <g transform="translate(157.486382 211.234498)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
+      <!-- $\mathdefault{10^{0}}$ -->
+      <g transform="translate(157.410789 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-48"/>
       </g>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="198.949334" xlink:href="#mddab006ef2" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="198.949334" xlink:href="#m9a9665ec89" y="197.316"/>
       </g>
      </g>
      <g id="text_5">
-      <!-- $10^{2}$ -->
-      <g transform="translate(192.124927 211.234498)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-50"/>
+      <!-- $\mathdefault{10^{2}}$ -->
+      <g transform="translate(192.049334 211.256625)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
       </g>
      </g>
     </g>
     <g id="text_6">
-     <!-- ${\rm Density}~n_{\rm H}~[{\rm cm^{-3}}]$ -->
+     <!-- Hydrogen number density $n_{\rm H}$ [cm$^{-3}$] -->
      <defs>
-      <path d="M 10.40625 10.609375 
-C 10.40625 3.390625 9.203125 2.09375 1.59375 2.09375 
-L 1.59375 0 
-L 30 0 
-C 41.59375 0 52.09375 3.28125 58.296875 8.875 
-C 64.796875 14.75 68.5 23.625 68.5 33.296875 
-C 68.5 42.28125 65.5 50.046875 60 55.53125 
-C 53.203125 62.40625 42.296875 66 28.59375 66 
-L 1.59375 66 
-L 1.59375 64.09375 
-C 9.5 63.390625 10.40625 62.5 10.40625 55.078125 
-z
-M 20.59375 58.40625 
-C 20.59375 61.5 21.703125 62.296875 25.796875 62.296875 
-C 34.40625 62.296875 40.90625 60.703125 45.703125 57.3125 
-C 53.5 51.921875 57.59375 43.359375 57.59375 32.609375 
-C 57.59375 20.84375 53.5 12.46875 45.40625 7.78125 
-C 40.296875 4.90625 34.5 3.703125 25.796875 3.703125 
-C 21.796875 3.703125 20.59375 4.59375 20.59375 7.78125 
-z
-" id="Nimbus_Roman_No9_L_Regular-68"/>
-      <path d="M 40.796875 16.453125 
-C 36 8.8125 31.703125 5.90625 25.296875 5.90625 
-C 19.59375 5.90625 15.296875 8.8125 12.40625 14.53125 
-C 10.59375 18.34375 9.90625 21.65625 9.703125 27.796875 
-L 40.5 27.796875 
-C 39.703125 34.265625 38.703125 37.140625 36.203125 40.328125 
-C 33.203125 43.921875 28.59375 46 23.40625 46 
-C 18.40625 46 13.703125 44.203125 9.90625 40.796875 
-C 5.203125 36.703125 2.5 29.59375 2.5 21.40625 
-C 2.5 7.59375 9.703125 -1 21.203125 -1 
-C 30.703125 -1 38.203125 4.921875 42.40625 15.75 
-z
-M 9.90625 31 
-C 11 38.734375 14.40625 42.40625 20.5 42.40625 
-C 26.59375 42.40625 29 39.609375 30.296875 31 
-z
-" id="Nimbus_Roman_No9_L_Regular-101"/>
-      <path d="M 1.59375 40.296875 
-C 2.203125 40.59375 3.203125 40.703125 4.296875 40.703125 
-C 7.09375 40.703125 8 39.203125 8 34.296875 
-L 8 9.5 
-C 8 3.796875 6.90625 2.40625 1.796875 2 
-L 1.796875 0.5 
-L 23 0.5 
-L 23 2 
-C 17.90625 2.40625 16.40625 3.59375 16.40625 7.203125 
-L 16.40625 35.296875 
-C 21.203125 39.796875 23.40625 41 26.703125 41 
-C 31.59375 41 34 37.90625 34 31.296875 
-L 34 10.40625 
-C 34 4.09375 32.703125 2.40625 27.703125 2 
-L 27.703125 0.5 
-L 48.5 0.5 
-L 48.5 2 
-C 43.59375 2.5 42.40625 3.703125 42.40625 8.59375 
-L 42.40625 31.5 
-C 42.40625 40.90625 38 46.5 30.59375 46.5 
-C 26 46.5 22.90625 44.796875 16.09375 38.40625 
-L 16.09375 46.296875 
-L 15.40625 46.5 
-C 10.5 44.703125 7.09375 43.59375 1.59375 42 
-z
-" id="Nimbus_Roman_No9_L_Regular-110"/>
-      <path d="M 31.5 31.40625 
-L 31.09375 45 
-L 30 45 
-L 29.796875 44.796875 
-C 28.90625 44.09375 28.796875 44 28.40625 44 
-C 27.796875 44 26.796875 44.203125 25.703125 44.703125 
-C 23.5 45.546875 21.296875 46 18.703125 46 
-C 10.796875 46 5.09375 40.875 5.09375 33.65625 
-C 5.09375 28.0625 8.296875 24.046875 16.796875 19.234375 
-L 22.59375 15.9375 
-C 26.09375 13.9375 27.796875 11.515625 27.796875 8.421875 
-C 27.796875 4 24.59375 1.203125 19.5 1.203125 
-C 16.09375 1.203125 13 2.484375 11.09375 4.65625 
-C 9 7.109375 8.09375 9.375 6.796875 15 
-L 5.203125 15 
-L 5.203125 -0.609375 
-L 6.5 -0.609375 
-C 7.203125 0.515625 7.59375 0.75 8.796875 0.75 
-C 9.703125 0.75 11.09375 0.546875 13.40625 -0.03125 
-C 16.203125 -0.609375 18.90625 -1 20.703125 -1 
-C 28.40625 -1 34.796875 4.8125 34.796875 11.828125 
-C 34.796875 16.828125 32.40625 20.140625 26.40625 23.75 
-L 15.59375 30.15625 
-C 12.796875 31.765625 11.296875 34.28125 11.296875 36.984375 
-C 11.296875 41 14.40625 43.796875 19 43.796875 
-C 24.703125 43.796875 27.703125 40.359375 30 31.40625 
-z
-" id="Nimbus_Roman_No9_L_Regular-115"/>
-      <path d="M 17.5 45.765625 
-L 2 40.296875 
-L 2 38.8125 
-L 2.796875 38.90625 
-C 4 39.09375 5.296875 39.203125 6.203125 39.203125 
-C 8.59375 39.203125 9.5 37.59375 9.5 33.203125 
-L 9.5 10 
-C 9.5 2.796875 8.5 1.703125 1.59375 1.703125 
-L 1.59375 0 
-L 25.296875 0 
-L 25.296875 1.5 
-C 18.703125 2 17.90625 2.984375 17.90625 10.15625 
-L 17.90625 45.46875 
-z
-M 12.796875 68 
-C 10.09375 68 7.796875 65.703125 7.796875 62.90625 
-C 7.796875 60.109375 10 57.796875 12.796875 57.796875 
-C 15.703125 57.796875 18 60 18 62.90625 
-C 18 65.703125 15.703125 68 12.796875 68 
-z
-" id="Nimbus_Roman_No9_L_Regular-105"/>
-      <path d="M 25.5 45 
-L 15.40625 45 
-L 15.40625 56.59375 
-C 15.40625 57.59375 15.296875 57.90625 14.703125 57.90625 
-C 14 57 13.40625 56.09375 12.703125 55.09375 
-C 8.90625 49.59375 4.59375 44.796875 3 44.390625 
-C 1.90625 43.65625 1.296875 42.9375 1.296875 42.421875 
-C 1.296875 42.109375 1.40625 41.90625 1.703125 41.90625 
-L 7 41.90625 
-L 7 11.734375 
-C 7 3.3125 10 -1 15.90625 -1 
-C 20.796875 -1 24.59375 1.40625 27.90625 6.609375 
-L 26.59375 7.703125 
-C 24.5 5.203125 22.796875 4.203125 20.59375 4.203125 
-C 16.90625 4.203125 15.40625 6.921875 15.40625 13.234375 
-L 15.40625 41.90625 
-L 25.5 41.90625 
-z
-" id="Nimbus_Roman_No9_L_Regular-116"/>
-      <path d="M 47.5 45 
-L 34 45 
-L 34 43.5 
-C 37.203125 43.5 38.796875 42.59375 38.796875 40.984375 
-C 38.796875 40.578125 38.703125 39.984375 38.40625 39.28125 
-L 28.703125 11.59375 
-L 17.203125 37.140625 
-C 16.59375 38.5625 16.203125 39.875 16.203125 40.96875 
-C 16.203125 42.796875 17.703125 43.5 22 43.5 
-L 22 45 
-L 1.40625 45 
-L 1.40625 43.59375 
-C 4 43.203125 5.703125 42.09375 6.5 40.390625 
-L 17.90625 15.703125 
-L 18.203125 14.890625 
-L 19.703125 11.890625 
-C 22.5 6.875 24.09375 3.265625 24.09375 1.75 
-C 24.09375 0.25 21.796875 -6.078125 20.09375 -9.09375 
-C 18.703125 -11.703125 16.5 -13.609375 15.09375 -13.609375 
-C 14.5 -13.609375 13.59375 -13.40625 12.59375 -12.90625 
-C 10.703125 -12.203125 9 -11.796875 7.296875 -11.796875 
-C 5 -11.796875 3 -13.796875 3 -16.203125 
-C 3 -19.5 6.203125 -22 10.40625 -22 
-C 17.09375 -22 21.90625 -16.390625 27.296875 -1.9375 
-L 42.703125 38.984375 
-C 44 42.203125 45.09375 43.203125 47.5 43.5 
-z
-" id="Nimbus_Roman_No9_L_Regular-121"/>
-      <path d="M 46 11.546875 
-L 43.90625 8.9375 
-C 41 5.234375 39.203125 3.625 37.796875 3.625 
-C 37 3.625 36.203125 4.421875 36.203125 5.21875 
-C 36.203125 5.9375 36.203125 5.9375 37.59375 11.53125 
-L 43.296875 32.1875 
-C 43.796875 34.28125 44.203125 36.484375 44.203125 37.890625 
-C 44.203125 41.5 41.5 44 37.59375 44 
-C 31.203125 44 24.90625 38 14.59375 21.96875 
-L 21.296875 43.796875 
-L 21 43.984375 
-C 15.59375 42.890625 13.5 42.5 4.796875 40.90625 
-L 4.796875 39.21875 
-C 9.90625 39.21875 11.203125 38.625 11.203125 36.609375 
-C 11.203125 36 11.09375 35.40625 11 34.90625 
-L 1.40625 -0.1875 
-L 8.90625 -0.1875 
-C 13.59375 15.65625 14.5 17.875 18.90625 24.6875 
-C 24.90625 33.890625 30 38.921875 33.703125 38.921875 
-C 35.203125 38.921875 36.09375 37.8125 36.09375 36 
-C 36.09375 34.8125 35.5 31.5 34.703125 28.390625 
-L 30.296875 11.84375 
-C 29 6.734375 28.703125 5.328125 28.703125 4.328125 
-C 28.703125 0.515625 30.09375 -1.078125 33.40625 -1.078125 
-C 37.90625 -1.078125 40.5 1.03125 47.40625 10.25 
-z
-" id="Nimbus_Roman_No9_L_Regular_Italic-110"/>
-      <path d="M 20.90625 36 
-L 20.90625 55.203125 
-C 20.90625 62.34375 22 63.421875 29.703125 64.125 
-L 29.703125 66 
-L 1.90625 66 
-L 1.90625 64.125 
-C 9.59375 63.421875 10.703125 62.328125 10.703125 55.109375 
-L 10.703125 11.703125 
-C 10.703125 3.28125 9.703125 2.09375 1.90625 2.09375 
-L 1.90625 0 
-L 29.703125 0 
-L 29.703125 1.890625 
-C 22.203125 2.484375 20.90625 3.78125 20.90625 10.921875 
-L 20.90625 31.59375 
-L 51.203125 31.59375 
-L 51.203125 11.828125 
-C 51.203125 3.296875 50.203125 2.09375 42.40625 2.09375 
-L 42.40625 0 
-L 70.203125 0 
-L 70.203125 1.890625 
-C 62.703125 2.484375 61.40625 3.78125 61.40625 10.875 
-L 61.40625 55.140625 
-C 61.40625 62.328125 62.5 63.421875 70.203125 64.125 
-L 70.203125 66 
-L 42.40625 66 
-L 42.40625 64.125 
-C 50.09375 63.421875 51.203125 62.34375 51.203125 55.203125 
-L 51.203125 36 
-z
-" id="Nimbus_Roman_No9_L_Regular-72"/>
-      <path d="M 25.5 -25 
-L 25.5 -20.984375 
-L 15.796875 -20.984375 
-L 15.796875 71 
-L 25.5 71 
-L 25.5 75.015625 
-L 11.796875 75.015625 
-L 11.796875 -25 
-z
-" id="CMR10-91"/>
-      <path d="M 39.796875 15.59375 
-C 35 8.59375 31.40625 6.203125 25.703125 6.203125 
-C 16.59375 6.203125 10.203125 14.203125 10.203125 25.703125 
-C 10.203125 36 15.703125 43.09375 23.796875 43.09375 
-C 27.40625 43.09375 28.703125 42 29.703125 38.296875 
-L 30.296875 36.09375 
-C 31.09375 33.296875 32.90625 31.5 35 31.5 
-C 37.59375 31.5 39.796875 33.40625 39.796875 35.703125 
-C 39.796875 41.296875 32.796875 46 24.40625 46 
-C 19.5 46 14.40625 44 10.296875 40.40625 
-C 5.296875 36 2.5 29.203125 2.5 21.296875 
-C 2.5 8.296875 10.40625 -1 21.5 -1 
-C 26 -1 30 0.59375 33.59375 3.703125 
-C 36.296875 6.09375 38.203125 8.796875 41.203125 14.703125 
-z
-" id="Nimbus_Roman_No9_L_Regular-99"/>
-      <path d="M 1.90625 39.796875 
-C 3.203125 40.09375 4 40.203125 5.09375 40.203125 
-C 7.703125 40.203125 8.59375 38.59375 8.59375 33.78125 
-L 8.59375 8.421875 
-C 8.59375 3 7.203125 1.5 1.59375 1.5 
-L 1.59375 0 
-L 23.796875 0 
-L 23.796875 1.5 
-C 18.5 1.5 17 2.59375 17 6.53125 
-L 17 34.90625 
-C 17 35.09375 17.796875 36.09375 18.5 36.796875 
-C 21 39.09375 25.296875 40.796875 28.796875 40.796875 
-C 33.203125 40.796875 35.40625 37.265625 35.40625 30.1875 
-L 35.40625 8.25 
-C 35.40625 2.609375 34.296875 1.5 28.59375 1.5 
-L 28.59375 0 
-L 51 0 
-L 51 1.5 
-C 45.296875 1.5 43.796875 3.203125 43.796875 9.421875 
-L 43.796875 34.703125 
-C 46.796875 39 50.09375 40.796875 54.703125 40.796875 
-C 60.40625 40.796875 62.203125 38.09375 62.203125 29.796875 
-L 62.203125 8.703125 
-C 62.203125 3 61.40625 2.203125 55.59375 1.5 
-L 55.59375 0 
-L 77.5 0 
-L 77.5 1.5 
-L 74.90625 1.796875 
-C 71.90625 1.796875 70.59375 3.59375 70.59375 7.5 
-L 70.59375 28.15625 
-C 70.59375 39.984375 66.703125 46 59 46 
-C 53.203125 46 48.09375 43.40625 42.703125 37.609375 
-C 40.90625 43.296875 37.5 46 32.09375 46 
-C 27.703125 46 24.90625 44.59375 16.59375 38.296875 
-L 16.59375 45.796875 
-L 15.90625 46 
-C 10.796875 44.09375 7.40625 43 1.90625 41.5 
-z
-" id="Nimbus_Roman_No9_L_Regular-109"/>
-      <path d="M 15.296875 33.40625 
-C 21.203125 33.40625 23.5 33.203125 25.90625 32.3125 
-C 32.09375 30.109375 36 24.40625 36 17.5 
-C 36 9.109375 30.296875 2.609375 22.90625 2.609375 
-C 20.203125 2.609375 18.203125 3.3125 14.5 5.703125 
-C 11.5 7.5 9.796875 8.203125 8.09375 8.203125 
-C 5.796875 8.203125 4.296875 6.8125 4.296875 4.703125 
-C 4.296875 1.203125 8.59375 -1 15.59375 -1 
-C 23.296875 -1 31.203125 1.609375 35.90625 5.703125 
-C 40.59375 9.8125 43.203125 15.609375 43.203125 22.3125 
-C 43.203125 27.40625 41.59375 32.109375 38.703125 35.203125 
-C 36.703125 37.40625 34.796875 38.609375 30.40625 40.5 
-C 37.296875 45.203125 39.796875 48.90625 39.796875 54.3125 
-C 39.796875 62.40625 33.40625 68 24.203125 68 
-C 19.203125 68 14.796875 66.3125 11.203125 63.109375 
-C 8.203125 60.40625 6.703125 57.796875 4.5 51.796875 
-L 6 51.40625 
-C 10.09375 58.703125 14.59375 62 20.90625 62 
-C 27.40625 62 31.90625 57.609375 31.90625 51.3125 
-C 31.90625 47.703125 30.40625 44.109375 27.90625 41.609375 
-C 24.90625 38.609375 22.09375 37.109375 15.296875 34.703125 
-z
-" id="Nimbus_Roman_No9_L_Regular-51"/>
-      <path d="M 15.90625 75.015625 
-L 2.203125 75.015625 
-L 2.203125 71 
-L 11.90625 71 
-L 11.90625 -20.984375 
-L 2.203125 -20.984375 
-L 2.203125 -25 
-L 15.90625 -25 
-z
-" id="CMR10-93"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+L 5.703125 3.09375 
+Q 11.09375 3.09375 12.34375 4 
+Q 13.59375 4.90625 13.59375 7.796875 
+L 13.59375 60.5 
+Q 13.59375 63.40625 12.34375 64.296875 
+Q 11.09375 65.203125 5.703125 65.203125 
+L 3.296875 65.203125 
+L 3.296875 68.296875 
+Q 6.796875 68 18.09375 68 
+Q 29.296875 68 32.796875 68.296875 
+L 32.796875 65.203125 
+L 30.40625 65.203125 
+Q 25 65.203125 23.75 64.296875 
+Q 22.5 63.40625 22.5 60.5 
+L 22.5 37.09375 
+L 52.40625 37.09375 
+L 52.40625 60.5 
+Q 52.40625 63.40625 51.15625 64.296875 
+Q 49.90625 65.203125 44.5 65.203125 
+L 42.09375 65.203125 
+L 42.09375 68.296875 
+Q 45.59375 68 56.90625 68 
+Q 68.09375 68 71.59375 68.296875 
+L 71.59375 65.203125 
+L 69.203125 65.203125 
+Q 63.796875 65.203125 62.546875 64.296875 
+Q 61.296875 63.40625 61.296875 60.5 
+L 61.296875 7.796875 
+Q 61.296875 4.90625 62.546875 4 
+Q 63.796875 3.09375 69.203125 3.09375 
+L 71.59375 3.09375 
+L 71.59375 0 
+Q 68.09375 0.296875 56.796875 0.296875 
+Q 45.59375 0.296875 42.09375 0 
+L 42.09375 3.09375 
+L 44.5 3.09375 
+Q 49.90625 3.09375 51.15625 4 
+Q 52.40625 4.90625 52.40625 7.796875 
+L 52.40625 34 
+L 22.5 34 
+L 22.5 7.796875 
+Q 22.5 4.90625 23.75 4 
+Q 25 3.09375 30.40625 3.09375 
+L 32.796875 3.09375 
+L 32.796875 0 
+Q 29.296875 0.296875 18 0.296875 
+Q 6.796875 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-72"/>
+      <path d="M 1.90625 -12.40625 
+Q 1.90625 -10.296875 3.15625 -9.1875 
+Q 4.40625 -8.09375 6.09375 -8.09375 
+Q 7.90625 -8.09375 9.09375 -9.25 
+Q 10.296875 -10.40625 10.296875 -12.296875 
+Q 10.296875 -16 6.40625 -16.5 
+Q 8.296875 -18.296875 11.09375 -18.296875 
+Q 14.09375 -18.296875 16.5 -16.09375 
+Q 18.90625 -13.90625 19.953125 -11.796875 
+Q 21 -9.703125 22.5 -5.90625 
+Q 23.90625 -2.90625 25 0 
+L 10 36.5 
+Q 9 38.90625 7.5 39.453125 
+Q 6 40 1.90625 40 
+L 1.90625 43.09375 
+Q 6.40625 42.796875 11.59375 42.796875 
+Q 14.703125 42.796875 22.5 43.09375 
+L 22.5 40 
+Q 16.90625 40 16.90625 37.40625 
+Q 16.90625 37.09375 17.5 35.59375 
+L 28.59375 8.703125 
+L 38.703125 33.296875 
+Q 39.296875 34.703125 39.296875 35.703125 
+Q 39.296875 39.796875 34.59375 40 
+L 34.59375 43.09375 
+Q 41.203125 42.796875 43.296875 42.796875 
+Q 47.40625 42.796875 50.796875 43.09375 
+L 50.796875 40 
+Q 44.09375 40 41.5 33.59375 
+L 23.90625 -9.09375 
+Q 19.09375 -20.5 11.09375 -20.5 
+Q 7.296875 -20.5 4.59375 -18.140625 
+Q 1.90625 -15.796875 1.90625 -12.40625 
+z
+" id="CMUSerif-Roman-121"/>
+      <path d="M 3.40625 21.5 
+Q 3.40625 31 10.046875 37.59375 
+Q 16.703125 44.203125 25.703125 44.203125 
+Q 33.296875 44.203125 38.296875 38 
+L 38.296875 59.59375 
+Q 38.296875 63.296875 37 64.25 
+Q 35.703125 65.203125 30.5 65.203125 
+L 30.5 68.296875 
+L 44.90625 69.40625 
+L 44.90625 8.703125 
+Q 44.90625 5 46.203125 4.046875 
+Q 47.5 3.09375 52.703125 3.09375 
+L 52.703125 0 
+L 38 -1.09375 
+L 38 5.5 
+Q 32.796875 -1.09375 24.59375 -1.09375 
+Q 16 -1.09375 9.703125 5.5 
+Q 3.40625 12.09375 3.40625 21.5 
+z
+M 11.703125 21.40625 
+Q 11.703125 12.09375 14.59375 7.5 
+Q 18.59375 1.09375 25.09375 1.09375 
+Q 32.5 1.09375 36.90625 8.09375 
+Q 38 9.796875 38 11.796875 
+L 38 32.296875 
+Q 38 34.296875 36.90625 36 
+Q 32.796875 42 26.09375 42 
+Q 19.09375 42 14.796875 35.59375 
+Q 11.703125 30.796875 11.703125 21.40625 
+z
+" id="CMUSerif-Roman-100"/>
+      <path d="M 2.796875 0 
+L 2.796875 3.09375 
+Q 8.09375 3.09375 9.34375 3.75 
+Q 10.59375 4.40625 10.59375 7.59375 
+L 10.59375 34.40625 
+Q 10.59375 38.09375 9.296875 39.046875 
+Q 8 40 2.796875 40 
+L 2.796875 43.09375 
+L 16.703125 44.203125 
+L 16.703125 33.203125 
+Q 18.09375 37.5 21.09375 40.84375 
+Q 24.09375 44.203125 29 44.203125 
+Q 32.203125 44.203125 34.296875 42.390625 
+Q 36.40625 40.59375 36.40625 38.09375 
+Q 36.40625 35.90625 35.046875 34.796875 
+Q 33.703125 33.703125 32.09375 33.703125 
+Q 30.296875 33.703125 29.046875 34.84375 
+Q 27.796875 36 27.796875 38 
+Q 27.796875 39.203125 28.34375 40.140625 
+Q 28.90625 41.09375 29.34375 41.4375 
+Q 29.796875 41.796875 30.09375 41.90625 
+Q 29.90625 42 29 42 
+Q 23.5 42 20.34375 36.5 
+Q 17.203125 31 17.203125 23.203125 
+L 17.203125 7.796875 
+Q 17.203125 4.90625 18.390625 4 
+Q 19.59375 3.09375 24.796875 3.09375 
+L 26.90625 3.09375 
+L 26.90625 0 
+Q 22.90625 0.296875 14.203125 0.296875 
+Q 13 0.296875 11.09375 0.25 
+Q 9.203125 0.203125 6.703125 0.09375 
+Q 4.203125 0 2.796875 0 
+z
+" id="CMUSerif-Roman-114"/>
+      <path d="M 16 -1.09375 
+Q 2.796875 11.90625 2.796875 21.40625 
+Q 2.796875 30.90625 9.25 37.84375 
+Q 15.703125 44.796875 25 44.796875 
+Q 34.09375 44.796875 40.59375 37.890625 
+Q 47.09375 31 47.09375 21.40625 
+Q 47.09375 12 40.546875 5.453125 
+Q 34 -1.09375 24.90625 -1.09375 
+Q 16 -1.09375 2.796875 11.90625 
+z
+M 11.09375 22.203125 
+Q 11.09375 12.5 13.59375 8.09375 
+Q 17.5 1.40625 25 1.40625 
+Q 28.703125 1.40625 31.796875 3.40625 
+Q 34.90625 5.40625 36.59375 8.796875 
+Q 38.796875 13.203125 38.796875 22.203125 
+Q 38.796875 31.796875 36.203125 36.09375 
+Q 32.296875 42.59375 24.90625 42.59375 
+Q 21.703125 42.59375 18.546875 40.890625 
+Q 15.40625 39.203125 13.5 35.90625 
+Q 11.09375 31.5 11.09375 22.203125 
+z
+" id="CMUSerif-Roman-111"/>
+      <path d="M 2.796875 -7.90625 
+Q 2.796875 -4.703125 5.25 -1.890625 
+Q 7.703125 0.90625 12 2.09375 
+Q 7.59375 4.90625 7.59375 11 
+Q 7.59375 15.703125 10.703125 19.296875 
+Q 6 23.203125 6 29.59375 
+Q 6 35.5 10.703125 39.84375 
+Q 15.40625 44.203125 22.203125 44.203125 
+Q 28.203125 44.203125 32.796875 40.59375 
+Q 37.59375 45.296875 43.40625 45.296875 
+Q 46 45.296875 47.25 43.6875 
+Q 48.5 42.09375 48.5 40.40625 
+Q 48.5 38.90625 47.546875 38.15625 
+Q 46.59375 37.40625 45.59375 37.40625 
+Q 44.40625 37.40625 43.546875 38.203125 
+Q 42.703125 39 42.703125 40.296875 
+Q 42.703125 42.40625 44.296875 43 
+Q 44 43.09375 43.296875 43.09375 
+Q 38.40625 43.09375 34.296875 39.203125 
+Q 38.40625 35.40625 38.40625 29.5 
+Q 38.40625 23.59375 33.703125 19.25 
+Q 29 14.90625 22.203125 14.90625 
+Q 16.59375 14.90625 12.296875 18 
+Q 10.59375 16 10.59375 13.296875 
+Q 10.59375 10.796875 12.09375 8.84375 
+Q 13.59375 6.90625 15.90625 6.59375 
+Q 16.59375 6.5 23.40625 6.5 
+Q 27.40625 6.5 29.59375 6.390625 
+Q 31.796875 6.296875 34.9375 5.640625 
+Q 38.09375 5 40.59375 3.703125 
+Q 47.09375 0.09375 47.09375 -7.703125 
+Q 47.09375 -13.40625 40.546875 -17 
+Q 34 -20.59375 24.90625 -20.59375 
+Q 15.703125 -20.59375 9.25 -16.9375 
+Q 2.796875 -13.296875 2.796875 -7.90625 
+z
+M 8 -7.90625 
+Q 8 -12 12.84375 -15.140625 
+Q 17.703125 -18.296875 25 -18.296875 
+Q 32.203125 -18.296875 37.046875 -15.1875 
+Q 41.90625 -12.09375 41.90625 -7.90625 
+Q 41.90625 -4.90625 40.203125 -3 
+Q 38.5 -1.09375 35 -0.34375 
+Q 31.5 0.40625 29.046875 0.546875 
+Q 26.59375 0.703125 22.09375 0.703125 
+L 16.203125 0.703125 
+Q 12.796875 0.5 10.390625 -2 
+Q 8 -4.5 8 -7.90625 
+z
+M 13.5 29.5 
+Q 13.5 17.203125 22.203125 17.203125 
+Q 26.59375 17.203125 29.296875 21.203125 
+Q 30.90625 23.90625 30.90625 29.59375 
+Q 30.90625 41.90625 22.203125 41.90625 
+Q 17.796875 41.90625 15.09375 37.90625 
+Q 13.5 35.203125 13.5 29.5 
+z
+" id="CMUSerif-Roman-103"/>
+      <path d="M 2.796875 22 
+Q 2.796875 31.40625 8.84375 38.09375 
+Q 14.90625 44.796875 23.59375 44.796875 
+Q 32.40625 44.796875 36.953125 39.09375 
+Q 41.5 33.40625 41.5 25.203125 
+Q 41.5 23.703125 41.09375 23.390625 
+Q 40.703125 23.09375 39 23.09375 
+L 11.09375 23.09375 
+Q 11.09375 12.90625 14.09375 8.09375 
+Q 18.296875 1.40625 25.40625 1.40625 
+Q 26.40625 1.40625 27.546875 1.59375 
+Q 28.703125 1.796875 31.09375 2.640625 
+Q 33.5 3.5 35.59375 5.796875 
+Q 37.703125 8.09375 38.90625 11.703125 
+Q 39.203125 13.09375 40.203125 13.09375 
+Q 41.5 13.09375 41.5 11.90625 
+Q 41.5 11 40.546875 9.046875 
+Q 39.59375 7.09375 37.796875 4.75 
+Q 36 2.40625 32.5 0.65625 
+Q 29 -1.09375 24.796875 -1.09375 
+Q 16 -1.09375 9.390625 5.546875 
+Q 2.796875 12.203125 2.796875 22 
+z
+M 11.203125 25.203125 
+L 34.90625 25.203125 
+Q 34.90625 27.296875 34.546875 29.640625 
+Q 34.203125 32 33.140625 35.25 
+Q 32.09375 38.5 29.640625 40.546875 
+Q 27.203125 42.59375 23.59375 42.59375 
+Q 22 42.59375 20.25 41.890625 
+Q 18.5 41.203125 16.390625 39.546875 
+Q 14.296875 37.90625 12.84375 34.15625 
+Q 11.40625 30.40625 11.203125 25.203125 
+z
+" id="CMUSerif-Roman-101"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 39.59375 44.203125 42.59375 40.5 
+Q 44.796875 38 45.25 35.203125 
+Q 45.703125 32.40625 45.703125 25.203125 
+L 45.703125 6.09375 
+Q 45.796875 4 47.390625 3.546875 
+Q 49 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-110"/>
+      <path id="CMUSerif-Roman-32"/>
+      <path d="M 3.203125 40 
+L 3.203125 43.09375 
+L 17.90625 44.203125 
+L 17.90625 11 
+Q 17.90625 8.59375 18.09375 7.1875 
+Q 18.296875 5.796875 19.09375 4.1875 
+Q 19.90625 2.59375 21.796875 1.84375 
+Q 23.703125 1.09375 26.703125 1.09375 
+Q 32.09375 1.09375 35.4375 5.546875 
+Q 38.796875 10 38.796875 16.59375 
+L 38.796875 34.40625 
+Q 38.796875 38.09375 37.5 39.046875 
+Q 36.203125 40 31 40 
+L 31 43.09375 
+L 45.703125 44.203125 
+L 45.703125 8.703125 
+Q 45.703125 5 47 4.046875 
+Q 48.296875 3.09375 53.5 3.09375 
+L 53.5 0 
+L 39.09375 -1.09375 
+L 39.09375 7.90625 
+Q 34.90625 -1.09375 26.203125 -1.09375 
+Q 21.796875 -1.09375 18.796875 0 
+Q 15.796875 1.09375 14.296875 2.5 
+Q 12.796875 3.90625 12 6.59375 
+Q 11.203125 9.296875 11.09375 10.9375 
+Q 11 12.59375 11 15.796875 
+L 11 30.796875 
+Q 11 37.59375 10 38.796875 
+Q 9 40 3.203125 40 
+z
+" id="CMUSerif-Roman-117"/>
+      <path d="M 3.203125 0 
+L 3.203125 3.09375 
+Q 8.5 3.09375 9.75 3.75 
+Q 11 4.40625 11 7.59375 
+L 11 34.40625 
+Q 11 38.09375 9.703125 39.046875 
+Q 8.40625 40 3.203125 40 
+L 3.203125 43.09375 
+L 17.296875 44.203125 
+L 17.296875 33.703125 
+Q 22 44.203125 32.09375 44.203125 
+Q 43.796875 44.203125 45.40625 34.40625 
+Q 47.09375 38.203125 50.6875 41.203125 
+Q 54.296875 44.203125 59.90625 44.203125 
+Q 67.40625 44.203125 70.40625 40.5 
+Q 72.59375 38 73.046875 35.203125 
+Q 73.5 32.40625 73.5 25.203125 
+L 73.5 6.09375 
+Q 73.59375 4 75.1875 3.546875 
+Q 76.796875 3.09375 81.296875 3.09375 
+L 81.296875 0 
+Q 71.09375 0.296875 70.09375 0.296875 
+Q 69.296875 0.296875 58.796875 0 
+L 58.796875 3.09375 
+Q 64.09375 3.09375 65.34375 3.75 
+Q 66.59375 4.40625 66.59375 7.59375 
+L 66.59375 30.90625 
+Q 66.59375 36 65.046875 39 
+Q 63.5 42 59.203125 42 
+Q 54 42 49.84375 37.640625 
+Q 45.703125 33.296875 45.703125 26 
+L 45.703125 7.59375 
+Q 45.703125 4.40625 46.953125 3.75 
+Q 48.203125 3.09375 53.5 3.09375 
+L 53.5 0 
+Q 43.296875 0.296875 42.296875 0.296875 
+Q 41.5 0.296875 31 0 
+L 31 3.09375 
+Q 36.296875 3.09375 37.546875 3.75 
+Q 38.796875 4.40625 38.796875 7.59375 
+L 38.796875 30.90625 
+Q 38.796875 36 37.25 39 
+Q 35.703125 42 31.40625 42 
+Q 26.203125 42 22.046875 37.640625 
+Q 17.90625 33.296875 17.90625 26 
+L 17.90625 7.59375 
+Q 17.90625 4.40625 19.15625 3.75 
+Q 20.40625 3.09375 25.703125 3.09375 
+L 25.703125 0 
+Q 15.5 0.296875 14.5 0.296875 
+Q 13.703125 0.296875 3.203125 0 
+z
+" id="CMUSerif-Roman-109"/>
+      <path d="M 2.796875 65.203125 
+L 2.796875 68.296875 
+L 17.203125 69.40625 
+L 17.203125 37.703125 
+Q 23 44.203125 30.90625 44.203125 
+Q 39.5 44.203125 45.796875 37.59375 
+Q 52.09375 31 52.09375 21.59375 
+Q 52.09375 12.09375 45.5 5.5 
+Q 38.90625 -1.09375 29.796875 -1.09375 
+Q 21.5 -1.09375 16.703125 6.203125 
+Q 13.203125 0.09375 13.09375 0 
+L 10.59375 0 
+L 10.59375 59.59375 
+Q 10.59375 63.296875 9.296875 64.25 
+Q 8 65.203125 2.796875 65.203125 
+z
+M 17.5 11.40625 
+Q 17.5 9.296875 18.90625 7.203125 
+Q 22.90625 1.09375 29.40625 1.09375 
+Q 36.40625 1.09375 40.703125 7.5 
+Q 43.796875 12.296875 43.796875 21.703125 
+Q 43.796875 31 40.90625 35.59375 
+Q 36.90625 42 30.40625 42 
+Q 23.09375 42 18.59375 35.59375 
+Q 17.5 34 17.5 32 
+z
+" id="CMUSerif-Roman-98"/>
+      <path d="M 3.296875 1.296875 
+L 3.296875 14.5 
+Q 3.296875 15.59375 3.34375 16 
+Q 3.40625 16.40625 3.703125 16.703125 
+Q 4 17 4.59375 17 
+Q 5.296875 17 5.546875 16.703125 
+Q 5.796875 16.40625 6 15.296875 
+Q 7.5 8.40625 10.75 4.75 
+Q 14 1.09375 19.90625 1.09375 
+Q 25.5 1.09375 28.34375 3.59375 
+Q 31.203125 6.09375 31.203125 10.203125 
+Q 31.203125 17.5 20.796875 19.40625 
+Q 14.796875 20.59375 12.296875 21.390625 
+Q 9.796875 22.203125 7.59375 24 
+Q 3.296875 27.5 3.296875 32.5 
+Q 3.296875 37.5 7.09375 41.140625 
+Q 10.90625 44.796875 19.296875 44.796875 
+Q 24.90625 44.796875 28.703125 42 
+Q 29.796875 42.90625 30.40625 43.59375 
+Q 31.703125 44.796875 32.40625 44.796875 
+Q 33.203125 44.796875 33.34375 44.296875 
+Q 33.5 43.796875 33.5 42.40625 
+L 33.5 32.296875 
+Q 33.5 31.203125 33.453125 30.796875 
+Q 33.40625 30.40625 33.09375 30.15625 
+Q 32.796875 29.90625 32.203125 29.90625 
+Q 31.09375 29.90625 31 30.796875 
+Q 30.203125 42.90625 19.296875 42.90625 
+Q 13.40625 42.90625 10.75 40.65625 
+Q 8.09375 38.40625 8.09375 35.296875 
+Q 8.09375 33.59375 8.890625 32.296875 
+Q 9.703125 31 10.75 30.25 
+Q 11.796875 29.5 13.75 28.796875 
+Q 15.703125 28.09375 16.890625 27.84375 
+Q 18.09375 27.59375 20.40625 27.09375 
+Q 28.40625 25.59375 31.796875 22.296875 
+Q 36 18.09375 36 12.796875 
+Q 36 6.90625 32 2.90625 
+Q 28 -1.09375 19.90625 -1.09375 
+Q 13.40625 -1.09375 8.90625 3.203125 
+Q 8.296875 2.59375 7.84375 2.09375 
+Q 7.40625 1.59375 7.25 1.390625 
+Q 7.09375 1.203125 7.046875 1.09375 
+Q 7 1 6.90625 0.90625 
+Q 4.90625 -1.09375 4.40625 -1.09375 
+Q 3.59375 -1.09375 3.4375 -0.59375 
+Q 3.296875 -0.09375 3.296875 1.296875 
+z
+" id="CMUSerif-Roman-115"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+Q 8.59375 3.09375 9.84375 3.75 
+Q 11.09375 4.40625 11.09375 7.59375 
+L 11.09375 34.5 
+Q 11.09375 38.203125 9.84375 39.09375 
+Q 8.59375 40 3.703125 40 
+L 3.703125 43.09375 
+L 17.703125 44.203125 
+L 17.703125 7.5 
+Q 17.703125 4.5 18.75 3.796875 
+Q 19.796875 3.09375 24.703125 3.09375 
+L 24.703125 0 
+Q 14.5 0.296875 14.296875 0.296875 
+Q 12.90625 0.296875 3.296875 0 
+z
+M 7.5 61.59375 
+Q 7.5 63.59375 9.046875 65.25 
+Q 10.59375 66.90625 12.796875 66.90625 
+Q 15 66.90625 16.546875 65.40625 
+Q 18.09375 63.90625 18.09375 61.59375 
+Q 18.09375 59.296875 16.546875 57.796875 
+Q 15 56.296875 12.796875 56.296875 
+Q 10.5 56.296875 9 57.890625 
+Q 7.5 59.5 7.5 61.59375 
+z
+" id="CMUSerif-Roman-105"/>
+      <path d="M 1.90625 40 
+L 1.90625 42.203125 
+Q 6.5 42.40625 9.546875 45.65625 
+Q 12.59375 48.90625 13.640625 52.90625 
+Q 14.703125 56.90625 14.796875 61.5 
+L 17.296875 61.5 
+L 17.296875 43.09375 
+L 31.59375 43.09375 
+L 31.59375 40 
+L 17.296875 40 
+L 17.296875 12.203125 
+Q 17.296875 1.40625 24 1.40625 
+Q 26.90625 1.40625 28.796875 4.34375 
+Q 30.703125 7.296875 30.703125 12.59375 
+L 30.703125 18.09375 
+L 33.203125 18.09375 
+L 33.203125 12.40625 
+Q 33.203125 7 30.703125 2.953125 
+Q 28.203125 -1.09375 23.296875 -1.09375 
+Q 21.5 -1.09375 19.703125 -0.640625 
+Q 17.90625 -0.203125 15.59375 1 
+Q 13.296875 2.203125 11.84375 5.140625 
+Q 10.40625 8.09375 10.40625 12.40625 
+L 10.40625 40 
+z
+" id="CMUSerif-Roman-116"/>
+      <path d="M 7.71875 1.703125 
+Q 7.71875 2.296875 7.8125 2.59375 
+L 15.28125 32.421875 
+Q 16.015625 35.203125 16.015625 37.3125 
+Q 16.015625 41.609375 13.09375 41.609375 
+Q 9.96875 41.609375 8.453125 37.859375 
+Q 6.9375 34.125 5.515625 28.421875 
+Q 5.515625 28.125 5.21875 27.953125 
+Q 4.9375 27.78125 4.6875 27.78125 
+L 3.515625 27.78125 
+Q 3.171875 27.78125 2.921875 28.140625 
+Q 2.6875 28.515625 2.6875 28.8125 
+Q 3.765625 33.15625 4.765625 36.171875 
+Q 5.765625 39.203125 7.890625 41.6875 
+Q 10.015625 44.1875 13.1875 44.1875 
+Q 16.9375 44.1875 19.8125 41.8125 
+Q 22.703125 39.453125 22.703125 35.796875 
+Q 25.6875 39.703125 29.6875 41.9375 
+Q 33.6875 44.1875 38.1875 44.1875 
+Q 41.75 44.1875 44.328125 42.96875 
+Q 46.921875 41.75 48.359375 39.28125 
+Q 49.8125 36.8125 49.8125 33.40625 
+Q 49.8125 29.296875 47.96875 23.484375 
+Q 46.140625 17.671875 43.40625 10.5 
+Q 42 7.234375 42 4.5 
+Q 42 1.515625 44.28125 1.515625 
+Q 48.1875 1.515625 50.796875 5.703125 
+Q 53.421875 9.90625 54.5 14.703125 
+Q 54.6875 15.28125 55.328125 15.28125 
+L 56.5 15.28125 
+Q 56.890625 15.28125 57.15625 15.03125 
+Q 57.421875 14.796875 57.421875 14.40625 
+Q 57.421875 14.3125 57.328125 14.109375 
+Q 55.953125 8.453125 52.5625 3.65625 
+Q 49.171875 -1.125 44.09375 -1.125 
+Q 40.578125 -1.125 38.078125 1.296875 
+Q 35.59375 3.71875 35.59375 7.171875 
+Q 35.59375 9.03125 36.375 11.078125 
+Q 37.640625 14.359375 39.28125 18.890625 
+Q 40.921875 23.4375 41.96875 27.578125 
+Q 43.015625 31.734375 43.015625 34.90625 
+Q 43.015625 37.703125 41.859375 39.65625 
+Q 40.71875 41.609375 37.984375 41.609375 
+Q 34.328125 41.609375 31.25 39.984375 
+Q 28.171875 38.375 25.875 35.71875 
+Q 23.578125 33.0625 21.6875 29.390625 
+L 14.890625 2.203125 
+Q 14.546875 0.828125 13.34375 -0.140625 
+Q 12.15625 -1.125 10.6875 -1.125 
+Q 9.46875 -1.125 8.59375 -0.34375 
+Q 7.71875 0.4375 7.71875 1.703125 
+z
+" id="Cmmi10-110"/>
+      <path d="M 3.078125 0 
+L 3.078125 3.515625 
+Q 13.375 3.515625 13.375 6.6875 
+L 13.375 61.625 
+Q 13.375 64.796875 3.078125 64.796875 
+L 3.078125 68.3125 
+L 33.015625 68.3125 
+L 33.015625 64.796875 
+Q 22.703125 64.796875 22.703125 61.625 
+L 22.703125 37.3125 
+L 52.203125 37.3125 
+L 52.203125 61.625 
+Q 52.203125 64.796875 41.890625 64.796875 
+L 41.890625 68.3125 
+L 71.78125 68.3125 
+L 71.78125 64.796875 
+Q 61.53125 64.796875 61.53125 61.625 
+L 61.53125 6.6875 
+Q 61.53125 3.515625 71.78125 3.515625 
+L 71.78125 0 
+L 41.890625 0 
+L 41.890625 3.515625 
+Q 52.203125 3.515625 52.203125 6.6875 
+L 52.203125 33.796875 
+L 22.703125 33.796875 
+L 22.703125 6.6875 
+Q 22.703125 3.515625 33.015625 3.515625 
+L 33.015625 0 
+z
+" id="Cmr10-72"/>
+      <path d="M 10.40625 -25 
+L 10.40625 75 
+L 25.5 75 
+L 25.5 72.703125 
+L 17.09375 72.703125 
+L 17.09375 -22.703125 
+L 25.5 -22.703125 
+L 25.5 -25 
+z
+" id="CMUSerif-Roman-91"/>
+      <path d="M 16.09375 -1.09375 
+Q 3.40625 12.09375 3.40625 21.59375 
+Q 3.40625 31.09375 9.65625 37.9375 
+Q 15.90625 44.796875 25.09375 44.796875 
+Q 31.203125 44.796875 35.796875 41.890625 
+Q 40.40625 39 40.40625 34.09375 
+Q 40.40625 31.90625 39.09375 30.65625 
+Q 37.796875 29.40625 35.796875 29.40625 
+Q 33.703125 29.40625 32.453125 30.703125 
+Q 31.203125 32 31.203125 34 
+Q 31.203125 34.90625 31.5 35.75 
+Q 31.796875 36.59375 32.890625 37.546875 
+Q 34 38.5 35.90625 38.59375 
+Q 32.296875 42.296875 25.203125 42.296875 
+Q 20.09375 42.296875 15.890625 37.5 
+Q 11.703125 32.703125 11.703125 21.796875 
+Q 11.703125 16.09375 13.09375 11.890625 
+Q 14.5 7.703125 16.796875 5.546875 
+Q 19.09375 3.40625 21.34375 2.40625 
+Q 23.59375 1.40625 25.796875 1.40625 
+Q 35.59375 1.40625 38.90625 11.90625 
+Q 39.203125 12.90625 40.203125 12.90625 
+Q 41.5 12.90625 41.5 11.90625 
+Q 41.5 11.40625 41.09375 10.15625 
+Q 40.703125 8.90625 39.5 6.90625 
+Q 38.296875 4.90625 36.546875 3.15625 
+Q 34.796875 1.40625 31.75 0.15625 
+Q 28.703125 -1.09375 24.90625 -1.09375 
+Q 16.09375 -1.09375 3.40625 12.09375 
+z
+" id="CMUSerif-Roman-99"/>
+      <path d="M 10.203125 23 
+Q 9.375 23 8.828125 23.625 
+Q 8.296875 24.265625 8.296875 25 
+Q 8.296875 25.734375 8.828125 26.359375 
+Q 9.375 27 10.203125 27 
+L 67.578125 27 
+Q 68.359375 27 68.875 26.359375 
+Q 69.390625 25.734375 69.390625 25 
+Q 69.390625 24.265625 68.875 23.625 
+Q 68.359375 23 67.578125 23 
+z
+" id="Cmsy10-161"/>
+      <path d="M 9.515625 7.71875 
+Q 11.859375 4.296875 15.8125 2.640625 
+Q 19.78125 0.984375 24.3125 0.984375 
+Q 30.125 0.984375 32.5625 5.9375 
+Q 35.015625 10.890625 35.015625 17.1875 
+Q 35.015625 20.015625 34.5 22.84375 
+Q 33.984375 25.6875 32.765625 28.125 
+Q 31.546875 30.5625 29.421875 32.03125 
+Q 27.296875 33.5 24.21875 33.5 
+L 17.578125 33.5 
+Q 16.703125 33.5 16.703125 34.421875 
+L 16.703125 35.296875 
+Q 16.703125 36.078125 17.578125 36.078125 
+L 23.09375 36.53125 
+Q 26.609375 36.53125 28.921875 39.15625 
+Q 31.25 41.796875 32.328125 45.578125 
+Q 33.40625 49.359375 33.40625 52.78125 
+Q 33.40625 57.5625 31.15625 60.640625 
+Q 28.90625 63.71875 24.3125 63.71875 
+Q 20.515625 63.71875 17.046875 62.28125 
+Q 13.578125 60.84375 11.53125 57.90625 
+Q 11.71875 57.953125 11.859375 57.984375 
+Q 12.015625 58.015625 12.203125 58.015625 
+Q 14.453125 58.015625 15.96875 56.453125 
+Q 17.484375 54.890625 17.484375 52.6875 
+Q 17.484375 50.53125 15.96875 48.96875 
+Q 14.453125 47.40625 12.203125 47.40625 
+Q 10.015625 47.40625 8.453125 48.96875 
+Q 6.890625 50.53125 6.890625 52.6875 
+Q 6.890625 56.984375 9.46875 60.15625 
+Q 12.0625 63.328125 16.140625 64.96875 
+Q 20.21875 66.609375 24.3125 66.609375 
+Q 27.34375 66.609375 30.703125 65.703125 
+Q 34.078125 64.796875 36.8125 63.109375 
+Q 39.546875 61.421875 41.28125 58.78125 
+Q 43.015625 56.15625 43.015625 52.78125 
+Q 43.015625 48.578125 41.140625 45.015625 
+Q 39.265625 41.453125 35.984375 38.859375 
+Q 32.71875 36.28125 28.8125 35.015625 
+Q 33.15625 34.1875 37.0625 31.734375 
+Q 40.96875 29.296875 43.328125 25.484375 
+Q 45.703125 21.6875 45.703125 17.28125 
+Q 45.703125 11.765625 42.671875 7.296875 
+Q 39.65625 2.828125 34.71875 0.3125 
+Q 29.78125 -2.203125 24.3125 -2.203125 
+Q 19.625 -2.203125 14.90625 -0.40625 
+Q 10.203125 1.375 7.203125 4.9375 
+Q 4.203125 8.5 4.203125 13.484375 
+Q 4.203125 15.96875 5.859375 17.625 
+Q 7.515625 19.28125 10.015625 19.28125 
+Q 11.625 19.28125 12.96875 18.53125 
+Q 14.3125 17.78125 15.0625 16.40625 
+Q 15.828125 15.046875 15.828125 13.484375 
+Q 15.828125 11.03125 14.109375 9.375 
+Q 12.40625 7.71875 10.015625 7.71875 
+z
+" id="Cmr10-51"/>
+      <path d="M 2.09375 -22.703125 
+L 10.5 -22.703125 
+L 10.5 72.703125 
+L 2.09375 72.703125 
+L 2.09375 75 
+L 17.203125 75 
+L 17.203125 -25 
+L 2.09375 -25 
+z
+" id="CMUSerif-Roman-93"/>
      </defs>
-     <g transform="translate(91.250474 222.339856)scale(0.1 -0.1)">
-      <use transform="translate(0 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-68"/>
-      <use transform="translate(71.929985 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-101"/>
-      <use transform="translate(116.163554 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-110"/>
-      <use transform="translate(165.976754 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-115"/>
-      <use transform="translate(204.73046 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-105"/>
-      <use transform="translate(232.42563 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-116"/>
-      <use transform="translate(260.120799 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-121"/>
-      <use transform="translate(341.163113 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular_Italic-110"/>
-      <use transform="translate(390.976313 0)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-72"/>
-      <use transform="translate(475.932143 15.050129)scale(0.996264)" xlink:href="#CMR10-91"/>
-      <use transform="translate(503.52765 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-99"/>
-      <use transform="translate(547.761218 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-109"/>
-      <use transform="translate(625.269588 51.213361)scale(0.737241)" xlink:href="#CMSY10-0"/>
-      <use transform="translate(682.552458 51.213361)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-51"/>
-      <use transform="translate(719.912632 15.050129)scale(0.996264)" xlink:href="#CMR10-93"/>
+     <g transform="translate(48.976 221.69725)scale(0.1 -0.1)">
+      <use transform="translate(0 0.109375)" xlink:href="#CMUSerif-Roman-72"/>
+      <use transform="translate(74.999985 0.109375)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(127.699982 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(183.199966 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(222.299957 0.109375)" xlink:href="#CMUSerif-Roman-111"/>
+      <use transform="translate(272.299942 0.109375)" xlink:href="#CMUSerif-Roman-103"/>
+      <use transform="translate(322.299927 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(366.699921 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(422.199905 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(455.499893 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(510.999878 0.109375)" xlink:href="#CMUSerif-Roman-117"/>
+      <use transform="translate(566.499863 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(649.79985 0.109375)" xlink:href="#CMUSerif-Roman-98"/>
+      <use transform="translate(705.299835 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(749.699829 0.109375)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(788.79982 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(822.099808 0.109375)" xlink:href="#CMUSerif-Roman-100"/>
+      <use transform="translate(877.599792 0.109375)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(921.999786 0.109375)" xlink:href="#CMUSerif-Roman-110"/>
+      <use transform="translate(977.499771 0.109375)" xlink:href="#CMUSerif-Roman-115"/>
+      <use transform="translate(1016.899765 0.109375)" xlink:href="#CMUSerif-Roman-105"/>
+      <use transform="translate(1044.599762 0.109375)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(1083.39975 0.109375)" xlink:href="#CMUSerif-Roman-121"/>
+      <use transform="translate(1136.099747 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1169.399734 0.109375)" xlink:href="#Cmmi10-110"/>
+      <use transform="translate(1229.4095 -16.896875)scale(0.7)" xlink:href="#Cmr10-72"/>
+      <use transform="translate(1288.286844 0.109375)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(1321.586832 0.109375)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(1349.386819 0.109375)" xlink:href="#CMUSerif-Roman-99"/>
+      <use transform="translate(1393.786813 0.109375)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(1481.550942 38.373438)scale(0.7)" xlink:href="#Cmsy10-161"/>
+      <use transform="translate(1535.930825 38.373438)scale(0.7)" xlink:href="#Cmr10-51"/>
+      <use transform="translate(1577.308168 0.109375)" xlink:href="#CMUSerif-Roman-93"/>
      </g>
     </g>
    </g>
@@ -601,88 +1093,151 @@ z
       <defs>
        <path d="M 0 0 
 L -3.5 0 
-" id="mec8c027021" style="stroke:#000000;stroke-width:0.8;"/>
+" id="me1123541e6" style="stroke:#000000;stroke-width:0.8;"/>
       </defs>
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mec8c027021" y="163.232825"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#me1123541e6" y="163.232825"/>
       </g>
      </g>
      <g id="text_7">
-      <!-- $10^{2}$ -->
-      <g transform="translate(13.371186 166.692074)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-50"/>
+      <!-- $\mathdefault{10^{2}}$ -->
+      <g transform="translate(13.22 166.703137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-50"/>
       </g>
      </g>
     </g>
     <g id="ytick_2">
      <g id="line2d_7">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mec8c027021" y="114.470825"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#me1123541e6" y="114.470825"/>
       </g>
      </g>
      <g id="text_8">
-      <!-- $10^{3}$ -->
-      <g transform="translate(13.371186 117.930074)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-51"/>
+      <!-- $\mathdefault{10^{3}}$ -->
+      <defs>
+       <path d="M 4.203125 13.5 
+Q 4.203125 16.5 5.890625 17.890625 
+Q 7.59375 19.296875 9.796875 19.296875 
+Q 12.09375 19.296875 13.75 17.796875 
+Q 15.40625 16.296875 15.40625 13.703125 
+Q 15.40625 10.90625 13.453125 9.34375 
+Q 11.5 7.796875 8.796875 8.203125 
+Q 11.203125 4.203125 15.59375 2.390625 
+Q 20 0.59375 24.09375 0.59375 
+Q 28.40625 0.59375 31.90625 4.296875 
+Q 35.40625 8 35.40625 17.09375 
+Q 35.40625 24.796875 32.40625 29.25 
+Q 29.40625 33.703125 23.5 33.703125 
+L 19.09375 33.703125 
+Q 17.59375 33.703125 17.140625 33.84375 
+Q 16.703125 34 16.703125 34.796875 
+Q 16.703125 35.796875 18.203125 36 
+Q 19.703125 36 22.09375 36.296875 
+Q 27.90625 36.5 31 41.5 
+Q 33.796875 46.203125 33.796875 52.90625 
+Q 33.796875 59 30.890625 61.546875 
+Q 28 64.09375 24.203125 64.09375 
+Q 20.703125 64.09375 16.84375 62.640625 
+Q 13 61.203125 10.90625 57.90625 
+Q 17.09375 57.90625 17.09375 52.90625 
+Q 17.09375 50.703125 15.6875 49.25 
+Q 14.296875 47.796875 12 47.796875 
+Q 9.796875 47.796875 8.34375 49.1875 
+Q 6.90625 50.59375 6.90625 53 
+Q 6.90625 58.703125 12 62.640625 
+Q 17.09375 66.59375 24.59375 66.59375 
+Q 32 66.59375 37.5 62.6875 
+Q 43 58.796875 43 52.796875 
+Q 43 46.90625 39.09375 42.046875 
+Q 35.203125 37.203125 29 35.203125 
+Q 36.59375 33.703125 41.140625 28.546875 
+Q 45.703125 23.40625 45.703125 17.09375 
+Q 45.703125 9.296875 39.546875 3.546875 
+Q 33.40625 -2.203125 24.40625 -2.203125 
+Q 16.09375 -2.203125 10.140625 2.296875 
+Q 4.203125 6.796875 4.203125 13.5 
+z
+" id="CMUSerif-Roman-51"/>
+      </defs>
+      <g transform="translate(13.22 117.941137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-51"/>
       </g>
      </g>
     </g>
     <g id="ytick_3">
      <g id="line2d_8">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mec8c027021" y="65.708825"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#me1123541e6" y="65.708825"/>
       </g>
      </g>
      <g id="text_9">
-      <!-- $10^{4}$ -->
-      <g transform="translate(13.371186 69.168074)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-52"/>
+      <!-- $\mathdefault{10^{4}}$ -->
+      <g transform="translate(13.22 69.179137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.442188)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.442188)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.607813)scale(0.7)" xlink:href="#CMUSerif-Roman-52"/>
       </g>
      </g>
     </g>
     <g id="ytick_4">
      <g id="line2d_9">
       <g>
-       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#mec8c027021" y="16.946825"/>
+       <use style="stroke:#000000;stroke-width:0.8;" x="34.02" xlink:href="#me1123541e6" y="16.946825"/>
       </g>
      </g>
      <g id="text_10">
-      <!-- $10^{5}$ -->
+      <!-- $\mathdefault{10^{5}}$ -->
       <defs>
-       <path d="M 18.09375 59 
-L 37.703125 59 
-C 39.296875 59 39.703125 59.203125 40 59.90625 
-L 43.796875 68.796875 
-L 42.90625 69.5 
-C 41.40625 67.40625 40.40625 66.90625 38.296875 66.90625 
-L 17.40625 66.90625 
-L 6.5 43.109375 
-C 6.40625 42.90625 6.40625 42.8125 6.40625 42.609375 
-C 6.40625 42.109375 6.796875 41.8125 7.59375 41.8125 
-C 10.796875 41.8125 14.796875 41.109375 18.90625 39.796875 
-C 30.40625 36.078125 35.703125 29.84375 35.703125 19.90625 
-C 35.703125 10.25 29.59375 2.703125 21.796875 2.703125 
-C 19.796875 2.703125 18.09375 3.40625 15.09375 5.625 
-C 11.90625 7.9375 9.59375 8.9375 7.5 8.9375 
-C 4.59375 8.9375 3.203125 7.734375 3.203125 5.21875 
-C 3.203125 1.40625 7.90625 -1 15.40625 -1 
-C 23.796875 -1 31 1.71875 36 6.84375 
-C 40.59375 11.375 42.703125 17.09375 42.703125 24.734375 
-C 42.703125 31.96875 40.796875 36.59375 35.796875 41.609375 
-C 31.40625 46.046875 25.703125 48.34375 13.90625 50.453125 
-z
-" id="Nimbus_Roman_No9_L_Regular-53"/>
+       <path d="M 5 16.09375 
+Q 5 19.09375 6.59375 20.25 
+Q 8.203125 21.40625 9.90625 21.40625 
+Q 12.203125 21.40625 13.546875 19.953125 
+Q 14.90625 18.5 14.90625 16.5 
+Q 14.90625 14.5 13.546875 13.046875 
+Q 12.203125 11.59375 9.90625 11.59375 
+Q 8.796875 11.59375 8.203125 11.796875 
+Q 9.5 7.203125 13.546875 3.890625 
+Q 17.59375 0.59375 22.90625 0.59375 
+Q 29.59375 0.59375 33.59375 7.09375 
+Q 36 11.296875 36 20.796875 
+Q 36 29.203125 34.203125 33.40625 
+Q 31.40625 39.796875 25.703125 39.796875 
+Q 17.59375 39.796875 12.796875 32.796875 
+Q 12.203125 31.90625 11.5 31.90625 
+Q 10.5 31.90625 10.296875 32.453125 
+Q 10.09375 33 10.09375 34.5 
+L 10.09375 64.09375 
+Q 10.09375 66.5 11.09375 66.5 
+Q 11.5 66.5 12.296875 66.203125 
+Q 18.59375 63.40625 25.59375 63.40625 
+Q 32.796875 63.40625 39.203125 66.296875 
+Q 39.703125 66.59375 40 66.59375 
+Q 41 66.59375 41 65.5 
+Q 41 65.09375 40.203125 63.9375 
+Q 39.40625 62.796875 37.703125 61.296875 
+Q 36 59.796875 33.796875 58.390625 
+Q 31.59375 57 28.390625 56.046875 
+Q 25.203125 55.09375 21.703125 55.09375 
+Q 17.5 55.09375 13.203125 56.40625 
+L 13.203125 36.90625 
+Q 18.40625 42 25.90625 42 
+Q 33.90625 42 39.40625 35.546875 
+Q 44.90625 29.09375 44.90625 20.09375 
+Q 44.90625 10.703125 38.40625 4.25 
+Q 31.90625 -2.203125 23.09375 -2.203125 
+Q 15.09375 -2.203125 10.046875 3.5 
+Q 5 9.203125 5 16.09375 
+z
+" id="CMUSerif-Roman-53"/>
       </defs>
-      <g transform="translate(13.371186 20.406074)scale(0.1 -0.1)">
-       <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-49"/>
-       <use transform="translate(49.8132 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-48"/>
-       <use transform="translate(99.626401 36.163231)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-53"/>
+      <g transform="translate(13.22 20.417137)scale(0.1 -0.1)">
+       <use transform="translate(0 0.21875)" xlink:href="#CMUSerif-Roman-49"/>
+       <use transform="translate(49.999985 0.21875)" xlink:href="#CMUSerif-Roman-48"/>
+       <use transform="translate(100.75411 30.384375)scale(0.7)" xlink:href="#CMUSerif-Roman-53"/>
       </g>
      </g>
     </g>
@@ -691,470 +1246,516 @@ z
       <defs>
        <path d="M 0 0 
 L -2 0 
-" id="mc0ad7d39b4" style="stroke:#000000;stroke-width:0.6;"/>
+" id="m389a2448bd" style="stroke:#000000;stroke-width:0.6;"/>
       </defs>
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="197.316"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="197.316"/>
       </g>
      </g>
     </g>
     <g id="ytick_6">
      <g id="line2d_11">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="188.729438"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="188.729438"/>
       </g>
      </g>
     </g>
     <g id="ytick_7">
      <g id="line2d_12">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="182.637175"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="182.637175"/>
       </g>
      </g>
     </g>
     <g id="ytick_8">
      <g id="line2d_13">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="177.911649"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="177.911649"/>
       </g>
      </g>
     </g>
     <g id="ytick_9">
      <g id="line2d_14">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="174.050613"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="174.050613"/>
       </g>
      </g>
     </g>
     <g id="ytick_10">
      <g id="line2d_15">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="170.786154"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="170.786154"/>
       </g>
      </g>
     </g>
     <g id="ytick_11">
      <g id="line2d_16">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="167.958351"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="167.958351"/>
       </g>
      </g>
     </g>
     <g id="ytick_12">
      <g id="line2d_17">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="165.464051"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="165.464051"/>
       </g>
      </g>
     </g>
     <g id="ytick_13">
      <g id="line2d_18">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="148.554"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="148.554"/>
       </g>
      </g>
     </g>
     <g id="ytick_14">
      <g id="line2d_19">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="139.967438"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="139.967438"/>
       </g>
      </g>
     </g>
     <g id="ytick_15">
      <g id="line2d_20">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="133.875175"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="133.875175"/>
       </g>
      </g>
     </g>
     <g id="ytick_16">
      <g id="line2d_21">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="129.149649"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="129.149649"/>
       </g>
      </g>
     </g>
     <g id="ytick_17">
      <g id="line2d_22">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="125.288613"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="125.288613"/>
       </g>
      </g>
     </g>
     <g id="ytick_18">
      <g id="line2d_23">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="122.024154"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="122.024154"/>
       </g>
      </g>
     </g>
     <g id="ytick_19">
      <g id="line2d_24">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="119.196351"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="119.196351"/>
       </g>
      </g>
     </g>
     <g id="ytick_20">
      <g id="line2d_25">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="116.702051"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="116.702051"/>
       </g>
      </g>
     </g>
     <g id="ytick_21">
      <g id="line2d_26">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="99.792"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="99.792"/>
       </g>
      </g>
     </g>
     <g id="ytick_22">
      <g id="line2d_27">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="91.205438"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="91.205438"/>
       </g>
      </g>
     </g>
     <g id="ytick_23">
      <g id="line2d_28">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="85.113175"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="85.113175"/>
       </g>
      </g>
     </g>
     <g id="ytick_24">
      <g id="line2d_29">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="80.387649"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="80.387649"/>
       </g>
      </g>
     </g>
     <g id="ytick_25">
      <g id="line2d_30">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="76.526613"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="76.526613"/>
       </g>
      </g>
     </g>
     <g id="ytick_26">
      <g id="line2d_31">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="73.262154"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="73.262154"/>
       </g>
      </g>
     </g>
     <g id="ytick_27">
      <g id="line2d_32">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="70.434351"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="70.434351"/>
       </g>
      </g>
     </g>
     <g id="ytick_28">
      <g id="line2d_33">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="67.940051"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="67.940051"/>
       </g>
      </g>
     </g>
     <g id="ytick_29">
      <g id="line2d_34">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="51.03"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="51.03"/>
       </g>
      </g>
     </g>
     <g id="ytick_30">
      <g id="line2d_35">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="42.443438"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="42.443438"/>
       </g>
      </g>
     </g>
     <g id="ytick_31">
      <g id="line2d_36">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="36.351175"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="36.351175"/>
       </g>
      </g>
     </g>
     <g id="ytick_32">
      <g id="line2d_37">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="31.625649"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="31.625649"/>
       </g>
      </g>
     </g>
     <g id="ytick_33">
      <g id="line2d_38">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="27.764613"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="27.764613"/>
       </g>
      </g>
     </g>
     <g id="ytick_34">
      <g id="line2d_39">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="24.500154"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="24.500154"/>
       </g>
      </g>
     </g>
     <g id="ytick_35">
      <g id="line2d_40">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="21.672351"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="21.672351"/>
       </g>
      </g>
     </g>
     <g id="ytick_36">
      <g id="line2d_41">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="19.178051"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="19.178051"/>
       </g>
      </g>
     </g>
     <g id="ytick_37">
      <g id="line2d_42">
       <g>
-       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#mc0ad7d39b4" y="2.268"/>
+       <use style="stroke:#000000;stroke-width:0.6;" x="34.02" xlink:href="#m389a2448bd" y="2.268"/>
       </g>
      </g>
     </g>
     <g id="text_11">
-     <!-- ${\rm Temperature}~T~[{\rm K}]$ -->
+     <!-- Temperature $T$ [K] -->
      <defs>
-      <path d="M 25.40625 62 
-L 25.40625 11.734375 
-C 25.40625 3.1875 24.296875 2.09375 16 2.09375 
-L 16 0 
-L 45.203125 0 
-L 45.203125 2.09375 
-C 37 2.09375 35.59375 3.390625 35.59375 10.734375 
-L 35.59375 62 
-L 41 62 
-C 52.40625 62 54.59375 60.203125 56.90625 49.203125 
-L 59.296875 49.203125 
-L 58.703125 66.203125 
-L 2.296875 66.203125 
-L 1.703125 49.203125 
-L 4.09375 49.203125 
-C 6.5 60.09375 8.796875 62 20 62 
-z
-" id="Nimbus_Roman_No9_L_Regular-84"/>
-      <path d="M 0.90625 39.3125 
-C 1.796875 39.40625 2.5 39.40625 3.40625 39.40625 
-C 6.796875 39.40625 7.5 38.40625 7.5 33.671875 
-L 7.5 -13.359375 
-C 7.5 -18.578125 6.40625 -19.703125 0.5 -20.296875 
-L 0.5 -22 
-L 24.703125 -22 
-L 24.703125 -20.203125 
-C 17.203125 -20.203125 15.90625 -19.09375 15.90625 -12.75 
-L 15.90625 3.109375 
-C 19.40625 -0.203125 21.796875 -1.203125 26 -1.203125 
-C 37.796875 -1.203125 47 10.046875 47 24.609375 
-C 47 37.0625 40 46 30.296875 46 
-C 24.703125 46 20.296875 43.5 15.90625 38.09375 
-L 15.90625 45.796875 
-L 15.296875 46 
-C 9.90625 43.90625 6.40625 42.59375 0.90625 40.90625 
-z
-M 15.90625 33.375 
-C 15.90625 36.390625 21.5 40 26.09375 40 
-C 33.5 40 38.40625 32.359375 38.40625 20.6875 
-C 38.40625 9.546875 33.5 2 26.296875 2 
-C 21.59375 2 15.90625 5.609375 15.90625 8.625 
-z
-" id="Nimbus_Roman_No9_L_Regular-112"/>
-      <path d="M 0.703125 39 
-C 2.09375 39.296875 3 39.40625 4.203125 39.40625 
-C 6.703125 39.40625 7.59375 37.796875 7.59375 33.40625 
-L 7.59375 8.40625 
-C 7.59375 3.40625 6.90625 2.703125 0.5 1.5 
-L 0.5 0 
-L 24.5 0 
-L 24.5 1.59375 
-C 17.703125 1.59375 16 3.109375 16 8.828125 
-L 16 31.453125 
-C 16 34.671875 20.296875 39.703125 23 39.703125 
-C 23.59375 39.703125 24.5 39.203125 25.59375 38.203125 
-C 27.203125 36.796875 28.296875 36.203125 29.59375 36.203125 
-C 32 36.203125 33.5 37.90625 33.5 40.703125 
-C 33.5 44 31.40625 46 28 46 
-C 23.796875 46 20.90625 43.703125 16 36.609375 
-L 16 45.796875 
-L 15.5 46 
-C 10.203125 43.796875 6.59375 42.515625 0.703125 40.609375 
-z
-" id="Nimbus_Roman_No9_L_Regular-114"/>
-      <path d="M 44.203125 6.609375 
-C 42.5 5.203125 41.296875 4.703125 39.796875 4.703125 
-C 37.5 4.703125 36.796875 6.09375 36.796875 10.5 
-L 36.796875 30 
-C 36.796875 35.203125 36.296875 38.09375 34.796875 40.5 
-C 32.59375 44.09375 28.296875 46 22.40625 46 
-C 13 46 5.59375 41.09375 5.59375 34.796875 
-C 5.59375 32.5 7.59375 30.5 9.90625 30.5 
-C 12.296875 30.5 14.40625 32.5 14.40625 34.703125 
-C 14.40625 35.09375 14.296875 35.59375 14.203125 36.296875 
-C 14 37.203125 13.90625 38 13.90625 38.703125 
-C 13.90625 41.40625 17.09375 43.59375 21.09375 43.59375 
-C 26 43.59375 28.703125 40.703125 28.703125 35.296875 
-L 28.703125 29.203125 
-C 13.296875 23 11.59375 22.203125 7.296875 18.40625 
-C 5.09375 16.40625 3.703125 13 3.703125 9.703125 
-C 3.703125 3.40625 8.09375 -1 14.203125 -1 
-C 18.59375 -1 22.703125 1.09375 28.796875 6.296875 
-C 29.296875 1.09375 31.09375 -1 35.203125 -1 
-C 38.59375 -1 40.703125 0.203125 44.203125 4 
-z
-M 28.703125 12.234375 
-C 28.703125 9.125 28.203125 8.21875 26.09375 7.015625 
-C 23.703125 5.609375 20.90625 4.703125 18.796875 4.703125 
-C 15.296875 4.703125 12.5 8.125 12.5 12.4375 
-L 12.5 12.84375 
-C 12.5 18.765625 16.59375 22.390625 28.703125 26.796875 
-z
-" id="Nimbus_Roman_No9_L_Regular-97"/>
-      <path d="M 47.90625 5 
-L 47.40625 5 
-C 42.796875 5 41.703125 6.09375 41.703125 10.703125 
-L 41.703125 45 
-L 25.90625 45 
-L 25.90625 43.09375 
-C 32.09375 43.09375 33.296875 42.09375 33.296875 37.109375 
-L 33.296875 13.671875 
-C 33.296875 10.890625 32.796875 9.484375 31.40625 8.390625 
-C 28.703125 6.203125 25.59375 5 22.59375 5 
-C 18.703125 5 15.5 8.390625 15.5 12.578125 
-L 15.5 45 
-L 0.90625 45 
-L 0.90625 43.40625 
-C 5.703125 43.40625 7.09375 41.90625 7.09375 37.296875 
-L 7.09375 12.03125 
-C 7.09375 4.109375 11.90625 -1 19.203125 -1 
-C 22.90625 -1 26.796875 0.59375 29.5 3.296875 
-L 33.796875 7.59375 
-L 33.796875 -0.703125 
-L 34.203125 -0.90625 
-C 39.203125 1.09375 42.796875 2.203125 47.90625 3.59375 
-z
-" id="Nimbus_Roman_No9_L_Regular-117"/>
-      <path d="M 63.296875 65 
-L 10.09375 65 
-L 5.90625 49.671875 
-L 7.703125 49.265625 
-C 13 59.921875 16.203125 61.609375 31.5 61.609375 
-L 17.09375 8.984375 
-C 15.5 3.6875 13.09375 2.09375 6.5 1.59375 
-L 6.5 0 
-L 35.5 0 
-L 35.5 1.59375 
-C 33.796875 1.59375 32.296875 2 31.703125 2 
-C 27.703125 2 26.5 2.890625 26.5 5.90625 
-C 26.5 7.203125 26.796875 8.390625 27.703125 11.78125 
-L 41.59375 61.609375 
-L 47.09375 61.609375 
-C 54.296875 61.609375 57.5 59.09375 57.5 53.46875 
-C 57.5 52.171875 57.40625 50.6875 57.203125 48.96875 
-L 58.90625 48.765625 
-z
-" id="Nimbus_Roman_No9_L_Regular_Italic-84"/>
-      <path d="M 41.296875 64.203125 
-C 42.5 64 43.5 64 43.90625 64 
-C 46.90625 64 48.09375 63.203125 48.09375 61.203125 
-C 48.09375 58.984375 45.796875 55.984375 40.296875 50.890625 
-L 22.59375 34.75 
-L 22.59375 55.21875 
-C 22.59375 62.5 23.703125 63.609375 31.796875 64.203125 
-L 31.796875 66.109375 
-L 3.40625 66.109375 
-L 3.40625 64.203125 
-C 11.203125 63.609375 12.40625 62.3125 12.40625 55.171875 
-L 12.40625 11.71875 
-C 12.40625 3.390625 11.296875 2.09375 3.40625 2.09375 
-L 3.40625 0 
-L 31.59375 0 
-L 31.59375 2.09375 
-C 23.796875 2.09375 22.59375 3.296875 22.59375 10.671875 
-L 22.59375 29.546875 
-L 25.203125 31.65625 
-L 35.796875 21.171875 
-C 43.40625 13.6875 48.796875 6.59375 48.796875 4.203125 
-C 48.796875 2.796875 47.40625 2.09375 44.59375 2.09375 
-C 44.09375 2.09375 43 2.09375 41.796875 1.890625 
-L 41.796875 0 
-L 72.296875 0 
-L 72.296875 2.09375 
-C 67.09375 2.09375 65.703125 3.09375 56.59375 12.75 
-L 33.296875 37.640625 
-L 52.296875 56.421875 
-C 59.09375 62.90625 60.703125 63.703125 67.5 64.203125 
-L 67.5 66.109375 
-L 41.296875 66.109375 
-z
-" id="Nimbus_Roman_No9_L_Regular-75"/>
+      <path d="M 3.59375 45.203125 
+L 5.5 67.703125 
+L 66.59375 67.703125 
+L 68.5 45.203125 
+L 66 45.203125 
+Q 65.59375 49.703125 65.25 52.296875 
+Q 64.90625 54.90625 64.046875 57.34375 
+Q 63.203125 59.796875 62.140625 61 
+Q 61.09375 62.203125 59.09375 63.140625 
+Q 57.09375 64.09375 54.5 64.34375 
+Q 51.90625 64.59375 48 64.59375 
+Q 43.40625 64.59375 42.296875 64.40625 
+Q 41.09375 64.09375 40.796875 63.25 
+Q 40.5 62.40625 40.5 60.59375 
+L 40.5 7.90625 
+Q 40.5 5.90625 40.890625 5.09375 
+Q 41.296875 4.296875 43.59375 3.6875 
+Q 45.90625 3.09375 51 3.09375 
+L 55 3.09375 
+L 55 0 
+Q 50.90625 0.296875 36 0.296875 
+Q 21.203125 0.296875 17.09375 0 
+L 17.09375 3.09375 
+L 21.09375 3.09375 
+Q 26.203125 3.09375 28.5 3.6875 
+Q 30.796875 4.296875 31.1875 5.09375 
+Q 31.59375 5.90625 31.59375 7.90625 
+L 31.59375 60.59375 
+Q 31.59375 62 31.5 62.59375 
+Q 31.40625 63.203125 30.953125 63.703125 
+Q 30.5 64.203125 29.5 64.390625 
+Q 28.5 64.59375 24.09375 64.59375 
+Q 20.203125 64.59375 17.59375 64.34375 
+Q 15 64.09375 13 63.140625 
+Q 11 62.203125 9.953125 61 
+Q 8.90625 59.796875 8.046875 57.34375 
+Q 7.203125 54.90625 6.84375 52.296875 
+Q 6.5 49.703125 6.09375 45.203125 
+z
+" id="CMUSerif-Roman-84"/>
+      <path d="M 2.796875 -16.296875 
+Q 8.09375 -16.296875 9.34375 -15.640625 
+Q 10.59375 -15 10.59375 -11.796875 
+L 10.59375 35 
+Q 10.59375 38.296875 9.34375 39.140625 
+Q 8.09375 40 2.796875 40 
+L 2.796875 43.09375 
+L 17.203125 44.203125 
+L 17.203125 37.59375 
+Q 23.203125 44.203125 31.203125 44.203125 
+Q 39.703125 44.203125 45.890625 37.59375 
+Q 52.09375 31 52.09375 21.59375 
+Q 52.09375 12.09375 45.5 5.5 
+Q 38.90625 -1.09375 29.796875 -1.09375 
+Q 24.796875 -1.09375 21.4375 1.453125 
+Q 18.09375 4 17.5 5.90625 
+L 17.5 5 
+L 17.5 -11.796875 
+Q 17.5 -15 18.75 -15.640625 
+Q 20 -16.296875 25.296875 -16.296875 
+L 25.296875 -19.40625 
+Q 14.796875 -19.09375 14 -19.09375 
+Q 13 -19.09375 2.796875 -19.40625 
+z
+M 17.5 11.40625 
+Q 17.5 9.90625 17.703125 9.34375 
+Q 17.90625 8.796875 18.90625 7.203125 
+Q 22.90625 1.09375 29.40625 1.09375 
+Q 35.09375 1.09375 39.4375 6.9375 
+Q 43.796875 12.796875 43.796875 21.59375 
+Q 43.796875 30 39.84375 35.84375 
+Q 35.90625 41.703125 30.40625 41.703125 
+Q 26.5 41.703125 23.09375 39.59375 
+Q 19.703125 37.5 17.5 33.703125 
+z
+" id="CMUSerif-Roman-112"/>
+      <path d="M 4.203125 9.5 
+Q 4.203125 18 14.203125 22.5 
+Q 20.203125 25.40625 32.59375 26.09375 
+L 32.59375 29.796875 
+Q 32.59375 36 29.34375 39.296875 
+Q 26.09375 42.59375 22 42.59375 
+Q 14.703125 42.59375 11.203125 38 
+Q 14.203125 37.90625 15.25 36.40625 
+Q 16.296875 34.90625 16.296875 33.40625 
+Q 16.296875 31.40625 15.046875 30.09375 
+Q 13.796875 28.796875 11.703125 28.796875 
+Q 9.703125 28.796875 8.390625 30.046875 
+Q 7.09375 31.296875 7.09375 33.5 
+Q 7.09375 38.40625 11.5 41.59375 
+Q 15.90625 44.796875 22.203125 44.796875 
+Q 30.40625 44.796875 35.90625 39.296875 
+Q 37.59375 37.59375 38.4375 35.390625 
+Q 39.296875 33.203125 39.390625 31.75 
+Q 39.5 30.296875 39.5 27.5 
+L 39.5 7.5 
+Q 39.5 6.90625 39.703125 5.953125 
+Q 39.90625 5 40.796875 3.75 
+Q 41.703125 2.5 43.203125 2.5 
+Q 46.796875 2.5 46.796875 8.90625 
+L 46.796875 14.5 
+L 49.296875 14.5 
+L 49.296875 8.90625 
+Q 49.296875 3.59375 46.5 1.5 
+Q 43.703125 -0.59375 41.09375 -0.59375 
+Q 37.796875 -0.59375 35.6875 1.84375 
+Q 33.59375 4.296875 33.296875 7.59375 
+Q 31.796875 3.796875 28.34375 1.34375 
+Q 24.90625 -1.09375 20.203125 -1.09375 
+Q 16.59375 -1.09375 13.1875 -0.1875 
+Q 9.796875 0.703125 7 3.203125 
+Q 4.203125 5.703125 4.203125 9.5 
+z
+M 11.90625 9.59375 
+Q 11.90625 5.90625 14.546875 3.5 
+Q 17.203125 1.09375 20.90625 1.09375 
+Q 25.09375 1.09375 28.84375 4.34375 
+Q 32.59375 7.59375 32.59375 14 
+L 32.59375 24 
+Q 21.5 23.59375 16.703125 19.1875 
+Q 11.90625 14.796875 11.90625 9.59375 
+z
+" id="CMUSerif-Roman-97"/>
+      <path d="M 4.59375 1.3125 
+Q 4.640625 1.5625 4.8125 2.1875 
+Q 4.984375 2.828125 5.25 3.171875 
+Q 5.515625 3.515625 6 3.515625 
+Q 14.59375 3.515625 17.390625 4 
+Q 20.0625 4.6875 20.609375 6.890625 
+L 34.28125 61.8125 
+Q 34.71875 63.03125 34.71875 64.015625 
+Q 34.71875 64.796875 31.203125 64.796875 
+L 25.390625 64.796875 
+Q 18.703125 64.796875 15.0625 62.734375 
+Q 11.421875 60.6875 9.71875 57.3125 
+Q 8.015625 53.953125 5.328125 46.296875 
+Q 4.984375 45.40625 4.296875 45.40625 
+L 3.421875 45.40625 
+Q 2.390625 45.40625 2.390625 46.6875 
+L 9.515625 67.390625 
+Q 9.71875 68.3125 10.5 68.3125 
+L 69.578125 68.3125 
+Q 70.609375 68.3125 70.609375 67 
+L 67.28125 46.296875 
+Q 67.28125 46 66.9375 45.703125 
+Q 66.609375 45.40625 66.3125 45.40625 
+L 65.375 45.40625 
+Q 64.40625 45.40625 64.40625 46.6875 
+Q 65.484375 53.765625 65.484375 56.6875 
+Q 65.484375 60.203125 64.015625 62 
+Q 62.546875 63.8125 60.203125 64.296875 
+Q 57.859375 64.796875 54.109375 64.796875 
+L 48.1875 64.796875 
+Q 45.515625 64.796875 44.578125 64.296875 
+Q 43.65625 63.8125 43.015625 61.375 
+L 29.296875 6.5 
+Q 29.25 6.296875 29.21875 6.09375 
+Q 29.203125 5.90625 29.109375 5.609375 
+Q 29.109375 4.34375 30.609375 4 
+Q 33.203125 3.515625 41.703125 3.515625 
+Q 42.671875 3.515625 42.671875 2.203125 
+Q 42.328125 0.78125 42.125 0.390625 
+Q 41.9375 0 41.015625 0 
+L 5.609375 0 
+Q 4.59375 0 4.59375 1.3125 
+z
+" id="Cmmi10-84"/>
+      <path d="M 3.296875 0 
+L 3.296875 3.09375 
+L 5.703125 3.09375 
+Q 11.09375 3.09375 12.34375 4 
+Q 13.59375 4.90625 13.59375 7.796875 
+L 13.59375 60.5 
+Q 13.59375 63.40625 12.34375 64.296875 
+Q 11.09375 65.203125 5.703125 65.203125 
+L 3.296875 65.203125 
+L 3.296875 68.296875 
+Q 6.796875 68 18.09375 68 
+Q 29.296875 68 32.796875 68.296875 
+L 32.796875 65.203125 
+L 30.40625 65.203125 
+Q 25 65.203125 23.75 64.296875 
+Q 22.5 63.40625 22.5 60.5 
+L 22.5 28.703125 
+L 53.796875 58.59375 
+Q 55.59375 60.203125 55.59375 61.90625 
+Q 55.59375 62.5 55.34375 63.140625 
+Q 55.09375 63.796875 53.9375 64.5 
+Q 52.796875 65.203125 51 65.203125 
+L 51 68.296875 
+Q 54.40625 68 63.703125 68 
+Q 69.59375 68 72.203125 68.296875 
+L 72.203125 65.203125 
+Q 63.90625 65.09375 58 59.203125 
+L 40 41.90625 
+L 63.09375 7.90625 
+Q 65.203125 4.796875 67.25 3.9375 
+Q 69.296875 3.09375 73.59375 3.09375 
+L 73.59375 0 
+Q 67.296875 0.296875 62.09375 0.296875 
+Q 51.296875 0.296875 47.796875 0 
+L 47.796875 3.09375 
+Q 53.703125 3.09375 53.703125 6.09375 
+Q 53.703125 7.203125 52.203125 9.5 
+L 34.09375 36.296875 
+L 22.5 25.296875 
+L 22.5 7.796875 
+Q 22.5 4.90625 23.75 4 
+Q 25 3.09375 30.40625 3.09375 
+L 32.796875 3.09375 
+L 32.796875 0 
+Q 29.296875 0.296875 18 0.296875 
+Q 6.796875 0.296875 3.296875 0 
+z
+" id="CMUSerif-Roman-75"/>
      </defs>
-     <g transform="translate(8.880526 137.975632)rotate(-90)scale(0.1 -0.1)">
-      <use transform="scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-84"/>
-      <use transform="translate(53.898284 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-101"/>
-      <use transform="translate(98.131853 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-109"/>
-      <use transform="translate(175.640223 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-112"/>
-      <use transform="translate(225.453424 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-101"/>
-      <use transform="translate(269.686992 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-114"/>
-      <use transform="translate(302.862222 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-97"/>
-      <use transform="translate(347.095791 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-116"/>
-      <use transform="translate(374.79096 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-117"/>
-      <use transform="translate(424.604161 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-114"/>
-      <use transform="translate(457.779391 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-101"/>
-      <use transform="translate(533.242072 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular_Italic-84"/>
-      <use transform="translate(632.514439 0)scale(0.996264)" xlink:href="#CMR10-91"/>
-      <use transform="translate(660.109945 0)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular-75"/>
-      <use transform="translate(732.03993 0)scale(0.996264)" xlink:href="#CMR10-93"/>
+     <g transform="translate(8.72 141.042)rotate(-90)scale(0.1 -0.1)">
+      <use xlink:href="#CMUSerif-Roman-84"/>
+      <use transform="translate(72.199982 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(116.599976 0)" xlink:href="#CMUSerif-Roman-109"/>
+      <use transform="translate(199.899963 0)" xlink:href="#CMUSerif-Roman-112"/>
+      <use transform="translate(255.399948 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(299.799942 0)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(338.899933 0)" xlink:href="#CMUSerif-Roman-97"/>
+      <use transform="translate(388.899918 0)" xlink:href="#CMUSerif-Roman-116"/>
+      <use transform="translate(427.699905 0)" xlink:href="#CMUSerif-Roman-117"/>
+      <use transform="translate(483.19989 0)" xlink:href="#CMUSerif-Roman-114"/>
+      <use transform="translate(522.299881 0)" xlink:href="#CMUSerif-Roman-101"/>
+      <use transform="translate(566.699875 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(599.999863 0)" xlink:href="#Cmmi10-84"/>
+      <use transform="translate(658.3983 0)" xlink:href="#CMUSerif-Roman-32"/>
+      <use transform="translate(691.698288 0)" xlink:href="#CMUSerif-Roman-91"/>
+      <use transform="translate(719.498276 0)" xlink:href="#CMUSerif-Roman-75"/>
+      <use transform="translate(797.198257 0)" xlink:href="#CMUSerif-Roman-93"/>
      </g>
     </g>
    </g>
    <g id="line2d_43">
-    <path clip-path="url(#p107a2e5a22)" d="M 77.714425 70.434351 
+    <path clip-path="url(#pf19aa30d2c)" d="M 77.714425 70.434351 
 L 227.8 70.434351 
 L 227.8 70.434351 
 " style="fill:none;stroke:#000000;stroke-linecap:square;"/>
    </g>
    <g id="line2d_44">
-    <path clip-path="url(#p107a2e5a22)" d="M 146.991516 85.113175 
+    <path clip-path="url(#pf19aa30d2c)" d="M 146.991516 85.113175 
 L 227.8 9.275054 
 L 227.8 9.275054 
 " style="fill:none;stroke:#000000;stroke-linecap:square;"/>
    </g>
    <g id="line2d_45">
-    <path clip-path="url(#p107a2e5a22)" d="M -1 70.434351 
+    <path clip-path="url(#pf19aa30d2c)" d="M -1 70.434351 
 L 77.714425 70.434351 
 " style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
    <g id="line2d_46">
-    <path clip-path="url(#p107a2e5a22)" d="M -1 85.113175 
+    <path clip-path="url(#pf19aa30d2c)" d="M -1 85.113175 
 L 146.991516 85.113175 
 " style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
    <g id="line2d_47">
-    <path clip-path="url(#p107a2e5a22)" d="M 77.714425 197.316 
+    <path clip-path="url(#pf19aa30d2c)" d="M 77.714425 197.316 
 L 77.714425 70.434351 
 " style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
    <g id="line2d_48">
-    <path clip-path="url(#p107a2e5a22)" d="M 146.991516 197.316 
+    <path clip-path="url(#pf19aa30d2c)" d="M 146.991516 197.316 
 L 146.991516 85.113175 
 " style="fill:none;stroke:#000000;stroke-dasharray:0.6,0.99;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
    <g id="line2d_49">
-    <path clip-path="url(#p107a2e5a22)" d="M 68.658545 43.904505 
+    <path clip-path="url(#pf19aa30d2c)" d="M 68.658545 43.904505 
 L 103.297091 43.904505 
 " style="fill:none;stroke:#000000;stroke-dasharray:2.22,0.96;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
    <g id="line2d_50">
-    <path clip-path="url(#p107a2e5a22)" d="M 155.254909 57.122263 
+    <path clip-path="url(#pf19aa30d2c)" d="M 155.254909 57.122263 
 L 189.893455 24.614263 
 " style="fill:none;stroke:#000000;stroke-dasharray:2.22,0.96;stroke-dashoffset:0;stroke-width:0.6;"/>
    </g>
@@ -1179,923 +1780,732 @@ L 224.532 2.268
 " style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
    </g>
    <g id="text_12">
-    <!-- $n_{\rm H}~\widehat{}~{\tt Cool\_gamma\_effective}$ -->
+    <!-- $n_{\rm H}$^Cool_gamma_effective -->
     <defs>
-     <path d="M 27.703125 68.5 
-L 54.90625 56.203125 
-L 56.09375 58.40625 
-L 27.796875 74.40625 
-L -0.5 58.40625 
-L 0.59375 56.203125 
-z
-" id="CMEX10-98"/>
-     <path d="M 47.40625 58.296875 
-C 47.40625 59.890625 47.40625 62.09375 44.59375 62.09375 
-C 42.796875 62.09375 42.296875 61 41.90625 60.296875 
-C 41.59375 59.5 40.796875 57.703125 40.5 57 
-C 36.40625 60.59375 31.796875 62.09375 27.59375 62.09375 
-C 14.703125 62.09375 4 48.390625 4 30.59375 
-C 4 12.40625 15 -1 27.59375 -1 
-C 39.296875 -1 47.40625 8.21875 47.40625 16.96875 
-C 47.40625 20.03125 45.296875 20.03125 44.09375 20.03125 
-C 42.703125 20.03125 41.09375 19.53125 40.90625 17.859375 
-C 40.09375 5.109375 30 5.109375 28.296875 5.109375 
-C 19 5.109375 10.5 15.859375 10.5 30.75 
-C 10.5 45.65625 19.09375 56.296875 28.203125 56.296875 
-C 33.59375 56.296875 39.5 52 40.90625 42.796875 
-C 41.203125 40.59375 42.09375 40 44.09375 40 
-C 47.40625 40 47.40625 41.796875 47.40625 43.796875 
-z
-" id="CMTT12-67"/>
-     <path d="M 45.59375 21.640625 
-C 45.59375 34.109375 36.5 44 25.703125 44 
-C 14.90625 44 5.796875 34.109375 5.796875 21.640625 
-C 5.796875 9.078125 15 -0.5 25.703125 -0.5 
-C 36.40625 -0.5 45.59375 9.078125 45.59375 21.640625 
-z
-M 25.703125 5.296875 
-C 18.5 5.296875 12.296875 12.875 12.296875 22.34375 
-C 12.296875 31.609375 18.703125 38.203125 25.703125 38.203125 
-C 32.703125 38.203125 39.09375 31.609375 39.09375 22.34375 
-C 39.09375 12.78125 32.90625 5.296875 25.703125 5.296875 
-z
-" id="CMTT12-111"/>
-     <path d="M 29 56.90625 
-C 29 60 28.40625 61 25 61 
-L 10.296875 61 
-C 8.90625 61 6.296875 61 6.296875 58.109375 
-C 6.296875 55.203125 8.90625 55.203125 10.296875 55.203125 
-L 22.5 55.203125 
-L 22.5 5.796875 
-L 10.296875 5.796875 
-C 8.90625 5.796875 6.296875 5.796875 6.296875 2.90625 
-C 6.296875 0 8.90625 0 10.296875 0 
-L 41.203125 0 
-C 42.59375 0 45.203125 0 45.203125 2.90625 
-C 45.203125 5.796875 42.59375 5.796875 41.203125 5.796875 
-L 29 5.796875 
-z
-" id="CMTT12-108"/>
-     <path d="M 19 6.59375 
-C 17.796875 6.59375 13.203125 6.59375 13.203125 12.015625 
-C 13.203125 13.921875 13.5 14.3125 13.90625 15.109375 
-C 15.90625 13.703125 19.203125 12.40625 22.796875 12.40625 
-C 31.90625 12.40625 38.90625 19.703125 38.90625 28.28125 
-C 38.90625 30.78125 38.296875 33.890625 36.203125 37.1875 
-C 38.796875 38.421875 41.203125 38.703125 42.703125 38.703125 
-C 43.296875 36 46.203125 36 46.296875 36 
-C 47.5 36 50 36.796875 50 39.796875 
-C 50 41.703125 48.5 45 42.90625 45 
-C 41.09375 45 36.59375 44.5625 32.40625 40.90625 
-C 29.09375 43.203125 25.703125 44 22.90625 44 
-C 13.796875 44 6.796875 36.765625 6.796875 28.21875 
-C 6.796875 26.03125 7.296875 22.265625 10.09375 18.703125 
-C 8.203125 15.90625 7.90625 12.90625 7.90625 11.703125 
-C 7.90625 8.203125 9.59375 5.40625 10.40625 4.5 
-C 4.90625 1.484375 2.90625 -3.9375 2.90625 -7.84375 
-C 2.90625 -16.171875 13 -22.5 25.703125 -22.5 
-C 38.40625 -22.5 48.5 -16.28125 48.5 -7.84375 
-C 48.5 6.59375 30.796875 6.59375 27.5 6.59375 
-z
-M 22.796875 18 
-C 17.796875 18 13.296875 22.359375 13.296875 28.203125 
-C 13.296875 34.046875 17.90625 38.390625 22.796875 38.390625 
-C 28.09375 38.390625 32.40625 33.84375 32.40625 28.203125 
-C 32.40625 22.546875 28.09375 18 22.796875 18 
-z
-M 25.703125 -16.890625 
-C 15.90625 -16.890625 8.59375 -12.484375 8.59375 -7.84375 
-C 8.59375 -6.328125 9.09375 -2.8125 12.796875 -0.515625 
-C 15.09375 1 16.09375 1 23 1 
-C 31.796875 1 42.796875 1 42.796875 -7.84375 
-C 42.796875 -12.484375 35.5 -16.890625 25.703125 -16.890625 
-z
-" id="CMTT12-103"/>
-     <path d="M 41.40625 28.375 
-C 41.40625 35.984375 35.703125 44 22.203125 44 
-C 18 44 8.296875 44 8.296875 37.1875 
-C 8.296875 34.53125 10.203125 33.046875 12.40625 33.046875 
-C 13 33.046875 16.296875 33.046875 16.40625 37.3125 
-C 16.40625 37.796875 16.5 37.90625 18.59375 38.09375 
-C 19.796875 38.203125 21.09375 38.203125 22.296875 38.203125 
-C 24.59375 38.203125 28 38.203125 31.296875 35.65625 
-C 34.90625 32.8125 34.90625 29.9375 34.90625 27 
-C 29 27 23.203125 27 17 24.984375 
-C 12 23.265625 5.59375 19.625 5.59375 12.75 
-C 5.59375 5.5625 11.90625 -0.5 21.203125 -0.5 
-C 24.40625 -0.5 30.59375 0 35.796875 3.53125 
-C 37.796875 0 42.796875 0 46.59375 0 
-C 49 0 51.40625 0 51.40625 2.859375 
-C 51.40625 5.703125 48.796875 5.703125 47.40625 5.703125 
-C 44.796875 5.703125 42.796875 5.90625 41.40625 6.515625 
-z
-M 34.90625 13.296875 
-C 34.90625 11 34.90625 8.890625 30.796875 7 
-C 27.296875 5.296875 22.59375 5.296875 22.296875 5.296875 
-C 16.40625 5.296875 12.09375 8.5 12.09375 12.59375 
-C 12.09375 18.5 22.796875 21.890625 34.90625 21.890625 
-z
-" id="CMTT12-97"/>
-     <path d="M 45.296875 30.359375 
-C 45.296875 32.5625 45.296875 43.796875 36.5 43.796875 
-C 33 43.796875 29.59375 42.1875 26.90625 38.484375 
-C 26.296875 39.984375 24.09375 43.796875 19.296875 43.796875 
-C 14.796875 43.796875 11.703125 40.828125 10.90625 39.921875 
-C 10.796875 43 8.703125 43 6.90625 43 
-L 3.90625 43 
-C 2.5 43 -0.09375 43 -0.09375 40.109375 
-C -0.09375 37.203125 2.203125 37.203125 5.296875 37.203125 
-L 5.296875 5.796875 
-C 2.09375 5.796875 -0.09375 5.796875 -0.09375 2.90625 
-C -0.09375 0 2.5 0 3.90625 0 
-L 12.296875 0 
-C 13.703125 0 16.296875 0 16.296875 2.90625 
-C 16.296875 5.796875 14 5.796875 10.90625 5.796875 
-L 10.90625 24.25 
-C 10.90625 32.671875 14.5 38 18.90625 38 
-C 21.703125 38 22.5 34.484375 22.5 29.765625 
-L 22.5 5.796875 
-C 20.796875 5.796875 18.09375 5.796875 18.09375 2.90625 
-C 18.09375 0 20.796875 0 22.203125 0 
-L 29.5 0 
-C 30.90625 0 33.5 0 33.5 2.90625 
-C 33.5 5.796875 31.203125 5.796875 28.09375 5.796875 
-L 28.09375 24.25 
-C 28.09375 32.671875 31.703125 38 36.09375 38 
-C 38.90625 38 39.703125 34.484375 39.703125 29.765625 
-L 39.703125 5.796875 
-C 38 5.796875 35.296875 5.796875 35.296875 2.90625 
-C 35.296875 0 38 0 39.40625 0 
-L 46.703125 0 
-C 48.09375 0 50.703125 0 50.703125 2.90625 
-C 50.703125 5.796875 48.40625 5.796875 45.296875 5.796875 
-z
-" id="CMTT12-109"/>
-     <path d="M 41.59375 19.5 
-C 43.703125 19.5 45.59375 19.5 45.59375 23.15625 
-C 45.59375 34.703125 39 44 26.5 44 
-C 14.90625 44 5.59375 34.015625 5.59375 21.84375 
-C 5.59375 9.28125 15.703125 -0.5 28 -0.5 
-C 40.90625 -0.5 45.59375 8.453125 45.59375 11.078125 
-C 45.59375 11.6875 45.40625 13.921875 42.296875 13.921875 
-C 40.40625 13.921875 39.796875 13.203125 39.203125 11.6875 
-C 36.703125 5.796875 30.203125 5.296875 28.296875 5.296875 
-C 20 5.296875 13.40625 11.6875 12.296875 19.5 
-z
-M 12.40625 25 
-C 13.703125 33.3125 20.203125 38.203125 26.5 38.203125 
-C 36.5 38.203125 38.59375 29.890625 39 25 
-z
-" id="CMTT12-101"/>
-     <path d="M 24.703125 37.203125 
-L 36.796875 37.203125 
-C 38.203125 37.203125 40.796875 37.203125 40.796875 40.109375 
-C 40.796875 43 38.203125 43 36.796875 43 
-L 24.703125 43 
-L 24.703125 48.078125 
-C 24.703125 56 31.703125 56 34.90625 56 
-C 34.90625 55.796875 35.703125 52.03125 39 52.03125 
-C 40.59375 52.03125 42.90625 53.234375 42.90625 56.0625 
-C 42.90625 61.796875 35.296875 61.796875 33.796875 61.796875 
-C 26.203125 61.796875 18.203125 57.453125 18.203125 48.453125 
-L 18.203125 43 
-L 8.296875 43 
-C 6.90625 43 4.203125 43 4.203125 40.109375 
-C 4.203125 37.203125 6.796875 37.203125 8.203125 37.203125 
-L 18.203125 37.203125 
-L 18.203125 5.796875 
-L 8.703125 5.796875 
-C 7.296875 5.796875 4.703125 5.796875 4.703125 2.90625 
-C 4.703125 0 7.296875 0 8.703125 0 
-L 34.203125 0 
-C 35.59375 0 38.203125 0 38.203125 2.90625 
-C 38.203125 5.796875 35.59375 5.796875 34.203125 5.796875 
-L 24.703125 5.796875 
-z
-" id="CMTT12-102"/>
-     <path d="M 45.59375 10.96875 
-C 45.59375 13.5625 43.09375 13.5625 42.296875 13.5625 
-C 40 13.5625 39.59375 12.765625 39.09375 11.375 
-C 36.90625 5.890625 32 5.296875 29.59375 5.296875 
-C 21.09375 5.296875 13.90625 12.375 13.90625 21.640625 
-C 13.90625 26.734375 16.796875 38.203125 29.90625 38.203125 
-C 32.59375 38.203125 34.703125 38 35.59375 37.90625 
-C 36.296875 37.703125 36.40625 37.578125 36.40625 37.078125 
-C 36.703125 32.921875 39.796875 32.921875 40.40625 32.921875 
-C 42.59375 32.921875 44.5 34.421875 44.5 37.109375 
-C 44.5 44 34.40625 44 30 44 
-C 12.90625 44 7.40625 30.03125 7.40625 21.640625 
-C 7.40625 9.484375 16.703125 -0.5 28.703125 -0.5 
-C 42.09375 -0.5 45.59375 9.375 45.59375 10.96875 
-z
-" id="CMTT12-99"/>
-     <path d="M 21.59375 37.203125 
-L 37.796875 37.203125 
-C 39.203125 37.203125 41.796875 37.203125 41.796875 40.109375 
-C 41.796875 43 39.203125 43 37.796875 43 
-L 21.59375 43 
-L 21.59375 51.328125 
-C 21.59375 53.15625 21.59375 55.5 18.40625 55.5 
-C 15.09375 55.5 15.09375 53.15625 15.09375 51.328125 
-L 15.09375 43 
-L 6.59375 43 
-C 5.203125 43 2.5 43 2.5 40.109375 
-C 2.5 37.203125 5.09375 37.203125 6.5 37.203125 
-L 15.09375 37.203125 
-L 15.09375 12.125 
-C 15.09375 2.875 21.5 -0.5 28.703125 -0.5 
-C 34.09375 -0.5 44 2.171875 44 12.34375 
-C 44 14.34375 44 16.53125 40.703125 16.53125 
-C 37.5 16.53125 37.5 14.34375 37.5 12.265625 
-C 37.40625 6.296875 31.703125 5.296875 29.40625 5.296875 
-C 21.59375 5.296875 21.59375 10.265625 21.59375 12.640625 
-z
-" id="CMTT12-116"/>
-     <path d="M 30.203125 56.5 
-C 30.203125 59 28.203125 61 25.703125 61 
-C 23.203125 61 21.203125 59 21.203125 56.5 
-C 21.203125 54 23.203125 52 25.703125 52 
-C 28.203125 52 30.203125 54 30.203125 56.5 
-z
-M 13 43 
-C 11.59375 43 9 43 9 40.109375 
-C 9 37.203125 11.59375 37.203125 13 37.203125 
-L 23.703125 37.203125 
-L 23.703125 5.796875 
-L 12.296875 5.796875 
-C 10.90625 5.796875 8.203125 5.796875 8.203125 2.90625 
-C 8.203125 0 10.90625 0 12.296875 0 
-L 40.09375 0 
-C 41.5 0 44.09375 0 44.09375 2.90625 
-C 44.09375 5.796875 41.5 5.796875 40.09375 5.796875 
-L 30.203125 5.796875 
-L 30.203125 38.921875 
-C 30.203125 42 29.59375 43 26.203125 43 
-z
-" id="CMTT12-105"/>
-     <path d="M 42.40625 37.203125 
-L 45 37.203125 
-C 46.40625 37.203125 49.09375 37.203125 49.09375 40.109375 
-C 49.09375 43 46.40625 43 45 43 
-L 34 43 
-C 32.59375 43 29.90625 43 29.90625 40.109375 
-C 29.90625 37.203125 32.59375 37.203125 34 37.203125 
-L 36.5 37.203125 
-L 25.703125 5.078125 
-L 14.90625 37.203125 
-L 17.40625 37.203125 
-C 18.796875 37.203125 21.5 37.203125 21.5 40.109375 
-C 21.5 43 18.796875 43 17.40625 43 
-L 6.40625 43 
-C 5 43 2.296875 43 2.296875 40.109375 
-C 2.296875 37.203125 5 37.203125 6.40625 37.203125 
-L 9 37.203125 
-L 20.5 2.890625 
-C 21.59375 -0.5 23.796875 -0.5 25.703125 -0.5 
-C 27.59375 -0.5 29.796875 -0.5 30.90625 2.890625 
-z
-" id="CMTT12-118"/>
+     <path d="M 34.421875 72.90625 
+L 56.6875 45.703125 
+L 48 45.703125 
+L 30.078125 64.984375 
+L 12.203125 45.703125 
+L 3.515625 45.703125 
+L 25.78125 72.90625 
+z
+" id="DejaVuSansMono-94"/>
+     <path d="M 52.390625 2.59375 
+Q 48.640625 0.59375 44.671875 -0.40625 
+Q 40.71875 -1.421875 36.28125 -1.421875 
+Q 22.265625 -1.421875 14.515625 8.484375 
+Q 6.78125 18.40625 6.78125 36.375 
+Q 6.78125 54.25 14.5625 64.234375 
+Q 22.359375 74.21875 36.28125 74.21875 
+Q 40.71875 74.21875 44.671875 73.21875 
+Q 48.640625 72.21875 52.390625 70.21875 
+L 52.390625 60.109375 
+Q 48.78125 63.09375 44.625 64.65625 
+Q 40.484375 66.21875 36.28125 66.21875 
+Q 26.65625 66.21875 21.875 58.796875 
+Q 17.09375 51.375 17.09375 36.375 
+Q 17.09375 21.4375 21.875 14.015625 
+Q 26.65625 6.59375 36.28125 6.59375 
+Q 40.578125 6.59375 44.703125 8.15625 
+Q 48.828125 9.71875 52.390625 12.703125 
+z
+" id="DejaVuSansMono-67"/>
+     <path d="M 30.078125 48.390625 
+Q 23.25 48.390625 19.734375 43.0625 
+Q 16.21875 37.75 16.21875 27.296875 
+Q 16.21875 16.890625 19.734375 11.546875 
+Q 23.25 6.203125 30.078125 6.203125 
+Q 36.96875 6.203125 40.484375 11.546875 
+Q 44 16.890625 44 27.296875 
+Q 44 37.75 40.484375 43.0625 
+Q 36.96875 48.390625 30.078125 48.390625 
+z
+M 30.078125 56 
+Q 41.453125 56 47.484375 48.625 
+Q 53.515625 41.265625 53.515625 27.296875 
+Q 53.515625 13.28125 47.5 5.921875 
+Q 41.5 -1.421875 30.078125 -1.421875 
+Q 18.703125 -1.421875 12.6875 5.921875 
+Q 6.6875 13.28125 6.6875 27.296875 
+Q 6.6875 41.265625 12.6875 48.625 
+Q 18.703125 56 30.078125 56 
+z
+" id="DejaVuSansMono-111"/>
+     <path d="M 31.203125 19.828125 
+Q 31.203125 13.765625 33.421875 10.6875 
+Q 35.640625 7.625 39.984375 7.625 
+L 50.484375 7.625 
+L 50.484375 0 
+L 39.109375 0 
+Q 31.0625 0 26.640625 5.171875 
+Q 22.21875 10.359375 22.21875 19.828125 
+L 22.21875 69.484375 
+L 7.8125 69.484375 
+L 7.8125 76.515625 
+L 31.203125 76.515625 
+z
+" id="DejaVuSansMono-108"/>
+     <path d="M 60.203125 -19.671875 
+L 60.203125 -23.578125 
+L 0 -23.578125 
+L 0 -19.671875 
+z
+" id="DejaVuSansMono-95"/>
+     <path d="M 41.890625 27.78125 
+Q 41.890625 37.890625 38.59375 43.140625 
+Q 35.296875 48.390625 29 48.390625 
+Q 22.40625 48.390625 18.9375 43.140625 
+Q 15.484375 37.890625 15.484375 27.78125 
+Q 15.484375 17.671875 18.96875 12.375 
+Q 22.46875 7.078125 29.109375 7.078125 
+Q 35.296875 7.078125 38.59375 12.390625 
+Q 41.890625 17.71875 41.890625 27.78125 
+z
+M 50.875 3.515625 
+Q 50.875 -8.796875 45.0625 -15.140625 
+Q 39.265625 -21.484375 27.984375 -21.484375 
+Q 24.265625 -21.484375 20.203125 -20.796875 
+Q 16.15625 -20.125 12.109375 -18.796875 
+L 12.109375 -9.90625 
+Q 16.890625 -12.15625 20.796875 -13.234375 
+Q 24.703125 -14.3125 27.984375 -14.3125 
+Q 35.25 -14.3125 38.5625 -10.34375 
+Q 41.890625 -6.390625 41.890625 2.203125 
+L 41.890625 2.59375 
+L 41.890625 8.6875 
+Q 39.75 4.109375 36.03125 1.859375 
+Q 32.328125 -0.390625 27 -0.390625 
+Q 17.4375 -0.390625 11.71875 7.265625 
+Q 6 14.9375 6 27.78125 
+Q 6 40.671875 11.71875 48.328125 
+Q 17.4375 56 27 56 
+Q 32.28125 56 35.9375 53.90625 
+Q 39.59375 51.8125 41.890625 47.40625 
+L 41.890625 54.5 
+L 50.875 54.5 
+z
+" id="DejaVuSansMono-103"/>
+     <path d="M 34.28125 27.484375 
+L 31.296875 27.484375 
+Q 23.4375 27.484375 19.453125 24.71875 
+Q 15.484375 21.96875 15.484375 16.5 
+Q 15.484375 11.578125 18.453125 8.84375 
+Q 21.4375 6.109375 26.703125 6.109375 
+Q 34.125 6.109375 38.375 11.25 
+Q 42.625 16.40625 42.671875 25.484375 
+L 42.671875 27.484375 
+z
+M 51.703125 31.203125 
+L 51.703125 0 
+L 42.671875 0 
+L 42.671875 8.109375 
+Q 39.796875 3.21875 35.421875 0.890625 
+Q 31.0625 -1.421875 24.8125 -1.421875 
+Q 16.453125 -1.421875 11.46875 3.296875 
+Q 6.5 8.015625 6.5 15.921875 
+Q 6.5 25.046875 12.625 29.78125 
+Q 18.75 34.515625 30.609375 34.515625 
+L 42.671875 34.515625 
+L 42.671875 35.9375 
+Q 42.625 42.484375 39.34375 45.4375 
+Q 36.078125 48.390625 28.90625 48.390625 
+Q 24.3125 48.390625 19.625 47.0625 
+Q 14.9375 45.75 10.5 43.21875 
+L 10.5 52.203125 
+Q 15.484375 54.109375 20.046875 55.046875 
+Q 24.609375 56 28.90625 56 
+Q 35.6875 56 40.5 54 
+Q 45.3125 52 48.296875 48 
+Q 50.140625 45.5625 50.921875 41.96875 
+Q 51.703125 38.375 51.703125 31.203125 
+z
+" id="DejaVuSansMono-97"/>
+     <path d="M 33.015625 49.125 
+Q 34.671875 52.640625 37.234375 54.3125 
+Q 39.796875 56 43.40625 56 
+Q 50 56 52.703125 50.890625 
+Q 55.421875 45.796875 55.421875 31.6875 
+L 55.421875 0 
+L 47.21875 0 
+L 47.21875 31.296875 
+Q 47.21875 42.875 45.921875 45.671875 
+Q 44.625 48.484375 41.21875 48.484375 
+Q 37.3125 48.484375 35.859375 45.484375 
+Q 34.421875 42.484375 34.421875 31.296875 
+L 34.421875 0 
+L 26.21875 0 
+L 26.21875 31.296875 
+Q 26.21875 43.015625 24.828125 45.75 
+Q 23.4375 48.484375 19.828125 48.484375 
+Q 16.265625 48.484375 14.875 45.484375 
+Q 13.484375 42.484375 13.484375 31.296875 
+L 13.484375 0 
+L 5.328125 0 
+L 5.328125 54.6875 
+L 13.484375 54.6875 
+L 13.484375 50 
+Q 15.09375 52.9375 17.5 54.46875 
+Q 19.921875 56 23 56 
+Q 26.703125 56 29.171875 54.296875 
+Q 31.640625 52.59375 33.015625 49.125 
+z
+" id="DejaVuSansMono-109"/>
+     <path d="M 54.296875 29.59375 
+L 54.296875 25.203125 
+L 15.375 25.203125 
+L 15.375 24.90625 
+Q 15.375 15.96875 20.03125 11.078125 
+Q 24.703125 6.203125 33.203125 6.203125 
+Q 37.5 6.203125 42.1875 7.5625 
+Q 46.875 8.9375 52.203125 11.71875 
+L 52.203125 2.78125 
+Q 47.078125 0.6875 42.3125 -0.359375 
+Q 37.546875 -1.421875 33.109375 -1.421875 
+Q 20.359375 -1.421875 13.171875 6.21875 
+Q 6 13.875 6 27.296875 
+Q 6 40.375 13.03125 48.1875 
+Q 20.0625 56 31.78125 56 
+Q 42.234375 56 48.265625 48.921875 
+Q 54.296875 41.84375 54.296875 29.59375 
+z
+M 45.3125 32.234375 
+Q 45.125 40.140625 41.578125 44.265625 
+Q 38.03125 48.390625 31.390625 48.390625 
+Q 24.90625 48.390625 20.703125 44.09375 
+Q 16.5 39.796875 15.71875 32.171875 
+z
+" id="DejaVuSansMono-101"/>
+     <path d="M 51.90625 75.984375 
+L 51.90625 68.5 
+L 41.703125 68.5 
+Q 36.859375 68.5 34.984375 66.515625 
+Q 33.109375 64.546875 33.109375 59.515625 
+L 33.109375 54.6875 
+L 51.90625 54.6875 
+L 51.90625 47.703125 
+L 33.109375 47.703125 
+L 33.109375 0 
+L 24.125 0 
+L 24.125 47.703125 
+L 9.515625 47.703125 
+L 9.515625 54.6875 
+L 24.125 54.6875 
+L 24.125 58.5 
+Q 24.125 67.484375 28.25 71.734375 
+Q 32.375 75.984375 41.109375 75.984375 
+z
+" id="DejaVuSansMono-102"/>
+     <path d="M 51.8125 2.78125 
+Q 48.1875 0.6875 44.359375 -0.359375 
+Q 40.53125 -1.421875 36.53125 -1.421875 
+Q 23.828125 -1.421875 16.671875 6.1875 
+Q 9.515625 13.8125 9.515625 27.296875 
+Q 9.515625 40.765625 16.671875 48.375 
+Q 23.828125 56 36.53125 56 
+Q 40.484375 56 44.234375 54.96875 
+Q 48 53.953125 51.8125 51.8125 
+L 51.8125 42.390625 
+Q 48.25 45.5625 44.65625 46.96875 
+Q 41.0625 48.390625 36.53125 48.390625 
+Q 28.078125 48.390625 23.53125 42.921875 
+Q 19 37.453125 19 27.296875 
+Q 19 17.1875 23.5625 11.6875 
+Q 28.125 6.203125 36.53125 6.203125 
+Q 41.21875 6.203125 44.921875 7.640625 
+Q 48.640625 9.078125 51.8125 12.109375 
+z
+" id="DejaVuSansMono-99"/>
+     <path d="M 29.984375 70.21875 
+L 29.984375 54.6875 
+L 50.390625 54.6875 
+L 50.390625 47.703125 
+L 29.984375 47.703125 
+L 29.984375 18.015625 
+Q 29.984375 11.96875 32.28125 9.5625 
+Q 34.578125 7.171875 40.28125 7.171875 
+L 50.390625 7.171875 
+L 50.390625 0 
+L 39.40625 0 
+Q 29.296875 0 25.140625 4.046875 
+Q 21 8.109375 21 18.015625 
+L 21 47.703125 
+L 6.390625 47.703125 
+L 6.390625 54.6875 
+L 21 54.6875 
+L 21 70.21875 
+z
+" id="DejaVuSansMono-116"/>
+     <path d="M 12.5 54.6875 
+L 35.5 54.6875 
+L 35.5 6.984375 
+L 53.328125 6.984375 
+L 53.328125 0 
+L 8.6875 0 
+L 8.6875 6.984375 
+L 26.515625 6.984375 
+L 26.515625 47.703125 
+L 12.5 47.703125 
+z
+M 26.515625 75.984375 
+L 35.5 75.984375 
+L 35.5 64.59375 
+L 26.515625 64.59375 
+z
+" id="DejaVuSansMono-105"/>
+     <path d="M 4.890625 54.6875 
+L 14.203125 54.6875 
+L 30.078125 8.796875 
+L 46 54.6875 
+L 55.328125 54.6875 
+L 35.890625 0 
+L 24.3125 0 
+z
+" id="DejaVuSansMono-118"/>
     </defs>
-    <g transform="translate(68.658545 53.766087)scale(0.07 -0.07)">
-     <use transform="translate(0 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular_Italic-110"/>
-     <use transform="translate(49.8132 0)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-72"/>
-     <use transform="translate(107.123069 15.050129)scale(0.996264)" xlink:href="#CMEX10-98"/>
-     <use transform="translate(165.998143 15.050129)scale(0.996264)" xlink:href="#CMTT12-67"/>
-     <use transform="translate(217.264254 15.050129)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(268.530365 15.050129)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(319.796475 15.050129)scale(0.996264)" xlink:href="#CMTT12-108"/>
-     <use transform="translate(404.790082 15.050129)scale(0.996264)" xlink:href="#CMTT12-103"/>
-     <use transform="translate(456.056192 15.050129)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(507.322303 15.050129)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(558.588414 15.050129)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(609.854525 15.050129)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(694.848131 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(746.114242 15.050129)scale(0.996264)" xlink:href="#CMTT12-102"/>
-     <use transform="translate(797.380353 15.050129)scale(0.996264)" xlink:href="#CMTT12-102"/>
-     <use transform="translate(848.646464 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(899.912575 15.050129)scale(0.996264)" xlink:href="#CMTT12-99"/>
-     <use transform="translate(951.178685 15.050129)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(1002.444796 15.050129)scale(0.996264)" xlink:href="#CMTT12-105"/>
-     <use transform="translate(1053.710907 15.050129)scale(0.996264)" xlink:href="#CMTT12-118"/>
-     <use transform="translate(1104.977018 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <path d="M 376.683597 15.050129 
-L 404.790082 15.050129 
-L 404.790082 15.448629 
-L 376.683597 15.448629 
-L 376.683597 15.050129 
-z
-"/>
-     <path d="M 666.741647 15.050129 
-L 694.848131 15.050129 
-L 694.848131 15.448629 
-L 666.741647 15.448629 
-L 666.741647 15.050129 
-z
-"/>
+    <g transform="translate(68.658545 53.155701)scale(0.06 -0.06)">
+     <use transform="translate(0 0.484375)" xlink:href="#Cmmi10-110"/>
+     <use transform="translate(60.009766 -16.521875)scale(0.7)" xlink:href="#Cmr10-72"/>
+     <use transform="translate(118.887109 0.484375)" xlink:href="#DejaVuSansMono-94"/>
+     <use transform="translate(179.092187 0.484375)" xlink:href="#DejaVuSansMono-67"/>
+     <use transform="translate(239.297266 0.484375)" xlink:href="#DejaVuSansMono-111"/>
+     <use transform="translate(299.502344 0.484375)" xlink:href="#DejaVuSansMono-111"/>
+     <use transform="translate(359.707422 0.484375)" xlink:href="#DejaVuSansMono-108"/>
+     <use transform="translate(419.9125 0.484375)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(480.117578 0.484375)" xlink:href="#DejaVuSansMono-103"/>
+     <use transform="translate(540.322656 0.484375)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(600.527734 0.484375)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(660.732813 0.484375)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(720.937891 0.484375)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(781.142969 0.484375)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(841.348047 0.484375)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(901.553125 0.484375)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(961.758203 0.484375)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(1021.963281 0.484375)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(1082.168359 0.484375)" xlink:href="#DejaVuSansMono-99"/>
+     <use transform="translate(1142.373437 0.484375)" xlink:href="#DejaVuSansMono-116"/>
+     <use transform="translate(1202.578516 0.484375)" xlink:href="#DejaVuSansMono-105"/>
+     <use transform="translate(1262.783594 0.484375)" xlink:href="#DejaVuSansMono-118"/>
+     <use transform="translate(1322.988672 0.484375)" xlink:href="#DejaVuSansMono-101"/>
     </g>
    </g>
    <g id="text_13">
-    <!-- $n_{\rm H}~\widehat{}~{\tt Jeans\_gamma\_effective}$ -->
+    <!-- $n_{\rm H}$^Jeans_gamma_effective -->
     <defs>
-     <path d="M 40 55.203125 
-L 42.703125 55.203125 
-C 44.09375 55.203125 46.796875 55.203125 46.796875 58.109375 
-C 46.796875 61 44.09375 61 42.703125 61 
-L 25.796875 61 
-C 24.40625 61 21.796875 61 21.796875 58.109375 
-C 21.796875 55.203125 24.40625 55.203125 25.796875 55.203125 
-L 33.5 55.203125 
-L 33.5 14.234375 
-C 33.5 5.515625 25.40625 4.90625 23.703125 4.90625 
-C 22.5 4.90625 17.5 4.90625 14.90625 7.984375 
-C 15.40625 8.59375 15.703125 9.46875 15.703125 10.375 
-C 15.703125 12.453125 14.09375 14.34375 11.703125 14.34375 
-C 9.40625 14.34375 7.59375 12.84375 7.59375 10.0625 
-C 7.59375 3.6875 14.40625 -1 23.59375 -1 
-C 32 -1 40 4.265625 40 13.53125 
-z
-" id="CMTT12-74"/>
-     <path d="M 41.796875 29.359375 
-C 41.796875 39.171875 37.203125 43.796875 29 43.796875 
-C 22.203125 43.796875 17.796875 40 16.09375 38.09375 
-C 16.09375 41.65625 16.09375 43 12.09375 43 
-L 5.5 43 
-C 4.09375 43 1.5 43 1.5 40.109375 
-C 1.5 37.203125 4.09375 37.203125 5.5 37.203125 
-L 9.59375 37.203125 
-L 9.59375 5.796875 
-L 5.5 5.796875 
-C 4.09375 5.796875 1.5 5.796875 1.5 2.90625 
-C 1.5 0 4.09375 0 5.5 0 
-L 20.203125 0 
-C 21.59375 0 24.203125 0 24.203125 2.90625 
-C 24.203125 5.796875 21.59375 5.796875 20.203125 5.796875 
-L 16.09375 5.796875 
-L 16.09375 23.953125 
-C 16.09375 33.671875 22.90625 38 28.296875 38 
-C 34.09375 38 35.296875 34.671875 35.296875 28.96875 
-L 35.296875 5.796875 
-L 31.203125 5.796875 
-C 29.796875 5.796875 27.203125 5.796875 27.203125 2.90625 
-C 27.203125 0 29.796875 0 31.203125 0 
-L 45.90625 0 
-C 47.296875 0 49.90625 0 49.90625 2.90625 
-C 49.90625 5.796875 47.296875 5.796875 45.90625 5.796875 
-L 41.796875 5.796875 
-z
-" id="CMTT12-110"/>
-     <path d="M 42 40.203125 
-C 42 41.796875 42 44 39.203125 44 
-C 36.796875 44 36.203125 41.703125 36.203125 41.59375 
-C 32.203125 44 27.59375 44 25.59375 44 
-C 9.296875 44 7.09375 35.71875 7.09375 32.328125 
-C 7.09375 28.234375 9.5 25.453125 12.90625 23.546875 
-C 16.09375 21.75 19 21.265625 27.203125 19.96875 
-C 31.09375 19.265625 39.09375 17.96875 39.09375 12.484375 
-C 39.09375 8.78125 35.703125 5.296875 26.40625 5.296875 
-C 20 5.296875 15.796875 7.796875 13.703125 15 
-C 13.203125 16.390625 12.90625 17.5 10.40625 17.5 
-C 7.09375 17.5 7.09375 15.59375 7.09375 13.59375 
-L 7.09375 3.296875 
-C 7.09375 1.6875 7.09375 -0.5 9.90625 -0.5 
-C 11.09375 -0.5 12 -0.5 13.5 3.59375 
-C 18.09375 -0.5 23.296875 -0.5 26.40625 -0.5 
-C 44.90625 -0.5 44.90625 11.46875 44.90625 12.46875 
-C 44.90625 22.828125 32.5 24.9375 27.703125 25.625 
-C 18.90625 27.125 12.90625 28.125 12.90625 32.3125 
-C 12.90625 35.015625 16 38.203125 25.40625 38.203125 
-C 34.90625 38.203125 35.296875 33.703125 35.5 31.09375 
-C 35.703125 29.09375 37.5 28.796875 38.703125 28.796875 
-C 42 28.796875 42 30.59375 42 32.59375 
-z
-" id="CMTT12-115"/>
+     <path d="M 5.328125 2.984375 
+L 5.328125 14.5 
+Q 9.765625 10.546875 14.5 8.5625 
+Q 19.234375 6.59375 24.3125 6.59375 
+Q 31.296875 6.59375 34.046875 10.234375 
+Q 36.8125 13.875 36.8125 23.78125 
+L 36.8125 64.59375 
+L 18.21875 64.59375 
+L 18.21875 72.90625 
+L 46.6875 72.90625 
+L 46.6875 23.78125 
+Q 46.6875 10.015625 41.53125 4.296875 
+Q 36.375 -1.421875 24.3125 -1.421875 
+Q 19.625 -1.421875 14.984375 -0.34375 
+Q 10.359375 0.734375 5.328125 2.984375 
+z
+" id="DejaVuSansMono-74"/>
+     <path d="M 51.3125 33.890625 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 33.890625 
+Q 42.28125 41.265625 39.6875 44.71875 
+Q 37.109375 48.1875 31.59375 48.1875 
+Q 25.296875 48.1875 21.890625 43.71875 
+Q 18.5 39.265625 18.5 30.90625 
+L 18.5 0 
+L 9.515625 0 
+L 9.515625 54.6875 
+L 18.5 54.6875 
+L 18.5 46.484375 
+Q 20.90625 51.171875 25 53.578125 
+Q 29.109375 56 34.71875 56 
+Q 43.0625 56 47.1875 50.5 
+Q 51.3125 45.015625 51.3125 33.890625 
+z
+" id="DejaVuSansMono-110"/>
+     <path d="M 47.515625 52.78125 
+L 47.515625 44 
+Q 43.65625 46.234375 39.75 47.359375 
+Q 35.84375 48.484375 31.78125 48.484375 
+Q 25.6875 48.484375 22.671875 46.5 
+Q 19.671875 44.53125 19.671875 40.484375 
+Q 19.671875 36.8125 21.921875 35 
+Q 24.171875 33.203125 33.109375 31.5 
+L 36.71875 30.8125 
+Q 43.40625 29.546875 46.84375 25.734375 
+Q 50.296875 21.921875 50.296875 15.828125 
+Q 50.296875 7.71875 44.53125 3.140625 
+Q 38.765625 -1.421875 28.515625 -1.421875 
+Q 24.46875 -1.421875 20.015625 -0.5625 
+Q 15.578125 0.296875 10.40625 2 
+L 10.40625 11.28125 
+Q 15.4375 8.6875 20.015625 7.390625 
+Q 24.609375 6.109375 28.71875 6.109375 
+Q 34.671875 6.109375 37.9375 8.515625 
+Q 41.21875 10.9375 41.21875 15.28125 
+Q 41.21875 21.53125 29.25 23.921875 
+L 28.859375 24.03125 
+L 25.484375 24.703125 
+Q 17.71875 26.21875 14.15625 29.8125 
+Q 10.59375 33.40625 10.59375 39.59375 
+Q 10.59375 47.46875 15.90625 51.734375 
+Q 21.234375 56 31.109375 56 
+Q 35.5 56 39.546875 55.1875 
+Q 43.609375 54.390625 47.515625 52.78125 
+z
+" id="DejaVuSansMono-115"/>
     </defs>
-    <g transform="translate(158.822024 66.279355)rotate(-43)scale(0.07 -0.07)">
-     <use transform="translate(0 15.050129)scale(0.996264)" xlink:href="#Nimbus_Roman_No9_L_Regular_Italic-110"/>
-     <use transform="translate(49.8132 0)scale(0.737241)" xlink:href="#Nimbus_Roman_No9_L_Regular-72"/>
-     <use transform="translate(107.123069 15.050129)scale(0.996264)" xlink:href="#CMEX10-98"/>
-     <use transform="translate(165.998143 15.050129)scale(0.996264)" xlink:href="#CMTT12-74"/>
-     <use transform="translate(217.264254 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(268.530365 15.050129)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(319.796475 15.050129)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(371.062586 15.050129)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(456.056192 15.050129)scale(0.996264)" xlink:href="#CMTT12-103"/>
-     <use transform="translate(507.322303 15.050129)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(558.588414 15.050129)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(609.854525 15.050129)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(661.120636 15.050129)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(746.114242 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(797.380353 15.050129)scale(0.996264)" xlink:href="#CMTT12-102"/>
-     <use transform="translate(848.646464 15.050129)scale(0.996264)" xlink:href="#CMTT12-102"/>
-     <use transform="translate(899.912575 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(951.178685 15.050129)scale(0.996264)" xlink:href="#CMTT12-99"/>
-     <use transform="translate(1002.444796 15.050129)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(1053.710907 15.050129)scale(0.996264)" xlink:href="#CMTT12-105"/>
-     <use transform="translate(1104.977018 15.050129)scale(0.996264)" xlink:href="#CMTT12-118"/>
-     <use transform="translate(1156.243129 15.050129)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <path d="M 427.949708 15.050129 
-L 456.056192 15.050129 
-L 456.056192 15.448629 
-L 427.949708 15.448629 
-L 427.949708 15.050129 
-z
-"/>
-     <path d="M 718.007758 15.050129 
-L 746.114242 15.050129 
-L 746.114242 15.448629 
-L 718.007758 15.448629 
-L 718.007758 15.050129 
-z
-"/>
+    <g transform="translate(158.364822 64.691311)rotate(-43)scale(0.06 -0.06)">
+     <use transform="translate(0 0.015625)" xlink:href="#Cmmi10-110"/>
+     <use transform="translate(60.009766 -16.990625)scale(0.7)" xlink:href="#Cmr10-72"/>
+     <use transform="translate(118.887109 0.015625)" xlink:href="#DejaVuSansMono-94"/>
+     <use transform="translate(179.092187 0.015625)" xlink:href="#DejaVuSansMono-74"/>
+     <use transform="translate(239.297266 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(299.502344 0.015625)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(359.707422 0.015625)" xlink:href="#DejaVuSansMono-110"/>
+     <use transform="translate(419.9125 0.015625)" xlink:href="#DejaVuSansMono-115"/>
+     <use transform="translate(480.117578 0.015625)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(540.322656 0.015625)" xlink:href="#DejaVuSansMono-103"/>
+     <use transform="translate(600.527734 0.015625)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(660.732813 0.015625)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(720.937891 0.015625)" xlink:href="#DejaVuSansMono-109"/>
+     <use transform="translate(781.142969 0.015625)" xlink:href="#DejaVuSansMono-97"/>
+     <use transform="translate(841.348047 0.015625)" xlink:href="#DejaVuSansMono-95"/>
+     <use transform="translate(901.553125 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(961.758203 0.015625)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(1021.963281 0.015625)" xlink:href="#DejaVuSansMono-102"/>
+     <use transform="translate(1082.168359 0.015625)" xlink:href="#DejaVuSansMono-101"/>
+     <use transform="translate(1142.373437 0.015625)" xlink:href="#DejaVuSansMono-99"/>
+     <use transform="translate(1202.578516 0.015625)" xlink:href="#DejaVuSansMono-116"/>
+     <use transform="translate(1262.783594 0.015625)" xlink:href="#DejaVuSansMono-105"/>
+     <use transform="translate(1322.988672 0.015625)" xlink:href="#DejaVuSansMono-118"/>
+     <use transform="translate(1383.19375 0.015625)" xlink:href="#DejaVuSansMono-101"/>
     </g>
    </g>
    <g id="text_14">
-    <!-- ${\tt Cool\_density\_threshold\_H\_p\_cm3}$ -->
+    <!-- Cool_density_threshold_H_p_cm3 -->
     <defs>
-     <path d="M 41.796875 56.90625 
-C 41.796875 60 41.203125 61 37.796875 61 
-L 31.203125 61 
-C 29.796875 61 27.203125 61 27.203125 58.109375 
-C 27.203125 55.203125 29.796875 55.203125 31.203125 55.203125 
-L 35.296875 55.203125 
-L 35.296875 38.796875 
-C 33.703125 40.390625 29.59375 43.796875 23.5 43.796875 
-C 12.90625 43.796875 3.703125 34.1875 3.703125 21.59375 
-C 3.703125 9.296875 12.296875 -0.5 22.59375 -0.5 
-C 29.09375 -0.5 33.40625 3.359375 35.296875 5.546875 
-C 35.296875 1.3125 35.296875 0 39.296875 0 
-L 45.90625 0 
-C 47.296875 0 49.90625 0 49.90625 2.90625 
-C 49.90625 5.796875 47.296875 5.796875 45.90625 5.796875 
-L 41.796875 5.796875 
-z
-M 35.296875 19.09375 
-C 35.296875 13.5 30.703125 5.296875 23.203125 5.296875 
-C 16 5.296875 10.203125 12.59375 10.203125 21.59375 
-C 10.203125 31.1875 17 38 24.09375 38 
-C 30.59375 38 35.296875 32.09375 35.296875 26.890625 
-z
-" id="CMTT12-100"/>
-     <path d="M 42.40625 37.203125 
-L 45 37.203125 
-C 46.40625 37.203125 49.09375 37.203125 49.09375 40.109375 
-C 49.09375 43 46.40625 43 45 43 
-L 34 43 
-C 32.59375 43 29.90625 43 29.90625 40.109375 
-C 29.90625 37.203125 32.59375 37.203125 34 37.203125 
-L 36.5 37.203125 
-C 33.703125 29.0625 28 12.515625 26.59375 6.859375 
-L 26.5 6.859375 
-C 26 9.046875 25.59375 10.125 24.59375 12.8125 
-L 15.296875 37.203125 
-L 17.59375 37.203125 
-C 19 37.203125 21.703125 37.203125 21.703125 40.109375 
-C 21.703125 43 19 43 17.59375 43 
-L 6.59375 43 
-C 5.203125 43 2.5 43 2.5 40.109375 
-C 2.5 37.203125 5.203125 37.203125 6.59375 37.203125 
-L 9.296875 37.203125 
-L 23.296875 1.46875 
-C 23.703125 0.46875 23.703125 0.265625 23.703125 0.171875 
-C 23.703125 -0.03125 21.09375 -8.671875 19.59375 -11.4375 
-C 19 -12.4375 16.5 -17.109375 11.703125 -16.609375 
-C 11.796875 -16.296875 12.09375 -15.703125 12.09375 -14.609375 
-C 12.09375 -12.296875 10.5 -10.703125 8.203125 -10.703125 
-C 5.703125 -10.703125 4.203125 -12.40625 4.203125 -14.703125 
-C 4.203125 -18.5 7.40625 -22.5 12.40625 -22.5 
-C 22.09375 -22.5 26.40625 -9.6875 26.703125 -8.890625 
-z
-" id="CMTT12-121"/>
-     <path d="M 41.796875 29.359375 
-C 41.796875 39.171875 37.203125 43.796875 29 43.796875 
-C 22.203125 43.796875 17.796875 40 16.09375 38.09375 
-L 16.09375 56.9375 
-C 16.09375 60.015625 15.5 61 12.09375 61 
-L 5.5 61 
-C 4.09375 61 1.5 61 1.5 58.109375 
-C 1.5 55.203125 4.09375 55.203125 5.5 55.203125 
-L 9.59375 55.203125 
-L 9.59375 5.796875 
-L 5.5 5.796875 
-C 4.09375 5.796875 1.5 5.796875 1.5 2.90625 
-C 1.5 0 4.09375 0 5.5 0 
-L 20.203125 0 
-C 21.59375 0 24.203125 0 24.203125 2.90625 
-C 24.203125 5.796875 21.59375 5.796875 20.203125 5.796875 
-L 16.09375 5.796875 
-L 16.09375 23.953125 
-C 16.09375 33.671875 22.90625 38 28.296875 38 
-C 34.09375 38 35.296875 34.671875 35.296875 28.96875 
-L 35.296875 5.796875 
-L 31.203125 5.796875 
-C 29.796875 5.796875 27.203125 5.796875 27.203125 2.90625 
-C 27.203125 0 29.796875 0 31.203125 0 
-L 45.90625 0 
-C 47.296875 0 49.90625 0 49.90625 2.90625 
-C 49.90625 5.796875 47.296875 5.796875 45.90625 5.796875 
-L 41.796875 5.796875 
-z
-" id="CMTT12-104"/>
-     <path d="M 21.59375 18.9375 
-C 21.59375 30.875 30 38 38.5 38 
-C 39 38 39.59375 38 40.09375 37.890625 
-C 40.40625 34.140625 43.203125 33.828125 43.90625 33.828125 
-C 46.203125 33.828125 47.796875 35.546875 47.796875 37.78125 
-C 47.796875 42.15625 43.59375 43.796875 38.59375 43.796875 
-C 31.90625 43.796875 26.203125 40.734375 21.59375 35.015625 
-L 21.59375 38.921875 
-C 21.59375 42 21 43 17.59375 43 
-L 7.5 43 
-C 6.09375 43 3.5 43 3.5 40.109375 
-C 3.5 37.203125 6.09375 37.203125 7.5 37.203125 
-L 15.09375 37.203125 
-L 15.09375 5.796875 
-L 7.5 5.796875 
-C 6.09375 5.796875 3.5 5.796875 3.5 2.90625 
-C 3.5 0 6.09375 0 7.5 0 
-L 32.09375 0 
-C 33.5 0 36.09375 0 36.09375 2.90625 
-C 36.09375 5.796875 33.5 5.796875 32.09375 5.796875 
-L 21.59375 5.796875 
-z
-" id="CMTT12-114"/>
-     <path d="M 42.796875 55.203125 
-L 45 55.203125 
-C 46.40625 55.203125 49 55.203125 49 58.109375 
-C 49 61 46.5 61 45 61 
-L 34.09375 61 
-C 32.703125 61 30 61 30 58.109375 
-C 30 55.203125 32.703125 55.203125 34.09375 55.203125 
-L 36.296875 55.203125 
-L 36.296875 34.796875 
-L 15.09375 34.796875 
-L 15.09375 55.203125 
-L 17.296875 55.203125 
-C 18.703125 55.203125 21.40625 55.203125 21.40625 58.109375 
-C 21.40625 61 18.703125 61 17.296875 61 
-L 6.40625 61 
-C 4.90625 61 2.40625 61 2.40625 58.109375 
-C 2.40625 55.203125 5 55.203125 6.40625 55.203125 
-L 8.59375 55.203125 
-L 8.59375 5.796875 
-L 6.40625 5.796875 
-C 5 5.796875 2.40625 5.796875 2.40625 2.90625 
-C 2.40625 0 4.90625 0 6.40625 0 
-L 17.296875 0 
-C 18.703125 0 21.40625 0 21.40625 2.90625 
-C 21.40625 5.796875 18.703125 5.796875 17.296875 5.796875 
-L 15.09375 5.796875 
-L 15.09375 29 
-L 36.296875 29 
-L 36.296875 5.796875 
-L 34.09375 5.796875 
-C 32.703125 5.796875 30 5.796875 30 2.90625 
-C 30 0 32.703125 0 34.09375 0 
-L 45 0 
-C 46.5 0 49 0 49 2.90625 
-C 49 5.796875 46.40625 5.796875 45 5.796875 
-L 42.796875 5.796875 
-z
-" id="CMTT12-72"/>
-     <path d="M 20.203125 -22 
-C 21.59375 -22 24.203125 -22 24.203125 -19.09375 
-C 24.203125 -16.203125 21.59375 -16.203125 20.203125 -16.203125 
-L 16.09375 -16.203125 
-L 16.09375 5.09375 
-C 18.5 2.390625 22.203125 -0.5 27.796875 -0.5 
-C 38.40625 -0.5 47.703125 9.046875 47.703125 21.796875 
-C 47.703125 34.15625 39.296875 44 28.90625 44 
-C 21.59375 44 17 39.578125 16.09375 38.578125 
-C 16.09375 41.625 16.09375 43 12.09375 43 
-L 5.5 43 
-C 4.09375 43 1.5 43 1.5 40.109375 
-C 1.5 37.203125 4.09375 37.203125 5.5 37.203125 
-L 9.59375 37.203125 
-L 9.59375 -16.203125 
-L 5.5 -16.203125 
-C 4.09375 -16.203125 1.5 -16.203125 1.5 -19.09375 
-C 1.5 -22 4.09375 -22 5.5 -22 
-z
-M 16.09375 26.828125 
-C 16.09375 32.5625 21.703125 38.203125 28.203125 38.203125 
-C 35.40625 38.203125 41.203125 30.84375 41.203125 21.796875 
-C 41.203125 12.140625 34.40625 5.296875 27.296875 5.296875 
-C 19.796875 5.296875 16.09375 13.84375 16.09375 18.875 
-z
-" id="CMTT12-112"/>
-     <path d="M 25.59375 30.59375 
-C 36 30.59375 40.59375 23.21875 40.59375 17.765625 
-C 40.59375 11.078125 34.796875 4.796875 26 4.796875 
-C 16 4.796875 11.5 10.25 11.5 11.671875 
-C 11.5 11.859375 11.59375 12.0625 11.703125 12.171875 
-C 12.09375 12.875 12.40625 13.703125 12.40625 14.609375 
-C 12.40625 16.734375 10.796875 18.65625 8.40625 18.65625 
-C 6.296875 18.65625 4.296875 17.34375 4.296875 14.234375 
-C 4.296875 5.453125 13.796875 -1 26 -1 
-C 38.59375 -1 47.09375 8.078125 47.09375 17.65625 
-C 47.09375 22.8125 44.296875 29.96875 35.5 33.796875 
-C 41.59375 37.609375 44.296875 43.625 44.296875 48.84375 
-C 44.296875 56.375 36.796875 62.890625 26 62.890625 
-C 14.90625 62.890625 7.09375 58.078125 7.09375 50.65625 
-C 7.09375 47.34375 9.59375 46.34375 11.203125 46.34375 
-C 13 46.34375 15.203125 47.765625 15.203125 50.515625 
-C 15.203125 52.125 14.40625 53.046875 14.40625 53.140625 
-C 17.40625 57 24.296875 57 26 57 
-C 32.796875 57 37.796875 53.3125 37.796875 48.484375 
-C 37.796875 45.515625 35.90625 37 25.40625 37 
-C 21.703125 37 20.09375 36.796875 19.703125 36.796875 
-C 17.703125 36.578125 17.203125 35.203125 17.203125 33.703125 
-C 17.203125 30.59375 19.296875 30.59375 21 30.59375 
-z
-" id="CMTT12-51"/>
+     <path d="M 41.890625 47.703125 
+L 41.890625 75.984375 
+L 50.875 75.984375 
+L 50.875 0 
+L 41.890625 0 
+L 41.890625 6.890625 
+Q 39.65625 2.828125 35.90625 0.703125 
+Q 32.171875 -1.421875 27.296875 -1.421875 
+Q 17.390625 -1.421875 11.6875 6.265625 
+Q 6 13.96875 6 27.484375 
+Q 6 40.828125 11.71875 48.40625 
+Q 17.4375 56 27.296875 56 
+Q 32.234375 56 35.984375 53.875 
+Q 39.75 51.765625 41.890625 47.703125 
+z
+M 15.484375 27.296875 
+Q 15.484375 16.84375 18.796875 11.515625 
+Q 22.125 6.203125 28.609375 6.203125 
+Q 35.109375 6.203125 38.5 11.5625 
+Q 41.890625 16.9375 41.890625 27.296875 
+Q 41.890625 37.703125 38.5 43.046875 
+Q 35.109375 48.390625 28.609375 48.390625 
+Q 22.125 48.390625 18.796875 43.0625 
+Q 15.484375 37.75 15.484375 27.296875 
+z
+" id="DejaVuSansMono-100"/>
+     <path d="M 41.890625 17.578125 
+Q 39.65625 11.859375 36.1875 2.546875 
+Q 31.34375 -10.359375 29.6875 -13.1875 
+Q 27.4375 -17 24.0625 -18.890625 
+Q 20.703125 -20.796875 16.21875 -20.796875 
+L 8.984375 -20.796875 
+L 8.984375 -13.28125 
+L 14.3125 -13.28125 
+Q 18.265625 -13.28125 20.5 -10.984375 
+Q 22.75 -8.6875 26.21875 0.875 
+L 5.078125 54.6875 
+L 14.59375 54.6875 
+L 30.8125 11.921875 
+L 46.78125 54.6875 
+L 56.296875 54.6875 
+z
+" id="DejaVuSansMono-121"/>
+     <path d="M 51.3125 33.890625 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 33.890625 
+Q 42.28125 41.265625 39.6875 44.71875 
+Q 37.109375 48.1875 31.59375 48.1875 
+Q 25.296875 48.1875 21.890625 43.71875 
+Q 18.5 39.265625 18.5 30.90625 
+L 18.5 0 
+L 9.515625 0 
+L 9.515625 75.984375 
+L 18.5 75.984375 
+L 18.5 46.484375 
+Q 20.90625 51.171875 25 53.578125 
+Q 29.109375 56 34.71875 56 
+Q 43.0625 56 47.1875 50.5 
+Q 51.3125 45.015625 51.3125 33.890625 
+z
+" id="DejaVuSansMono-104"/>
+     <path d="M 56.390625 43.40625 
+Q 53.515625 45.65625 50.53125 46.671875 
+Q 47.5625 47.703125 44 47.703125 
+Q 35.59375 47.703125 31.140625 42.421875 
+Q 26.703125 37.15625 26.703125 27.203125 
+L 26.703125 0 
+L 17.671875 0 
+L 17.671875 54.6875 
+L 26.703125 54.6875 
+L 26.703125 44 
+Q 28.953125 49.8125 33.609375 52.90625 
+Q 38.28125 56 44.671875 56 
+Q 48 56 50.875 55.171875 
+Q 53.765625 54.34375 56.390625 52.59375 
+z
+" id="DejaVuSansMono-114"/>
+     <path d="M 6.6875 72.90625 
+L 16.609375 72.90625 
+L 16.609375 43.015625 
+L 43.609375 43.015625 
+L 43.609375 72.90625 
+L 53.515625 72.90625 
+L 53.515625 0 
+L 43.609375 0 
+L 43.609375 34.71875 
+L 16.609375 34.71875 
+L 16.609375 0 
+L 6.6875 0 
+z
+" id="DejaVuSansMono-72"/>
+     <path d="M 18.3125 6.890625 
+L 18.3125 -20.796875 
+L 9.28125 -20.796875 
+L 9.28125 54.6875 
+L 18.3125 54.6875 
+L 18.3125 47.703125 
+Q 20.5625 51.765625 24.296875 53.875 
+Q 28.03125 56 32.90625 56 
+Q 42.828125 56 48.46875 48.328125 
+Q 54.109375 40.671875 54.109375 27.09375 
+Q 54.109375 13.765625 48.4375 6.171875 
+Q 42.78125 -1.421875 32.90625 -1.421875 
+Q 27.9375 -1.421875 24.1875 0.703125 
+Q 20.453125 2.828125 18.3125 6.890625 
+z
+M 44.671875 27.296875 
+Q 44.671875 37.75 41.375 43.0625 
+Q 38.09375 48.390625 31.59375 48.390625 
+Q 25.046875 48.390625 21.671875 43.046875 
+Q 18.3125 37.703125 18.3125 27.296875 
+Q 18.3125 16.9375 21.671875 11.5625 
+Q 25.046875 6.203125 31.59375 6.203125 
+Q 38.09375 6.203125 41.375 11.515625 
+Q 44.671875 16.84375 44.671875 27.296875 
+z
+" id="DejaVuSansMono-112"/>
+     <path d="M 37.890625 39.015625 
+Q 45.0625 37.109375 48.875 32.25 
+Q 52.6875 27.390625 52.6875 20.125 
+Q 52.6875 10.0625 45.921875 4.3125 
+Q 39.15625 -1.421875 27.203125 -1.421875 
+Q 22.171875 -1.421875 16.9375 -0.484375 
+Q 11.71875 0.4375 6.6875 2.203125 
+L 6.6875 12.015625 
+Q 11.671875 9.421875 16.5 8.15625 
+Q 21.34375 6.890625 26.125 6.890625 
+Q 34.234375 6.890625 38.578125 10.546875 
+Q 42.921875 14.203125 42.921875 21.09375 
+Q 42.921875 27.4375 38.578125 31.171875 
+Q 34.234375 34.90625 26.8125 34.90625 
+L 19.28125 34.90625 
+L 19.28125 43.015625 
+L 26.8125 43.015625 
+Q 33.59375 43.015625 37.40625 45.984375 
+Q 41.21875 48.96875 41.21875 54.296875 
+Q 41.21875 59.90625 37.671875 62.90625 
+Q 34.125 65.921875 27.59375 65.921875 
+Q 23.25 65.921875 18.609375 64.9375 
+Q 13.96875 63.96875 8.890625 62.015625 
+L 8.890625 71.09375 
+Q 14.796875 72.65625 19.40625 73.4375 
+Q 24.03125 74.21875 27.59375 74.21875 
+Q 38.234375 74.21875 44.609375 68.875 
+Q 50.984375 63.53125 50.984375 54.6875 
+Q 50.984375 48.6875 47.625 44.671875 
+Q 44.28125 40.671875 37.890625 39.015625 
+z
+" id="DejaVuSansMono-51"/>
     </defs>
-    <g transform="translate(75.778884 192.590474)rotate(-90)scale(0.07 -0.07)">
-     <use transform="scale(0.996264)" xlink:href="#CMTT12-67"/>
-     <use transform="translate(51.266111 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(102.532222 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(153.798333 0)scale(0.996264)" xlink:href="#CMTT12-108"/>
-     <use transform="translate(238.791939 0)scale(0.996264)" xlink:href="#CMTT12-100"/>
-     <use transform="translate(290.05805 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(341.32416 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(392.590271 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(443.856382 0)scale(0.996264)" xlink:href="#CMTT12-105"/>
-     <use transform="translate(495.122493 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(546.388604 0)scale(0.996264)" xlink:href="#CMTT12-121"/>
-     <use transform="translate(631.38221 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(682.648321 0)scale(0.996264)" xlink:href="#CMTT12-104"/>
-     <use transform="translate(733.914432 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(785.180542 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(836.446653 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(887.712764 0)scale(0.996264)" xlink:href="#CMTT12-104"/>
-     <use transform="translate(938.978875 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(990.244986 0)scale(0.996264)" xlink:href="#CMTT12-108"/>
-     <use transform="translate(1041.511097 0)scale(0.996264)" xlink:href="#CMTT12-100"/>
-     <use transform="translate(1126.504703 0)scale(0.996264)" xlink:href="#CMTT12-72"/>
-     <use transform="translate(1211.498309 0)scale(0.996264)" xlink:href="#CMTT12-112"/>
-     <use transform="translate(1296.491915 0)scale(0.996264)" xlink:href="#CMTT12-99"/>
-     <use transform="translate(1347.758026 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(1399.024137 0)scale(0.996264)" xlink:href="#CMTT12-51"/>
-     <path d="M 210.685454 0 
-L 238.791939 0 
-L 238.791939 0.3985 
-L 210.685454 0.3985 
-L 210.685454 0 
-z
-"/>
-     <path d="M 603.275726 0 
-L 631.38221 0 
-L 631.38221 0.3985 
-L 603.275726 0.3985 
-L 603.275726 0 
-z
-"/>
-     <path d="M 1098.398219 0 
-L 1126.504703 0 
-L 1126.504703 0.3985 
-L 1098.398219 0.3985 
-L 1098.398219 0 
-z
-"/>
-     <path d="M 1183.391825 0 
-L 1211.498309 0 
-L 1211.498309 0.3985 
-L 1183.391825 0.3985 
-L 1183.391825 0 
-z
-"/>
-     <path d="M 1268.385431 0 
-L 1296.491915 0 
-L 1296.491915 0.3985 
-L 1268.385431 0.3985 
-L 1268.385431 0 
-z
-"/>
+    <g transform="translate(75.913927 194.356252)rotate(-90)scale(0.06 -0.06)">
+     <use xlink:href="#DejaVuSansMono-67"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-111"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-111"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-108"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-95"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-100"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-101"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-110"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-115"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-105"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-116"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-121"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-95"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-116"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-104"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-114"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-101"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-115"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-104"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-111"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-108"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-100"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1384.716797" xlink:href="#DejaVuSansMono-72"/>
+     <use x="1444.921875" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1505.126953" xlink:href="#DejaVuSansMono-112"/>
+     <use x="1565.332031" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1625.537109" xlink:href="#DejaVuSansMono-99"/>
+     <use x="1685.742188" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1745.947266" xlink:href="#DejaVuSansMono-51"/>
     </g>
    </g>
    <g id="text_15">
-    <!-- ${\tt Jeans\_density\_threshold\_H\_p\_cm3}$ -->
-    <g transform="translate(145.055974 192.590474)rotate(-90)scale(0.07 -0.07)">
-     <use transform="scale(0.996264)" xlink:href="#CMTT12-74"/>
-     <use transform="translate(51.266111 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(102.532222 0)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(153.798333 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(205.064443 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(290.05805 0)scale(0.996264)" xlink:href="#CMTT12-100"/>
-     <use transform="translate(341.32416 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(392.590271 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(443.856382 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(495.122493 0)scale(0.996264)" xlink:href="#CMTT12-105"/>
-     <use transform="translate(546.388604 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(597.654715 0)scale(0.996264)" xlink:href="#CMTT12-121"/>
-     <use transform="translate(682.648321 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(733.914432 0)scale(0.996264)" xlink:href="#CMTT12-104"/>
-     <use transform="translate(785.180542 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(836.446653 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(887.712764 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(938.978875 0)scale(0.996264)" xlink:href="#CMTT12-104"/>
-     <use transform="translate(990.244986 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(1041.511097 0)scale(0.996264)" xlink:href="#CMTT12-108"/>
-     <use transform="translate(1092.777208 0)scale(0.996264)" xlink:href="#CMTT12-100"/>
-     <use transform="translate(1177.770814 0)scale(0.996264)" xlink:href="#CMTT12-72"/>
-     <use transform="translate(1262.76442 0)scale(0.996264)" xlink:href="#CMTT12-112"/>
-     <use transform="translate(1347.758026 0)scale(0.996264)" xlink:href="#CMTT12-99"/>
-     <use transform="translate(1399.024137 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(1450.290248 0)scale(0.996264)" xlink:href="#CMTT12-51"/>
-     <path d="M 261.951565 0 
-L 290.05805 0 
-L 290.05805 0.3985 
-L 261.951565 0.3985 
-L 261.951565 0 
-z
-"/>
-     <path d="M 654.541837 0 
-L 682.648321 0 
-L 682.648321 0.3985 
-L 654.541837 0.3985 
-L 654.541837 0 
-z
-"/>
-     <path d="M 1149.664329 0 
-L 1177.770814 0 
-L 1177.770814 0.3985 
-L 1149.664329 0.3985 
-L 1149.664329 0 
-z
-"/>
-     <path d="M 1234.657936 0 
-L 1262.76442 0 
-L 1262.76442 0.3985 
-L 1234.657936 0.3985 
-L 1234.657936 0 
-z
-"/>
-     <path d="M 1319.651542 0 
-L 1347.758026 0 
-L 1347.758026 0.3985 
-L 1319.651542 0.3985 
-L 1319.651542 0 
-z
-"/>
+    <!-- Jeans_density_threshold_H_p_cm3 -->
+    <g transform="translate(145.308908 194.356252)rotate(-90)scale(0.055 -0.055)">
+     <use xlink:href="#DejaVuSansMono-74"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-101"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-97"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-110"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-115"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-95"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-100"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-101"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-110"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-115"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-105"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-116"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-121"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-95"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-116"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-104"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-114"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-101"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-115"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-104"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-111"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-108"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-100"/>
+     <use x="1384.716797" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1444.921875" xlink:href="#DejaVuSansMono-72"/>
+     <use x="1505.126953" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1565.332031" xlink:href="#DejaVuSansMono-112"/>
+     <use x="1625.537109" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1685.742188" xlink:href="#DejaVuSansMono-99"/>
+     <use x="1745.947266" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1806.152344" xlink:href="#DejaVuSansMono-51"/>
     </g>
    </g>
    <g id="text_16">
-    <!-- ${\tt Cool\_temperature\_norm\_K}$ -->
+    <!-- Cool_temperature_norm_K -->
     <defs>
-     <path d="M 41.796875 38.921875 
-C 41.796875 42 41.203125 43 37.796875 43 
-L 31.203125 43 
-C 29.796875 43 27.203125 43 27.203125 40.109375 
-C 27.203125 37.203125 29.796875 37.203125 31.203125 37.203125 
-L 35.296875 37.203125 
-L 35.296875 15.625 
-C 35.296875 7.484375 28.5 5.296875 24 5.296875 
-C 16.09375 5.296875 16.09375 8.875 16.09375 11.96875 
-L 16.09375 38.921875 
-C 16.09375 42 15.5 43 12.09375 43 
-L 5.5 43 
-C 4.09375 43 1.5 43 1.5 40.109375 
-C 1.5 37.203125 4.09375 37.203125 5.5 37.203125 
-L 9.59375 37.203125 
-L 9.59375 11.4375 
-C 9.59375 2.28125 15.59375 -0.5 23.296875 -0.5 
-C 29.40625 -0.5 33.203125 1.984375 35.203125 3.671875 
-C 35.203125 0 37.59375 0 39.296875 0 
-L 45.90625 0 
-C 47.296875 0 49.90625 0 49.90625 2.90625 
-C 49.90625 5.796875 47.296875 5.796875 45.90625 5.796875 
-L 41.796875 5.796875 
-z
-" id="CMTT12-117"/>
-     <path d="M 27.09375 35.734375 
-L 42.40625 55.203125 
-C 45.296875 55.203125 47.59375 55.203125 47.59375 58.109375 
-C 47.59375 61 45 61 43.59375 61 
-L 35.203125 61 
-C 33.796875 61 31.203125 61 31.203125 58.109375 
-C 31.203125 55.203125 33.796875 55.203125 35.203125 55.203125 
-L 14.203125 28.453125 
-L 14.203125 55.203125 
-L 16.203125 55.203125 
-C 17.59375 55.203125 20.203125 55.203125 20.203125 58.109375 
-C 20.203125 61 17.59375 61 16.203125 61 
-L 6.59375 61 
-C 5.203125 61 2.59375 61 2.59375 58.109375 
-C 2.59375 55.203125 5.203125 55.203125 6.59375 55.203125 
-L 8.59375 55.203125 
-L 8.59375 5.796875 
-L 6.59375 5.796875 
-C 5.203125 5.796875 2.59375 5.796875 2.59375 2.90625 
-C 2.59375 0 5.203125 0 6.59375 0 
-L 16.203125 0 
-C 17.59375 0 20.203125 0 20.203125 2.90625 
-C 20.203125 5.796875 17.59375 5.796875 16.203125 5.796875 
-L 14.203125 5.796875 
-L 14.203125 19.375 
-L 23.296875 30.953125 
-L 37.203125 5.796875 
-C 35.90625 5.796875 33.296875 5.796875 33.296875 2.90625 
-C 33.296875 0 35.90625 0 37.296875 0 
-L 44.5 0 
-C 45.90625 0 48.5 0 48.5 2.90625 
-C 48.5 5.796875 46.09375 5.796875 43.59375 5.796875 
-z
-" id="CMTT12-75"/>
+     <path d="M 9.515625 20.703125 
+L 9.515625 54.59375 
+L 18.5 54.59375 
+L 18.5 20.703125 
+Q 18.5 13.328125 21.109375 9.859375 
+Q 23.734375 6.390625 29.203125 6.390625 
+Q 35.546875 6.390625 38.90625 10.859375 
+Q 42.28125 15.328125 42.28125 23.6875 
+L 42.28125 54.59375 
+L 51.3125 54.59375 
+L 51.3125 0 
+L 42.28125 0 
+L 42.28125 8.203125 
+Q 39.890625 3.46875 35.765625 1.015625 
+Q 31.640625 -1.421875 26.125 -1.421875 
+Q 17.71875 -1.421875 13.609375 4.078125 
+Q 9.515625 9.578125 9.515625 20.703125 
+z
+" id="DejaVuSansMono-117"/>
+     <path d="M 6.6875 72.90625 
+L 16.609375 72.90625 
+L 16.609375 40.484375 
+L 47.40625 72.90625 
+L 58.984375 72.90625 
+L 30.609375 43.109375 
+L 59.8125 0 
+L 47.90625 0 
+L 24.125 36.53125 
+L 16.609375 28.515625 
+L 16.609375 0 
+L 6.6875 0 
+z
+" id="DejaVuSansMono-75"/>
     </defs>
-    <g transform="translate(37.862259 66.86623)scale(0.07 -0.07)">
-     <use transform="scale(0.996264)" xlink:href="#CMTT12-67"/>
-     <use transform="translate(51.266111 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(102.532222 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(153.798333 0)scale(0.996264)" xlink:href="#CMTT12-108"/>
-     <use transform="translate(238.791939 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(290.05805 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(341.32416 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(392.590271 0)scale(0.996264)" xlink:href="#CMTT12-112"/>
-     <use transform="translate(443.856382 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(495.122493 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(546.388604 0)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(597.654715 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(648.920825 0)scale(0.996264)" xlink:href="#CMTT12-117"/>
-     <use transform="translate(700.186936 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(751.453047 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(836.446653 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(887.712764 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(938.978875 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(990.244986 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(1075.238592 0)scale(0.996264)" xlink:href="#CMTT12-75"/>
-     <path d="M 210.685454 0 
-L 238.791939 0 
-L 238.791939 0.3985 
-L 210.685454 0.3985 
-L 210.685454 0 
-z
-"/>
-     <path d="M 808.340169 0 
-L 836.446653 0 
-L 836.446653 0.3985 
-L 808.340169 0.3985 
-L 808.340169 0 
-z
-"/>
-     <path d="M 1047.132108 0 
-L 1075.238592 0 
-L 1075.238592 0.3985 
-L 1047.132108 0.3985 
-L 1047.132108 0 
-z
-"/>
+    <g transform="translate(37.862259 67.001273)scale(0.06 -0.06)">
+     <use xlink:href="#DejaVuSansMono-67"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-111"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-111"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-108"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-95"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-116"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-101"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-109"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-112"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-101"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-114"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-97"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-116"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-117"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-114"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-101"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-110"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-111"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-114"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-75"/>
     </g>
    </g>
    <g id="text_17">
-    <!-- ${\tt Jeans\_temperature\_norm\_K}$ -->
-    <g transform="translate(37.862259 81.545055)scale(0.07 -0.07)">
-     <use transform="scale(0.996264)" xlink:href="#CMTT12-74"/>
-     <use transform="translate(51.266111 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(102.532222 0)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(153.798333 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(205.064443 0)scale(0.996264)" xlink:href="#CMTT12-115"/>
-     <use transform="translate(290.05805 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(341.32416 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(392.590271 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(443.856382 0)scale(0.996264)" xlink:href="#CMTT12-112"/>
-     <use transform="translate(495.122493 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(546.388604 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(597.654715 0)scale(0.996264)" xlink:href="#CMTT12-97"/>
-     <use transform="translate(648.920825 0)scale(0.996264)" xlink:href="#CMTT12-116"/>
-     <use transform="translate(700.186936 0)scale(0.996264)" xlink:href="#CMTT12-117"/>
-     <use transform="translate(751.453047 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(802.719158 0)scale(0.996264)" xlink:href="#CMTT12-101"/>
-     <use transform="translate(887.712764 0)scale(0.996264)" xlink:href="#CMTT12-110"/>
-     <use transform="translate(938.978875 0)scale(0.996264)" xlink:href="#CMTT12-111"/>
-     <use transform="translate(990.244986 0)scale(0.996264)" xlink:href="#CMTT12-114"/>
-     <use transform="translate(1041.511097 0)scale(0.996264)" xlink:href="#CMTT12-109"/>
-     <use transform="translate(1126.504703 0)scale(0.996264)" xlink:href="#CMTT12-75"/>
-     <path d="M 261.951565 0 
-L 290.05805 0 
-L 290.05805 0.3985 
-L 261.951565 0.3985 
-L 261.951565 0 
-z
-"/>
-     <path d="M 859.60628 0 
-L 887.712764 0 
-L 887.712764 0.3985 
-L 859.60628 0.3985 
-L 859.60628 0 
-z
-"/>
-     <path d="M 1098.398219 0 
-L 1126.504703 0 
-L 1126.504703 0.3985 
-L 1098.398219 0.3985 
-L 1098.398219 0 
-z
-"/>
+    <!-- Jeans_temperature_norm_K -->
+    <g transform="translate(37.862259 81.680098)scale(0.06 -0.06)">
+     <use xlink:href="#DejaVuSansMono-74"/>
+     <use x="60.205078" xlink:href="#DejaVuSansMono-101"/>
+     <use x="120.410156" xlink:href="#DejaVuSansMono-97"/>
+     <use x="180.615234" xlink:href="#DejaVuSansMono-110"/>
+     <use x="240.820312" xlink:href="#DejaVuSansMono-115"/>
+     <use x="301.025391" xlink:href="#DejaVuSansMono-95"/>
+     <use x="361.230469" xlink:href="#DejaVuSansMono-116"/>
+     <use x="421.435547" xlink:href="#DejaVuSansMono-101"/>
+     <use x="481.640625" xlink:href="#DejaVuSansMono-109"/>
+     <use x="541.845703" xlink:href="#DejaVuSansMono-112"/>
+     <use x="602.050781" xlink:href="#DejaVuSansMono-101"/>
+     <use x="662.255859" xlink:href="#DejaVuSansMono-114"/>
+     <use x="722.460938" xlink:href="#DejaVuSansMono-97"/>
+     <use x="782.666016" xlink:href="#DejaVuSansMono-116"/>
+     <use x="842.871094" xlink:href="#DejaVuSansMono-117"/>
+     <use x="903.076172" xlink:href="#DejaVuSansMono-114"/>
+     <use x="963.28125" xlink:href="#DejaVuSansMono-101"/>
+     <use x="1023.486328" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1083.691406" xlink:href="#DejaVuSansMono-110"/>
+     <use x="1143.896484" xlink:href="#DejaVuSansMono-111"/>
+     <use x="1204.101562" xlink:href="#DejaVuSansMono-114"/>
+     <use x="1264.306641" xlink:href="#DejaVuSansMono-109"/>
+     <use x="1324.511719" xlink:href="#DejaVuSansMono-95"/>
+     <use x="1384.716797" xlink:href="#DejaVuSansMono-75"/>
     </g>
    </g>
   </g>
  </g>
  <defs>
-  <clipPath id="p107a2e5a22">
+  <clipPath id="pf19aa30d2c">
    <rect height="195.048" width="190.512" x="34.02" y="2.268"/>
   </clipPath>
  </defs>
diff --git a/doc/RTD/source/SubgridModels/EAGLE/index.rst b/doc/RTD/source/SubgridModels/EAGLE/index.rst
index 5ce3a8e4123ec0e459a6d793f45b5d99fae6023d..b9942628563f5ccc56bd44ee90270dd65cff2e44 100644
--- a/doc/RTD/source/SubgridModels/EAGLE/index.rst
+++ b/doc/RTD/source/SubgridModels/EAGLE/index.rst
@@ -17,9 +17,10 @@ Entropy floors
 The gas particles in the EAGLE model are prevented from cooling below a
 certain temperature. The temperature limit depends on the density of the
 particles. Two floors are used in conjonction. Both are implemented as
-polytropic "equations of states" :math:`P = P_c
-\left(\rho/\rho_c\right)^\gamma`, with the constants derived from the user
-input given in terms of temperature and Hydrogen number density.
+polytropic "equations of states":math:`P = P_c
+\left(\rho/\rho_c\right)^\gamma` (all done in physical coordinates), with
+the constants derived from the user input given in terms of temperature and
+Hydrogen number density.
 
 The first limit, labelled as ``Cool``, is typically used to prevent
 low-density high-metallicity particles to cool below the warm phase because
@@ -27,12 +28,7 @@ of over-cooling induced by the absence of metal diffusion. This limit plays
 only a small role in practice. The second limit, labelled as ``Jeans``, is
 used to prevent the fragmentation of high-density gas into clumps that
 cannot be resolved by the coupled hydro+gravity solver. The two limits are
-sketched on the following figure. An additional over-density criterion is
-applied to prevent gas not collapsed into structures from being
-affected. This criterion demands that :math:`\rho > \Delta_{\rm floor}
-\Omega_b \rho_{\rm crit}`, with :math:`\Delta_{\rm floor}` specified by the
-user and :math:`\rho_{\rm crit}` the critical density at that redshift
-[#f1]_.
+sketched on the following figure.
 
 .. figure:: EAGLE_entropy_floor.svg
     :width: 400px
@@ -51,6 +47,15 @@ user and :math:`\rho_{\rm crit}` the critical density at that redshift
     the figure for clarity reasons, typical values for EAGLE runs place
     both anchors at the same temperature.
 
+An additional over-density criterion above the mean baryonic density is
+applied to prevent gas not collapsed into structures from being
+affected. To be precise, this criterion demands that the floor is applied
+only if :math:`\rho_{\rm com} > \Delta_{\rm floor}\bar{\rho_b} =
+\Delta_{\rm floor} \Omega_b \rho_{\rm crit,0}`, with :math:`\Delta_{\rm
+floor}` specified by the user, :math:`\rho_{\rm crit,0} = 3H_0/8\pi G` the
+critical density at redshift zero [#f1]_, and :math:`\rho_{\rm com}` the
+gas co-moving density. Typical values for :math:`\Delta_{\rm floor}` are of
+order 10.
 
 The model is governed by 4 parameters for each of the two
 limits. These are given in the ``EAGLEEntropyFloor`` section of the
@@ -389,8 +394,61 @@ the snapshots for each gas and star particle:
 
 .. _EAGLE_star_formation:
 
-Star formation: Schaye+2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Star formation: Schaye+2008 modified for EAGLE
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. figure:: EAGLE_SF_Z_dep.svg
+    :width: 400px
+    :align: center
+    :figclass: align-center
+    :alt: Metal-dependance of the threshold for star formation in the
+	  EAGLE model.
+
+    The dependency of the SF threshold density on the metallicty of the gas
+    in the EAGLE model (black line). The function is described by the four
+    parameters indicated on the figure. These are the slope of the
+    dependency, its position on the metallicity-axis and normalisation
+    (black circle) as well as the maximal threshold density allowed. For
+    reference, the black arrow indicates the value typically assumed for
+    solar metallicity :math:`Z_\odot=0.014` (note, however, that this value
+    does *not* enter the model at all). The values used to produce this
+    figure are the ones assumed in the reference EAGLE model.
+
+.. figure:: EAGLE_SF_EOS.svg
+    :width: 400px
+    :align: center
+    :figclass: align-center
+    :alt: Equation-of-state assumed for the star-forming gas
+
+    The equation-of-state assumed for the star-forming gas in the EAGLE
+    model (black line). The function is described by the three parameters
+    indicated on the figure. These are the slope of the relation, the
+    position of the normalisation point on the density axis and the
+    temperature expected at this density. Note that this is a normalisation
+    and *not* a threshold. Gas at densities lower than the normalisation
+    point will also be put on this equation of state when computing its
+    star formation rate. The values used to produce this figure are the
+    ones assumed in the reference EAGLE model.
+    
+.. code:: YAML
+
+   # EAGLE star formation parameters
+   EAGLEStarFormation:
+     EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
+     EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
+     EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
+     KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
+     KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
+     KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
+     KS_high_density_threshold_H_p_cm3: 1e3       # Hydrogen number density above which the Kennicut-Schmidt law changes slope in Hydrogen atoms per cm^3.
+     KS_high_density_exponent:          2.0       # Slope of the Kennicut-Schmidt law above the high-density threshold.
+     KS_temperature_margin_dex:         0.5       # Logarithm base 10 of the maximal temperature difference above the EOS allowed to form stars.
+     KS_max_density_threshold_H_p_cm3:  1e5       # Hydrogen number density above which a particle gets automatically turned into a star in Hydrogen atoms per cm^3.
+     threshold_norm_H_p_cm3:            0.1       # Normalisation of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+     threshold_Z0:                      0.002     # Reference metallicity (metal mass fraction) for the metal-dependant threshold for star formation.
+     threshold_slope:                   -0.64     # Slope of the metal-dependant star formation threshold
+     threshold_max_density_H_p_cm3:     10.0      # Maximal density of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+     gas_fraction:                      0.1       # The gas fraction used internally by the model.
 
 .. _EAGLE_enrichment:
 
diff --git a/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_EOS.py b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_EOS.py
new file mode 100644
index 0000000000000000000000000000000000000000..88ca56d750bf716fea8b4bf72b70c2b598953ac7
--- /dev/null
+++ b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_EOS.py
@@ -0,0 +1,78 @@
+import matplotlib
+
+matplotlib.use("Agg")
+from pylab import *
+from scipy import stats
+
+# Plot parameters
+params = {
+    "axes.labelsize": 10,
+    "axes.titlesize": 10,
+    "font.size": 9,
+    "font.sans-serif": [
+        "Computer Modern",
+        "Computer Modern Roman",
+        "CMU Serif",
+        "cmunrm",
+        "DejaVu Sans",
+    ],
+    "mathtext.fontset": "cm",
+    "legend.fontsize": 9,
+    "xtick.labelsize": 10,
+    "ytick.labelsize": 10,
+    "text.usetex": False,
+    "figure.figsize": (3.15, 3.15),
+    "lines.markersize": 6,
+    "figure.subplot.left": 0.15,
+    "figure.subplot.right": 0.99,
+    "figure.subplot.bottom": 0.13,
+    "figure.subplot.top": 0.99,
+    "figure.subplot.wspace": 0.15,
+    "figure.subplot.hspace": 0.12,
+    "lines.linewidth": 2.0,
+}
+
+rcParams.update(params)
+
+# Equations of state
+eos_SF_rho = np.logspace(-10, 5, 1000)
+eos_SF_T = (eos_SF_rho / 10 ** (-1)) ** (1.0 / 3.0) * 8000.0
+
+# Plot the phase space diagram
+figure()
+subplot(111, xscale="log", yscale="log")
+plot(eos_SF_rho, eos_SF_T, "k-", lw=1.0)
+
+plot([1e-10, 1e-1], [8000, 8000], "k:", lw=0.6)
+plot([1e-1, 1e-1], [20, 8000], "k:", lw=0.6)
+plot([1e-1, 1e1], [20000.0, 20000.0 * 10.0 ** (2.0 / 3.0)], "k--", lw=0.6)
+text(
+    0.5e-1,
+    200000,
+    "$n_{\\rm H}$^EOS_gamma_effective",
+    va="top",
+    rotation=43,
+    fontsize=6.5,
+    family="monospace",
+)
+text(
+    0.95e-1,
+    25,
+    "EOS_density_norm_H_p_cm3",
+    rotation=90,
+    va="bottom",
+    ha="right",
+    fontsize=7,
+    family="monospace",
+)
+text(5e-8, 8400, "EOS_temperature_norm_K", va="bottom", fontsize=7, family="monospace")
+
+scatter([1e-1], [8000], s=4, color="k")
+
+xlabel("Hydrogen number density $n_{\\rm H}$ [cm$^{-3}$]", labelpad=0)
+ylabel("Temperature $T$ [K]", labelpad=2)
+xlim(3e-8, 3e3)
+ylim(20.0, 2e5)
+
+
+savefig("EAGLE_SF_EOS.svg", dpi=200)
diff --git a/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_Z_dep.py b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_Z_dep.py
new file mode 100644
index 0000000000000000000000000000000000000000..26ae522947ecc9e75f6f287bafed0bb9acb9134a
--- /dev/null
+++ b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_SF_Z_dep.py
@@ -0,0 +1,99 @@
+import matplotlib
+
+matplotlib.use("Agg")
+from pylab import *
+from scipy import stats
+
+# Plot parameters
+params = {
+    "axes.labelsize": 10,
+    "axes.titlesize": 10,
+    "font.size": 9,
+    "font.sans-serif": [
+        "Computer Modern",
+        "Computer Modern Roman",
+        "CMU Serif",
+        "cmunrm",
+        "DejaVu Sans",
+    ],
+    "mathtext.fontset": "cm",
+    "legend.fontsize": 9,
+    "xtick.labelsize": 10,
+    "ytick.labelsize": 10,
+    "text.usetex": False,
+    "figure.figsize": (3.15, 3.15),
+    "lines.markersize": 6,
+    "figure.subplot.left": 0.15,
+    "figure.subplot.right": 0.99,
+    "figure.subplot.bottom": 0.13,
+    "figure.subplot.top": 0.99,
+    "figure.subplot.wspace": 0.15,
+    "figure.subplot.hspace": 0.12,
+    "lines.linewidth": 2.0,
+}
+
+rcParams.update(params)
+
+# Metal dependance parameters
+Z_0 = 0.002
+norm = 0.1
+slope = -0.64
+max_n = 10.0
+
+# Function
+Z = logspace(-8, 3, 1000)
+n = norm * (Z / Z_0) ** slope
+n = np.minimum(n, np.ones(np.size(n)) * (max_n))
+
+
+# Plot the phase space diagram
+figure()
+subplot(111, xscale="log", yscale="log")
+
+plot(Z, n, "k-", lw=1.0)
+
+plot([3e-4, 3e-2], [1.0, 1.0 * 100.0 ** (slope)], "k--", lw=0.6)
+plot([1e-10, 1e10], [max_n, max_n], "k:", lw=0.6)
+plot([Z_0, Z_0], [1e-10, norm], "k:", lw=0.6)
+plot([1e-10, Z_0], [norm, norm], "k:", lw=0.6)
+scatter([Z_0], [norm], s=4, color="k")
+
+annotate(
+    "",
+    xy=(0.014, 1e-3),
+    xytext=(0.014, 3e-4),
+    arrowprops=dict(
+        facecolor="black", shrink=0.0, width=0.1, headwidth=3.0, headlength=5.0
+    ),
+)
+text(0.016, 3.5e-4, "${Z_\\odot}$", fontsize=9)
+
+text(
+    3e-4,
+    1.45,
+    "Z^threshold_slope",
+    va="top",
+    rotation=-40,
+    fontsize=7,
+    family="monospace",
+)
+text(3e-5, 12.0, "threshold_max_density_H_p_cm3", fontsize=7, family="monospace")
+text(3e-7, 0.12, "threshold_norm_H_p_cm3", fontsize=7, family="monospace")
+text(
+    0.0018,
+    0.0004,
+    "threshold_Z0",
+    rotation=90,
+    va="bottom",
+    ha="right",
+    fontsize=7,
+    family="monospace",
+)
+
+xlabel("Metallicity (metal mass fraction) $Z$ [-]", labelpad=2)
+ylabel("SF threshold number density $n_{\\rm H, thresh}$ [cm$^{-3}$]", labelpad=-1)
+
+xlim(1e-7, 1.0)
+ylim(0.0002, 50)
+
+savefig("EAGLE_SF_Z_dep.svg", dpi=200)
diff --git a/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_entropy_floor.py b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_entropy_floor.py
index 5b02dd657fdb32e411961f04d0d758119344b809..1e7dad6c95211a8e43805a904fb8d9901305b692 100644
--- a/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_entropy_floor.py
+++ b/doc/RTD/source/SubgridModels/EAGLE/plot_EAGLE_entropy_floor.py
@@ -1,4 +1,5 @@
 import matplotlib
+
 matplotlib.use("Agg")
 from pylab import *
 from scipy import stats
@@ -8,53 +9,97 @@ params = {
     "axes.labelsize": 10,
     "axes.titlesize": 10,
     "font.size": 9,
+    "font.sans-serif": [
+        "Computer Modern",
+        "Computer Modern Roman",
+        "CMU Serif",
+        "cmunrm",
+        "DejaVu Sans",
+    ],
+    "mathtext.fontset": "cm",
     "legend.fontsize": 9,
     "xtick.labelsize": 10,
     "ytick.labelsize": 10,
-    "text.usetex": True,
+    "text.usetex": False,
     "figure.figsize": (3.15, 3.15),
+    "lines.markersize": 6,
     "figure.subplot.left": 0.15,
     "figure.subplot.right": 0.99,
     "figure.subplot.bottom": 0.13,
     "figure.subplot.top": 0.99,
     "figure.subplot.wspace": 0.15,
     "figure.subplot.hspace": 0.12,
-    "lines.markersize": 6,
     "lines.linewidth": 2.0,
-    "text.latex.unicode": True,
 }
+
 rcParams.update(params)
-rc("font", **{"family": "sans-serif", "sans-serif": ["Times"]})
 
 # Equations of state
 eos_cool_rho = np.logspace(-5, 5, 1000)
-eos_cool_T = eos_cool_rho**0. * 8000.
+eos_cool_T = eos_cool_rho ** 0.0 * 8000.0
 eos_Jeans_rho = np.logspace(-1, 5, 1000)
-eos_Jeans_T = (eos_Jeans_rho/ 10**(-1))**(1./3.) * 4000.
+eos_Jeans_T = (eos_Jeans_rho / 10 ** (-1)) ** (1.0 / 3.0) * 4000.0
 
 # Plot the phase space diagram
 figure()
 subplot(111, xscale="log", yscale="log")
-plot(eos_cool_rho, eos_cool_T, 'k-', lw=1.)
-plot(eos_Jeans_rho, eos_Jeans_T, 'k-', lw=1.)
-plot([1e-10, 1e-5], [8000, 8000], 'k:', lw=0.6)
-plot([1e-10, 1e-1], [4000, 4000], 'k:', lw=0.6)
-plot([1e-5, 1e-5], [20, 8000], 'k:', lw=0.6)
-plot([1e-1, 1e-1], [20, 4000], 'k:', lw=0.6)
-plot([3e-6, 3e-4], [28000, 28000], 'k--', lw=0.6)
-text(3e-6, 22500, "$n_{\\rm H}~\\widehat{}~{\\tt Cool\\_gamma\\_effective}$", va="top", fontsize=7)
-plot([3e-1, 3e1], [15000., 15000.*10.**(2./3.)], 'k--', lw=0.6)
-text(3e-1, 200000, "$n_{\\rm H}~\\widehat{}~{\\tt Jeans\\_gamma\\_effective}$", va="top", rotation=43, fontsize=7)
-text(0.95e-5, 25, "${\\tt Cool\\_density\\_threshold\\_H\\_p\\_cm3}$", rotation=90, va="bottom", ha="right", fontsize=7)
-text(0.95e-1, 25, "${\\tt Jeans\\_density\\_threshold\\_H\\_p\\_cm3}$", rotation=90, va="bottom", ha="right", fontsize=7)
-text(5e-8, 8800, "${\\tt Cool\\_temperature\\_norm\\_K}$", va="bottom", fontsize=7)
-text(5e-8, 4400, "${\\tt Jeans\\_temperature\\_norm\\_K}$", va="bottom", fontsize=7)
-fill_between([1e-5, 1e5], [10, 10], [8000, 8000], color='0.9')
-fill_between([1e-1, 1e5], [4000, 400000], color='0.9')
-scatter([1e-5], [8000], s=4, color='k')
-scatter([1e-1], [4000], s=4, color='k')
-xlabel("${\\rm Density}~n_{\\rm H}~[{\\rm cm^{-3}}]$", labelpad=0)
-ylabel("${\\rm Temperature}~T~[{\\rm K}]$", labelpad=2)
+plot(eos_cool_rho, eos_cool_T, "k-", lw=1.0)
+plot(eos_Jeans_rho, eos_Jeans_T, "k-", lw=1.0)
+plot([1e-10, 1e-5], [8000, 8000], "k:", lw=0.6)
+plot([1e-10, 1e-1], [4000, 4000], "k:", lw=0.6)
+plot([1e-5, 1e-5], [20, 8000], "k:", lw=0.6)
+plot([1e-1, 1e-1], [20, 4000], "k:", lw=0.6)
+plot([3e-6, 3e-4], [28000, 28000], "k--", lw=0.6)
+
+text(
+    3e-6,
+    22500,
+    "$n_{\\rm H}$^Cool_gamma_effective",
+    va="top",
+    fontsize=6,
+    family="monospace",
+)
+plot([3e-1, 3e1], [15000.0, 15000.0 * 10.0 ** (2.0 / 3.0)], "k--", lw=0.6)
+text(
+    3e-1,
+    200000,
+    "$n_{\\rm H}$^Jeans_gamma_effective",
+    va="top",
+    rotation=43,
+    fontsize=6,
+    family="monospace",
+)
+text(
+    0.95e-5,
+    23,
+    "Cool_density_threshold_H_p_cm3",
+    rotation=90,
+    va="bottom",
+    ha="right",
+    fontsize=6,
+    family="monospace",
+)
+text(
+    0.95e-1,
+    23,
+    "Jeans_density_threshold_H_p_cm3",
+    rotation=90,
+    va="bottom",
+    ha="right",
+    fontsize=5.5,
+    family="monospace",
+)
+text(5e-8, 8800, "Cool_temperature_norm_K", va="bottom", fontsize=6, family="monospace")
+text(
+    5e-8, 4400, "Jeans_temperature_norm_K", va="bottom", fontsize=6, family="monospace"
+)
+fill_between([1e-5, 1e5], [10, 10], [8000, 8000], color="0.9")
+fill_between([1e-1, 1e5], [4000, 400000], color="0.9")
+scatter([1e-5], [8000], s=4, color="k")
+scatter([1e-1], [4000], s=4, color="k")
+xlabel("Hydrogen number density $n_{\\rm H}$ [cm$^{-3}$]", labelpad=0)
+ylabel("Temperature $T$ [K]", labelpad=2)
 xlim(3e-8, 3e3)
-ylim(20., 2e5)
-savefig("EAGLE_entropy_floor.png", dpi=200)
+ylim(20.0, 2e5)
+
+savefig("EAGLE_entropy_floor.svg", dpi=200)
diff --git a/examples/EAGLE_ICs/EAGLE_25/README b/examples/EAGLE_ICs/EAGLE_25/README
new file mode 100644
index 0000000000000000000000000000000000000000..abe441a5f2f1edb32dfa638f737b775c473524fe
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_25/README
@@ -0,0 +1,3 @@
+Initial conditions corresponding to the 25 Mpc volume
+of the EAGLE suite. The ICs only contain DM particles. The
+gas particles will be generated in SWIFT.
diff --git a/examples/EAGLE_ICs/EAGLE_25/eagle_25.yml b/examples/EAGLE_ICs/EAGLE_25/eagle_25.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ac8be3ecec4e56af2e910bb104038b033af59078
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_25/eagle_25.yml
@@ -0,0 +1,115 @@
+# Define the system of units to use internally. 
+InternalUnitSystem:
+  UnitMass_in_cgs:     1.98848e43    # 10^10 M_sun in grams
+  UnitLength_in_cgs:   3.08567758e24 # Mpc in centimeters
+  UnitVelocity_in_cgs: 1e5           # km/s in centimeters per second
+  UnitCurrent_in_cgs:  1             # Amperes
+  UnitTemp_in_cgs:     1             # Kelvin
+
+# Cosmological parameters
+Cosmology:
+  h:              0.6777        # Reduced Hubble constant
+  a_begin:        0.0078125     # Initial scale-factor of the simulation
+  a_end:          1.0           # Final scale factor of the simulation
+  Omega_m:        0.307         # Matter density parameter
+  Omega_lambda:   0.693         # Dark-energy density parameter
+  Omega_b:        0.0455        # Baryon density parameter
+
+# Parameters governing the time integration
+TimeIntegration:
+  dt_min:     1e-10 # The minimal time-step size of the simulation (in internal units).
+  dt_max:     1e-2  # The maximal time-step size of the simulation (in internal units).
+  
+# Parameters governing the snapshots
+Snapshots:
+  basename:            eagle # Common part of the name of output files
+  scale_factor_first:  0.05
+  delta_time:          1.02
+
+# Parameters governing the conserved quantities statistics
+Statistics:
+  delta_time:           1.02
+  scale_factor_first:   0.05
+
+# Parameters for the self-gravity scheme
+Gravity:
+  eta:                    0.025     # Constant dimensionless multiplier for time integration.
+  theta:                  0.7       # Opening angle (Multipole acceptance criterion)
+  comoving_softening:     0.0026994 # Comoving softening length (in internal units).
+  max_physical_softening: 0.0007    # Physical softening length (in internal units).
+  mesh_side_length:       128
+  
+# Parameters for the hydrodynamics scheme
+SPH:
+  resolution_eta:        1.2348   # Target smoothing length in units of the mean inter-particle separation (1.2348 == 48Ngbs with the cubic spline kernel).
+  h_min_ratio:           0.1      # Minimal smoothing in units of softening.
+  CFL_condition:         0.1      # Courant-Friedrich-Levy condition for time integration.
+  minimal_temperature:   100.0    # (internal units)
+  initial_temperature:   268.7
+
+Scheduler:
+  max_top_level_cells:   16
+  cell_split_size:       100
+  tasks_per_cell:        5
+
+Restarts:
+  delta_hours:  1.0
+
+# Parameters related to the initial conditions
+InitialConditions:
+  file_name:  EAGLE_L0025N0376_ICs.hdf5
+  periodic:   1
+  cleanup_h_factors: 1               # Remove the h-factors inherited from Gadget
+  cleanup_velocity_factors: 1        # Remove the sqrt(a) factor in the velocities inherited from Gadget
+  generate_gas_in_ics: 1             # Generate gas particles from the DM-only ICs
+  cleanup_smoothing_lengths: 1       # Since we generate gas, make use of the (expensive) cleaning-up procedure.
+
+# Impose primoridal metallicity
+EAGLEChemistry:
+  init_abundance_metal:     0.
+  init_abundance_Hydrogen:  0.752
+  init_abundance_Helium:    0.248
+  init_abundance_Carbon:    0.0
+  init_abundance_Nitrogen:  0.0
+  init_abundance_Oxygen:    0.0
+  init_abundance_Neon:      0.0
+  init_abundance_Magnesium: 0.0
+  init_abundance_Silicon:   0.0
+  init_abundance_Iron:      0.0
+
+# EAGLE cooling parameters
+EAGLECooling:
+  dir_name:                ./coolingtables/
+  H_reion_z:               11.5 
+  H_reion_eV_p_H:          2.0
+  He_reion_z_centre:       3.5
+  He_reion_z_sigma:        0.5
+  He_reion_eV_p_H:         2.0
+
+# EAGLE star formation parameters
+EAGLEStarFormation:
+  EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
+  EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
+  EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
+  KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
+  KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
+  KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
+  KS_high_density_threshold_H_p_cm3: 1e3       # Hydrogen number density above which the Kennicut-Schmidt law changes slope in Hydrogen atoms per cm^3.
+  KS_high_density_exponent:          2.0       # Slope of the Kennicut-Schmidt law above the high-density threshold.
+  KS_temperature_margin_dex:         0.5       # Logarithm base 10 of the maximal temperature difference above the EOS allowed to form stars.
+  threshold_norm_H_p_cm3:            0.1       # Normalisation of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+  threshold_Z0:                      0.002     # Reference metallicity (metal mass fraction) for the metal-dependant threshold for star formation.
+  threshold_slope:                   -0.64     # Slope of the metal-dependant star formation threshold
+  threshold_max_density_H_p_cm3:     10.0      # Maximal density of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+  
+# Parameters for the EAGLE "equation of state"
+EAGLEEntropyFloor:
+  Jeans_density_threshold_H_p_cm3: 0.1       # Physical density above which the EAGLE Jeans limiter entropy floor kicks in expressed in Hydrogen atoms per cm^3.
+  Jeans_over_density_threshold:    10.       # Overdensity above which the EAGLE Jeans limiter entropy floor can kick in.
+  Jeans_temperature_norm_K:        8000      # Temperature of the EAGLE Jeans limiter entropy floor at the density threshold expressed in Kelvin.
+  Jeans_gamma_effective:           1.3333333 # Slope the of the EAGLE Jeans limiter entropy floor
+  Cool_density_threshold_H_p_cm3: 1e-5       # Physical density above which the EAGLE Cool limiter entropy floor kicks in expressed in Hydrogen atoms per cm^3.
+  Cool_over_density_threshold:    10.        # Overdensity above which the EAGLE Cool limiter entropy floor can kick in.
+  Cool_temperature_norm_K:        8000       # Temperature of the EAGLE Cool limiter entropy floor at the density threshold expressed in Kelvin.
+  Cool_gamma_effective:           1.         # Slope the of the EAGLE Cool limiter entropy floor
+
diff --git a/examples/EAGLE_ICs/EAGLE_25/getIC.sh b/examples/EAGLE_ICs/EAGLE_25/getIC.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ad07fdb46633f86e8f7ffd63f5468f5203c6196c
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_25/getIC.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+wget http://virgodb.cosma.dur.ac.uk/swift-webstorage/ICs/EAGLE_ICs/EAGLE_L0025N0376_ICs.hdf5
diff --git a/examples/EAGLE_ICs/EAGLE_25/run.sh b/examples/EAGLE_ICs/EAGLE_25/run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8b317183d850d5048253fedb8db7e24edd9c02da
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_25/run.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+ # Generate the initial conditions if they are not present.
+if [ ! -e EAGLE_L0025N0376_ICs.hdf5 ]
+then
+    echo "Fetching initial conditions for the EAGLE 25Mpc example..."
+    ./getIC.sh
+fi
+
+../../swift --cosmology --hydro --self-gravity --stars --threads=16 eagle_25.yml 2>&1 | tee output.log
+
diff --git a/examples/EAGLE_ICs/EAGLE_50/README b/examples/EAGLE_ICs/EAGLE_50/README
new file mode 100644
index 0000000000000000000000000000000000000000..0d2032b73069aa903bbcc2fae1d0fa0d3f7c6090
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_50/README
@@ -0,0 +1,3 @@
+Initial conditions corresponding to the 50 Mpc volume
+of the EAGLE suite. The ICs only contain DM particles. The
+gas particles will be generated in SWIFT.
diff --git a/examples/EAGLE_ICs/EAGLE_50/eagle_50.yml b/examples/EAGLE_ICs/EAGLE_50/eagle_50.yml
new file mode 100644
index 0000000000000000000000000000000000000000..528f11f763274b8d793a525201712f1fb6603e4a
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_50/eagle_50.yml
@@ -0,0 +1,115 @@
+# Define the system of units to use internally. 
+InternalUnitSystem:
+  UnitMass_in_cgs:     1.98848e43    # 10^10 M_sun in grams
+  UnitLength_in_cgs:   3.08567758e24 # Mpc in centimeters
+  UnitVelocity_in_cgs: 1e5           # km/s in centimeters per second
+  UnitCurrent_in_cgs:  1             # Amperes
+  UnitTemp_in_cgs:     1             # Kelvin
+
+# Cosmological parameters
+Cosmology:
+  h:              0.6777        # Reduced Hubble constant
+  a_begin:        0.0078125     # Initial scale-factor of the simulation
+  a_end:          1.0           # Final scale factor of the simulation
+  Omega_m:        0.307         # Matter density parameter
+  Omega_lambda:   0.693         # Dark-energy density parameter
+  Omega_b:        0.0455        # Baryon density parameter
+
+# Parameters governing the time integration
+TimeIntegration:
+  dt_min:     1e-10 # The minimal time-step size of the simulation (in internal units).
+  dt_max:     1e-2  # The maximal time-step size of the simulation (in internal units).
+  
+# Parameters governing the snapshots
+Snapshots:
+  basename:            eagle # Common part of the name of output files
+  scale_factor_first:  0.05
+  delta_time:          1.02
+
+# Parameters governing the conserved quantities statistics
+Statistics:
+  delta_time:           1.02
+  scale_factor_first:   0.05
+
+# Parameters for the self-gravity scheme
+Gravity:
+  eta:                    0.025     # Constant dimensionless multiplier for time integration.
+  theta:                  0.7       # Opening angle (Multipole acceptance criterion)
+  comoving_softening:     0.0026994 # Comoving softening length (in internal units).
+  max_physical_softening: 0.0007    # Physical softening length (in internal units).
+  mesh_side_length:       256
+  
+# Parameters for the hydrodynamics scheme
+SPH:
+  resolution_eta:        1.2348   # Target smoothing length in units of the mean inter-particle separation (1.2348 == 48Ngbs with the cubic spline kernel).
+  h_min_ratio:           0.1      # Minimal smoothing in units of softening.
+  CFL_condition:         0.1      # Courant-Friedrich-Levy condition for time integration.
+  minimal_temperature:   100.0    # (internal units)
+  initial_temperature:   268.7
+
+Scheduler:
+  max_top_level_cells:   32
+  cell_split_size:       100
+  tasks_per_cell:        5
+
+Restarts:
+  delta_hours:  1.0
+
+# Parameters related to the initial conditions
+InitialConditions:
+  file_name:  EAGLE_L0050N0752_ICs.hdf5
+  periodic:   1
+  cleanup_h_factors: 1               # Remove the h-factors inherited from Gadget
+  cleanup_velocity_factors: 1        # Remove the sqrt(a) factor in the velocities inherited from Gadget
+  generate_gas_in_ics: 1             # Generate gas particles from the DM-only ICs
+  cleanup_smoothing_lengths: 1       # Since we generate gas, make use of the (expensive) cleaning-up procedure.
+
+# Impose primoridal metallicity
+EAGLEChemistry:
+  init_abundance_metal:     0.
+  init_abundance_Hydrogen:  0.752
+  init_abundance_Helium:    0.248
+  init_abundance_Carbon:    0.0
+  init_abundance_Nitrogen:  0.0
+  init_abundance_Oxygen:    0.0
+  init_abundance_Neon:      0.0
+  init_abundance_Magnesium: 0.0
+  init_abundance_Silicon:   0.0
+  init_abundance_Iron:      0.0
+
+# EAGLE cooling parameters
+EAGLECooling:
+  dir_name:                ./coolingtables/
+  H_reion_z:               11.5 
+  H_reion_eV_p_H:          2.0
+  He_reion_z_centre:       3.5
+  He_reion_z_sigma:        0.5
+  He_reion_eV_p_H:         2.0
+
+# EAGLE star formation parameters
+EAGLEStarFormation:
+  EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
+  EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
+  EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
+  KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
+  KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
+  KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
+  KS_high_density_threshold_H_p_cm3: 1e3       # Hydrogen number density above which the Kennicut-Schmidt law changes slope in Hydrogen atoms per cm^3.
+  KS_high_density_exponent:          2.0       # Slope of the Kennicut-Schmidt law above the high-density threshold.
+  KS_temperature_margin_dex:         0.5       # Logarithm base 10 of the maximal temperature difference above the EOS allowed to form stars.
+  threshold_norm_H_p_cm3:            0.1       # Normalisation of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+  threshold_Z0:                      0.002     # Reference metallicity (metal mass fraction) for the metal-dependant threshold for star formation.
+  threshold_slope:                   -0.64     # Slope of the metal-dependant star formation threshold
+  threshold_max_density_H_p_cm3:     10.0      # Maximal density of the metal-dependant density threshold for star formation in Hydrogen atoms per cm^3.
+  
+# Parameters for the EAGLE "equation of state"
+EAGLEEntropyFloor:
+  Jeans_density_threshold_H_p_cm3: 0.1       # Physical density above which the EAGLE Jeans limiter entropy floor kicks in expressed in Hydrogen atoms per cm^3.
+  Jeans_over_density_threshold:    10.       # Overdensity above which the EAGLE Jeans limiter entropy floor can kick in.
+  Jeans_temperature_norm_K:        8000      # Temperature of the EAGLE Jeans limiter entropy floor at the density threshold expressed in Kelvin.
+  Jeans_gamma_effective:           1.3333333 # Slope the of the EAGLE Jeans limiter entropy floor
+  Cool_density_threshold_H_p_cm3: 1e-5       # Physical density above which the EAGLE Cool limiter entropy floor kicks in expressed in Hydrogen atoms per cm^3.
+  Cool_over_density_threshold:    10.        # Overdensity above which the EAGLE Cool limiter entropy floor can kick in.
+  Cool_temperature_norm_K:        8000       # Temperature of the EAGLE Cool limiter entropy floor at the density threshold expressed in Kelvin.
+  Cool_gamma_effective:           1.         # Slope the of the EAGLE Cool limiter entropy floor
+
diff --git a/examples/EAGLE_ICs/EAGLE_50/getIC.sh b/examples/EAGLE_ICs/EAGLE_50/getIC.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9c16c69eb7979e66d291134642e4fe3d39314774
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_50/getIC.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+wget http://virgodb.cosma.dur.ac.uk/swift-webstorage/ICs/EAGLE_ICs/EAGLE_L0050N0752_ICs.hdf5
diff --git a/examples/EAGLE_ICs/EAGLE_50/run.sh b/examples/EAGLE_ICs/EAGLE_50/run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3ef38da33fe1cc820e3ee5e7afb620e7e9109196
--- /dev/null
+++ b/examples/EAGLE_ICs/EAGLE_50/run.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+ # Generate the initial conditions if they are not present.
+if [ ! -e EAGLE_L0050N0752_ICs.hdf5 ]
+then
+    echo "Fetching initial conditions for the EAGLE 50Mpc example..."
+    ./getIC.sh
+fi
+
+../../swift --cosmology --hydro --self-gravity --stars --threads=16 eagle_50.yml 2>&1 | tee output.log
+
diff --git a/examples/EAGLE_low_z/EAGLE_12/README b/examples/EAGLE_low_z/EAGLE_12/README
index 856e2d9cf2c54e61ae172036e5be7ae9dd450f60..9fb2930f625fd2e85293b9ebcc91f46e59f02745 100644
--- a/examples/EAGLE_low_z/EAGLE_12/README
+++ b/examples/EAGLE_low_z/EAGLE_12/README
@@ -13,4 +13,4 @@ The particle load of the main EAGLE simulation can be reproduced by
 running these ICs on 8 cores.
 
 MD5 checksum of the ICs: 
-88877f5bb0ee21488c20b8f065fc74db  EAGLE_ICs_12.hdf5
+d1ebf1c7ffb0488c3628e08ed6d2dbf4  EAGLE_ICs_12.hdf5
diff --git a/examples/EAGLE_low_z/EAGLE_12/eagle_12.yml b/examples/EAGLE_low_z/EAGLE_12/eagle_12.yml
index ada36234d6a9691a8d78a33a047088920e2c6a11..cc9a3019cc235948c4d8ecc3a6ea7d71da537129 100644
--- a/examples/EAGLE_low_z/EAGLE_12/eagle_12.yml
+++ b/examples/EAGLE_low_z/EAGLE_12/eagle_12.yml
@@ -83,7 +83,6 @@ EAGLEStarFormation:
   EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
   EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
   EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
-  gas_fraction:                      0.3       # The gas fraction used internally by the model.
   KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
   KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
   KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
diff --git a/examples/EAGLE_low_z/EAGLE_25/README b/examples/EAGLE_low_z/EAGLE_25/README
index 88fc1ea3eede1e254907dd5ba1dbf2eaa81fb694..0fe37964d3734b63acd10195822e11094219586a 100644
--- a/examples/EAGLE_low_z/EAGLE_25/README
+++ b/examples/EAGLE_low_z/EAGLE_25/README
@@ -13,4 +13,4 @@ The particle load of the main EAGLE simulation can be reproduced by
 running these ICs on 64 cores.
 
 MD5 checksum of the ICs: 
-02cd1c353b86230af047b5d4ab22afcf  EAGLE_ICs_25.hdf5
+592faecfc51239a00396f5a4acc2fa4d  EAGLE_ICs_25.hdf5
diff --git a/examples/EAGLE_low_z/EAGLE_25/eagle_25.yml b/examples/EAGLE_low_z/EAGLE_25/eagle_25.yml
index b1d897ec390ca0488229c460a4308c1ee793dbf7..02927925bf9e80a180baa1096b2db40aba2ea0f6 100644
--- a/examples/EAGLE_low_z/EAGLE_25/eagle_25.yml
+++ b/examples/EAGLE_low_z/EAGLE_25/eagle_25.yml
@@ -90,7 +90,6 @@ EAGLEStarFormation:
   EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
   EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
   EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
-  gas_fraction:                      0.3       # The gas fraction used internally by the model.
   KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
   KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
   KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
diff --git a/examples/EAGLE_low_z/EAGLE_50/README b/examples/EAGLE_low_z/EAGLE_50/README
index f6ae9cd9537ad224ba63eaff2daba25dfd19718c..211360be35f83423160ceb9912f7f0ce9ee444c8 100644
--- a/examples/EAGLE_low_z/EAGLE_50/README
+++ b/examples/EAGLE_low_z/EAGLE_50/README
@@ -13,4 +13,4 @@ The particle load of the main EAGLE simulation can be reproduced by
 running these ICs on 512 cores.
 
 MD5 checksum of the ICs: 
-3591b579bd108ddf0e555092bdfbf97f  EAGLE_ICs_50.hdf5
+203985136c665e8677a4faa77f94110a  EAGLE_ICs_50.hdf5
diff --git a/examples/EAGLE_low_z/EAGLE_50/eagle_50.yml b/examples/EAGLE_low_z/EAGLE_50/eagle_50.yml
index c837c88d870f21907b9fe7fc1408c5df8db5dd0c..7b7ae35bfa2f72686c7479b8f19ef6c2950c0c22 100644
--- a/examples/EAGLE_low_z/EAGLE_50/eagle_50.yml
+++ b/examples/EAGLE_low_z/EAGLE_50/eagle_50.yml
@@ -85,7 +85,6 @@ EAGLEStarFormation:
   EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
   EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
   EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
-  gas_fraction:                      0.3       # The gas fraction used internally by the model.
   KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
   KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
   KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
diff --git a/examples/EAGLE_low_z/EAGLE_6/README b/examples/EAGLE_low_z/EAGLE_6/README
index 9fe951252f1abf4e27264c6497ec14451080b01e..844c779e222b1cd7ebefaa61d637092a5a8c1e79 100644
--- a/examples/EAGLE_low_z/EAGLE_6/README
+++ b/examples/EAGLE_low_z/EAGLE_6/README
@@ -10,4 +10,4 @@ been removed.
 Everything is ready to be run without cosmological integration. 
 
 MD5 checksum of the ICs:
-a4efccd3646a60ad8600ac3a2895ea82  EAGLE_ICs_6.hdf5
+1923db3cf59b2e80b23e4e1aee13e012  EAGLE_ICs_6.hdf5
diff --git a/examples/EAGLE_low_z/EAGLE_6/eagle_6.yml b/examples/EAGLE_low_z/EAGLE_6/eagle_6.yml
index 4f68413fa4c69b8e2b9ff28e66f4f269d21a1a7b..e4b175b622610bfb4edcd0ad168cf23d1df2b2ba 100644
--- a/examples/EAGLE_low_z/EAGLE_6/eagle_6.yml
+++ b/examples/EAGLE_low_z/EAGLE_6/eagle_6.yml
@@ -94,7 +94,6 @@ EAGLEStarFormation:
   EOS_density_norm_H_p_cm3:          0.1       # Physical density used for the normalisation of the EOS assumed for the star-forming gas in Hydrogen atoms per cm^3.
   EOS_temperature_norm_K:            8000      # Temperature om the polytropic EOS assumed for star-forming gas at the density normalisation in Kelvin.
   EOS_gamma_effective:               1.3333333 # Slope the of the polytropic EOS assumed for the star-forming gas.
-  gas_fraction:                      0.3       # The gas fraction used internally by the model.
   KS_normalisation:                  1.515e-4  # The normalization of the Kennicutt-Schmidt law in Msun / kpc^2 / yr.
   KS_exponent:                       1.4       # The exponent of the Kennicutt-Schmidt law.
   KS_min_over_density:               57.7      # The over-density above which star-formation is allowed.
diff --git a/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/isolated_galaxy.yml b/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/isolated_galaxy.yml
index 7dac0a8a6c3b8d4c583ae6138513f0c5259227b1..341cae8a3fe87e01aecd6c77bf8f86a9cc940bf1 100644
--- a/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/isolated_galaxy.yml
+++ b/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/isolated_galaxy.yml
@@ -35,7 +35,7 @@ Statistics:
 
 # Parameters related to the initial conditions
 InitialConditions:
-  file_name:               fid.hdf5 # The file to read
+  file_name:               lowres8.hdf5 # The file to read
   periodic:                0        # Are we running with periodic ICs?
   stars_smoothing_length:  0.5
   
diff --git a/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/run.sh b/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/run.sh
index f2aa93fd0e11cd9b07be991187cf0780a82ebec8..dc0b49478cdabefbe4dbf3544e097f18593cfb16 100755
--- a/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/run.sh
+++ b/examples/IsolatedGalaxy/IsolatedGalaxy_starformation/run.sh
@@ -6,7 +6,7 @@ then
     ./getIC.sh
 fi
 
-../../swift --threads=32 --external-gravity --self-gravity --stars --star-formation --cooling --temperature --hydro isolated_galaxy.yml 2>&1 | tee output.log
+../../swift --threads=16 --external-gravity --self-gravity --stars --star-formation --cooling --hydro isolated_galaxy.yml -v 1 2>&1 | tee output.log
 
 # Kennicutt-Schmidt law plot
 python3 plotSolution.py
diff --git a/examples/main.c b/examples/main.c
index 6fc5b433719822558d531f4ed2691e7127139a79..52eed321a5cd80f581eeea11f315bc766457b4ab 100644
--- a/examples/main.c
+++ b/examples/main.c
@@ -120,8 +120,9 @@ int main(int argc, char *argv[]) {
   if ((res = MPI_Comm_rank(MPI_COMM_WORLD, &myrank)) != MPI_SUCCESS)
     error("Call to MPI_Comm_rank failed with error %i.", res);
 
-  /* Make sure messages are stamped with the correct rank. */
+  /* Make sure messages are stamped with the correct rank and step. */
   engine_rank = myrank;
+  engine_current_step = 0;
 
   if ((res = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN)) !=
       MPI_SUCCESS)
@@ -343,6 +344,16 @@ int main(int argc, char *argv[]) {
     return 1;
   }
 
+  if (!with_stars && with_star_formation) {
+    if (myrank == 0) {
+      argparse_usage(&argparse);
+      printf(
+          "\nError: Cannot process star formation without stars, --stars must "
+          "be chosen.\n");
+    }
+    return 1;
+  }
+
   if (!with_stars && with_feedback) {
     if (myrank == 0) {
       argparse_usage(&argparse);
@@ -470,8 +481,8 @@ int main(int argc, char *argv[]) {
 #ifdef WITH_MPI
   if (with_mpole_reconstruction && nr_nodes > 1)
     error("Cannot reconstruct m-poles every step over MPI (yet).");
-  if (with_star_formation)
-    error("Can't run with star formation over MPI (yet)");
+  if (with_star_formation && with_feedback)
+    error("Can't run with star formation and feedback over MPI (yet)");
   if (with_limiter) error("Can't run with time-step limiter over MPI (yet)");
 #endif
 
@@ -724,6 +735,39 @@ int main(int argc, char *argv[]) {
     else
       bzero(&gravity_properties, sizeof(struct gravity_props));
 
+    /* Initialise the external potential properties */
+    bzero(&potential, sizeof(struct external_potential));
+    if (with_external_gravity)
+      potential_init(params, &prog_const, &us, &s, &potential);
+    if (myrank == 0) potential_print(&potential);
+
+    /* Initialise the cooling function properties */
+    bzero(&cooling_func, sizeof(struct cooling_function_data));
+    if (with_cooling || with_temperature) {
+#ifdef COOLING_NONE
+      if (with_cooling)
+        error("ERROR: Running with cooling but compiled without it.");
+#endif
+      cooling_init(params, &us, &prog_const, &cooling_func);
+    }
+    if (myrank == 0) cooling_print(&cooling_func);
+
+    /* Initialise the star formation law and its properties */
+    bzero(&starform, sizeof(struct star_formation));
+    if (with_star_formation) {
+#ifdef STAR_FORMATION_NONE
+      error("ERROR: Running with star formation but compiled without it!");
+#endif
+      starformation_init(params, &prog_const, &us, &hydro_properties,
+                         &starform);
+    }
+    if (with_star_formation && myrank == 0) starformation_print(&starform);
+
+    /* Initialise the chemistry */
+    bzero(&chemistry, sizeof(struct chemistry_global_data));
+    chemistry_init(params, &us, &prog_const, &chemistry);
+    if (myrank == 0) chemistry_print(&chemistry);
+
     /* Be verbose about what happens next */
     if (myrank == 0) message("Reading ICs from file '%s'", ICfileName);
     if (myrank == 0 && cleanup_h)
@@ -889,30 +933,6 @@ int main(int argc, char *argv[]) {
       message("nr of cells at depth %i is %i.", data[0], data[1]);
     }
 
-    /* Initialise the external potential properties */
-    bzero(&potential, sizeof(struct external_potential));
-    if (with_external_gravity)
-      potential_init(params, &prog_const, &us, &s, &potential);
-    if (myrank == 0) potential_print(&potential);
-
-    /* Initialise the cooling function properties */
-    bzero(&cooling_func, sizeof(struct cooling_function_data));
-    if (with_cooling || with_temperature)
-      cooling_init(params, &us, &prog_const, &cooling_func);
-    if (myrank == 0) cooling_print(&cooling_func);
-
-    /* Initialise the star formation law and its properties */
-    bzero(&starform, sizeof(struct star_formation));
-    if (with_star_formation)
-      starformation_init(params, &prog_const, &us, &hydro_properties,
-                         &starform);
-    if (with_star_formation && myrank == 0) starformation_print(&starform);
-
-    /* Initialise the chemistry */
-    bzero(&chemistry, sizeof(struct chemistry_global_data));
-    chemistry_init(params, &us, &prog_const, &chemistry);
-    if (myrank == 0) chemistry_print(&chemistry);
-
     /* Construct the engine policy */
     int engine_policies = ENGINE_POLICY | engine_policy_steal;
     if (with_drift_all) engine_policies |= engine_policy_drift_all;
@@ -1035,6 +1055,19 @@ int main(int argc, char *argv[]) {
   /* unused parameters */
   parser_write_params_to_file(params, "unused_parameters.yml", 0);
 
+  /* Dump memory use report if collected for the 0 step. */
+#ifdef SWIFT_MEMUSE_REPORTS
+  {
+    char dumpfile[40];
+#ifdef WITH_MPI
+    snprintf(dumpfile, 40, "memuse_report-rank%d-step%d.dat", engine_rank, 0);
+#else
+    snprintf(dumpfile, 40, "memuse_report-step%d.dat", 0);
+#endif  // WITH_MPI
+    memuse_log_dump(dumpfile);
+  }
+#endif
+
   /* Main simulation loop */
   /* ==================== */
   int force_stop = 0, resubmit = 0;
@@ -1082,6 +1115,20 @@ int main(int argc, char *argv[]) {
       task_dump_stats(dumpfile, &e, /* header = */ 0, /* allranks = */ 1);
     }
 
+      /* Dump memory use report if collected. */
+#ifdef SWIFT_MEMUSE_REPORTS
+    {
+      char dumpfile[40];
+#ifdef WITH_MPI
+      snprintf(dumpfile, 40, "memuse_report-rank%d-step%d.dat", engine_rank,
+               j + 1);
+#else
+      snprintf(dumpfile, 40, "memuse_report-step%d.dat", j + 1);
+#endif  // WITH_MPI
+      memuse_log_dump(dumpfile);
+    }
+#endif
+
 #ifdef SWIFT_DEBUG_THREADPOOL
     /* Dump the task data using the given frequency. */
     if (dump_threadpool && (dump_threadpool == 1 || j % dump_threadpool == 1)) {
diff --git a/src/Makefile.am b/src/Makefile.am
index fd18996f61242db0ec37f4df1da9e617b622a729..d7e4249a7ff67132505e3a7df8a134d4cd8b266c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -51,7 +51,7 @@ include_HEADERS = space.h runner.h queue.h task.h lock.h cell.h part.h const.h \
     mesh_gravity.h cbrt.h exp10.h velociraptor_interface.h swift_velociraptor_part.h outputlist.h \
     logger_io.h tracers_io.h tracers.h tracers_struct.h star_formation_io.h \
     star_formation_struct.h star_formation.h star_formation_iact.h \
-    velociraptor_struct.h velociraptor_io.h random.h
+    velociraptor_struct.h velociraptor_io.h random.h memuse.h
 
 # source files for EAGLE cooling
 EAGLE_COOLING_SOURCES =
@@ -70,7 +70,8 @@ AM_SOURCES = space.c runner.c queue.c task.c cell.c engine.c engine_maketasks.c
     part_type.c xmf.c gravity_properties.c gravity.c \
     collectgroup.c hydro_space.c equation_of_state.c \
     chemistry.c cosmology.c restart.c mesh_gravity.c velociraptor_interface.c \
-    outputlist.c velociraptor_dummy.c logger_io.c $(EAGLE_COOLING_SOURCES)
+    outputlist.c velociraptor_dummy.c logger_io.c memuse.c \
+    $(EAGLE_COOLING_SOURCES)
 
 # Include files for distribution, not installation.
 nobase_noinst_HEADERS = align.h approx_math.h atomic.h barrier.h cycle.h error.h inline.h kernel_hydro.h kernel_gravity.h \
diff --git a/src/cell.c b/src/cell.c
index c7c10bcf666f576b0689660edcf7af7552a5eb15..c4b738e112cbe2a11c2de0189aa04152476eacc0 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -614,26 +614,21 @@ int cell_unpack_tags(const int *tags, struct cell *restrict c) {
  *
  * @return The number of packed cells.
  */
-int cell_pack_end_step(struct cell *restrict c,
-                       struct pcell_step *restrict pcells) {
+int cell_pack_end_step_hydro(struct cell *restrict c,
+                             struct pcell_step_hydro *restrict pcells) {
 
 #ifdef WITH_MPI
 
   /* Pack this cell's data. */
-  pcells[0].hydro.ti_end_min = c->hydro.ti_end_min;
-  pcells[0].hydro.ti_end_max = c->hydro.ti_end_max;
-  pcells[0].grav.ti_end_min = c->grav.ti_end_min;
-  pcells[0].grav.ti_end_max = c->grav.ti_end_max;
-  pcells[0].stars.ti_end_min = c->stars.ti_end_min;
-  pcells[0].stars.ti_end_max = c->stars.ti_end_max;
-  pcells[0].hydro.dx_max_part = c->hydro.dx_max_part;
-  pcells[0].stars.dx_max_part = c->stars.dx_max_part;
+  pcells[0].ti_end_min = c->hydro.ti_end_min;
+  pcells[0].ti_end_max = c->hydro.ti_end_max;
+  pcells[0].dx_max_part = c->hydro.dx_max_part;
 
   /* Fill in the progeny, depth-first recursion. */
   int count = 1;
   for (int k = 0; k < 8; k++)
     if (c->progeny[k] != NULL) {
-      count += cell_pack_end_step(c->progeny[k], &pcells[count]);
+      count += cell_pack_end_step_hydro(c->progeny[k], &pcells[count]);
     }
 
   /* Return the number of packed values. */
@@ -653,26 +648,155 @@ int cell_pack_end_step(struct cell *restrict c,
  *
  * @return The number of cells created.
  */
-int cell_unpack_end_step(struct cell *restrict c,
-                         struct pcell_step *restrict pcells) {
+int cell_unpack_end_step_hydro(struct cell *restrict c,
+                               struct pcell_step_hydro *restrict pcells) {
 
 #ifdef WITH_MPI
 
   /* Unpack this cell's data. */
-  c->hydro.ti_end_min = pcells[0].hydro.ti_end_min;
-  c->hydro.ti_end_max = pcells[0].hydro.ti_end_max;
-  c->grav.ti_end_min = pcells[0].grav.ti_end_min;
-  c->grav.ti_end_max = pcells[0].grav.ti_end_max;
-  c->stars.ti_end_min = pcells[0].stars.ti_end_min;
-  c->stars.ti_end_max = pcells[0].stars.ti_end_max;
-  c->hydro.dx_max_part = pcells[0].hydro.dx_max_part;
-  c->stars.dx_max_part = pcells[0].stars.dx_max_part;
+  c->hydro.ti_end_min = pcells[0].ti_end_min;
+  c->hydro.ti_end_max = pcells[0].ti_end_max;
+  c->hydro.dx_max_part = pcells[0].dx_max_part;
 
   /* Fill in the progeny, depth-first recursion. */
   int count = 1;
   for (int k = 0; k < 8; k++)
     if (c->progeny[k] != NULL) {
-      count += cell_unpack_end_step(c->progeny[k], &pcells[count]);
+      count += cell_unpack_end_step_hydro(c->progeny[k], &pcells[count]);
+    }
+
+  /* Return the number of packed values. */
+  return count;
+
+#else
+  error("SWIFT was not compiled with MPI support.");
+  return 0;
+#endif
+}
+
+/**
+ * @brief Pack the time information of the given cell and all it's sub-cells.
+ *
+ * @param c The #cell.
+ * @param pcells (output) The end-of-timestep information we pack into
+ *
+ * @return The number of packed cells.
+ */
+int cell_pack_end_step_grav(struct cell *restrict c,
+                            struct pcell_step_grav *restrict pcells) {
+
+#ifdef WITH_MPI
+
+  /* Pack this cell's data. */
+  pcells[0].ti_end_min = c->grav.ti_end_min;
+  pcells[0].ti_end_max = c->grav.ti_end_max;
+
+  /* Fill in the progeny, depth-first recursion. */
+  int count = 1;
+  for (int k = 0; k < 8; k++)
+    if (c->progeny[k] != NULL) {
+      count += cell_pack_end_step_grav(c->progeny[k], &pcells[count]);
+    }
+
+  /* Return the number of packed values. */
+  return count;
+
+#else
+  error("SWIFT was not compiled with MPI support.");
+  return 0;
+#endif
+}
+
+/**
+ * @brief Unpack the time information of a given cell and its sub-cells.
+ *
+ * @param c The #cell
+ * @param pcells The end-of-timestep information to unpack
+ *
+ * @return The number of cells created.
+ */
+int cell_unpack_end_step_grav(struct cell *restrict c,
+                              struct pcell_step_grav *restrict pcells) {
+
+#ifdef WITH_MPI
+
+  /* Unpack this cell's data. */
+  c->grav.ti_end_min = pcells[0].ti_end_min;
+  c->grav.ti_end_max = pcells[0].ti_end_max;
+
+  /* Fill in the progeny, depth-first recursion. */
+  int count = 1;
+  for (int k = 0; k < 8; k++)
+    if (c->progeny[k] != NULL) {
+      count += cell_unpack_end_step_grav(c->progeny[k], &pcells[count]);
+    }
+
+  /* Return the number of packed values. */
+  return count;
+
+#else
+  error("SWIFT was not compiled with MPI support.");
+  return 0;
+#endif
+}
+
+/**
+ * @brief Pack the time information of the given cell and all it's sub-cells.
+ *
+ * @param c The #cell.
+ * @param pcells (output) The end-of-timestep information we pack into
+ *
+ * @return The number of packed cells.
+ */
+int cell_pack_end_step_stars(struct cell *restrict c,
+                             struct pcell_step_stars *restrict pcells) {
+
+#ifdef WITH_MPI
+
+  /* Pack this cell's data. */
+  pcells[0].ti_end_min = c->stars.ti_end_min;
+  pcells[0].ti_end_max = c->stars.ti_end_max;
+  pcells[0].dx_max_part = c->stars.dx_max_part;
+
+  /* Fill in the progeny, depth-first recursion. */
+  int count = 1;
+  for (int k = 0; k < 8; k++)
+    if (c->progeny[k] != NULL) {
+      count += cell_pack_end_step_stars(c->progeny[k], &pcells[count]);
+    }
+
+  /* Return the number of packed values. */
+  return count;
+
+#else
+  error("SWIFT was not compiled with MPI support.");
+  return 0;
+#endif
+}
+
+/**
+ * @brief Unpack the time information of a given cell and its sub-cells.
+ *
+ * @param c The #cell
+ * @param pcells The end-of-timestep information to unpack
+ *
+ * @return The number of cells created.
+ */
+int cell_unpack_end_step_stars(struct cell *restrict c,
+                               struct pcell_step_stars *restrict pcells) {
+
+#ifdef WITH_MPI
+
+  /* Unpack this cell's data. */
+  c->stars.ti_end_min = pcells[0].ti_end_min;
+  c->stars.ti_end_max = pcells[0].ti_end_max;
+  c->stars.dx_max_part = pcells[0].dx_max_part;
+
+  /* Fill in the progeny, depth-first recursion. */
+  int count = 1;
+  for (int k = 0; k < 8; k++)
+    if (c->progeny[k] != NULL) {
+      count += cell_unpack_end_step_stars(c->progeny[k], &pcells[count]);
     }
 
   /* Return the number of packed values. */
@@ -1600,6 +1724,8 @@ void cell_reset_task_counters(struct cell *c) {
 #ifdef SWIFT_DEBUG_CHECKS
   for (int t = 0; t < task_type_count; ++t) c->tasks_executed[t] = 0;
   for (int t = 0; t < task_subtype_count; ++t) c->subtasks_executed[t] = 0;
+  for (int k = 0; k < 8; ++k)
+    if (c->progeny[k] != NULL) cell_reset_task_counters(c->progeny[k]);
 #else
   error("Calling debugging code without debugging flag activated.");
 #endif
@@ -1813,18 +1939,10 @@ void cell_check_multipole(struct cell *c) {
 void cell_clean(struct cell *c) {
 
   /* Hydro */
-  for (int i = 0; i < 13; i++)
-    if (c->hydro.sort[i] != NULL) {
-      free(c->hydro.sort[i]);
-      c->hydro.sort[i] = NULL;
-    }
+  cell_free_hydro_sorts(c);
 
   /* Stars */
-  for (int i = 0; i < 13; i++)
-    if (c->stars.sort[i] != NULL) {
-      free(c->stars.sort[i]);
-      c->stars.sort[i] = NULL;
-    }
+  cell_free_stars_sorts(c);
 
   /* Recurse */
   for (int k = 0; k < 8; k++)
@@ -1851,6 +1969,32 @@ void cell_clear_limiter_flags(struct cell *c, void *data) {
   c->hydro.do_sub_limiter = 0;
 }
 
+/**
+ * @brief Recurse down in a cell hierarchy until the hydro.super level is
+ * reached and activate the spart drift at that level.
+ *
+ * @param c The #cell to recurse into.
+ * @param s The #scheduler.
+ */
+void cell_activate_super_spart_drifts(struct cell *c, struct scheduler *s) {
+
+  if (c == c->hydro.super) {
+    cell_activate_drift_spart(c, s);
+  } else {
+    if (c->split) {
+      for (int k = 0; k < 8; ++k) {
+        if (c->progeny[k] != NULL) {
+          cell_activate_super_spart_drifts(c->progeny[k], s);
+        }
+      }
+    } else {
+#ifdef SWIFT_DEBUG_CHECKS
+      error("Reached a leaf cell without finding a hydro.super!!");
+#endif
+    }
+  }
+}
+
 /**
  * @brief Activate the #part drifts on the given cell.
  */
@@ -3126,7 +3270,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
         }
 
         /* If the foreign cell is active, we want its ti_end values. */
-        if (ci_active || with_limiter) scheduler_activate(s, ci->mpi.recv_ti);
+        if (ci_active || with_limiter)
+          scheduler_activate(s, ci->mpi.hydro.recv_ti);
 
         if (with_limiter) scheduler_activate(s, ci->mpi.limiter.recv);
         if (with_limiter)
@@ -3154,7 +3299,7 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
 
         /* If the local cell is active, send its ti_end values. */
         if (cj_active || with_limiter)
-          scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+          scheduler_activate_send(s, cj->mpi.hydro.send_ti, ci_nodeID);
 
       } else if (cj_nodeID != nodeID) {
 
@@ -3171,7 +3316,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
         }
 
         /* If the foreign cell is active, we want its ti_end values. */
-        if (cj_active || with_limiter) scheduler_activate(s, cj->mpi.recv_ti);
+        if (cj_active || with_limiter)
+          scheduler_activate(s, cj->mpi.hydro.recv_ti);
 
         if (with_limiter) scheduler_activate(s, cj->mpi.limiter.recv);
         if (with_limiter)
@@ -3200,7 +3346,7 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
 
         /* If the local cell is active, send its ti_end values. */
         if (ci_active || with_limiter)
-          scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+          scheduler_activate_send(s, ci->mpi.hydro.send_ti, cj_nodeID);
       }
 #endif
     }
@@ -3228,8 +3374,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
     if (c->hydro.cooling != NULL) scheduler_activate(s, c->hydro.cooling);
     if (c->logger != NULL) scheduler_activate(s, c->logger);
 
-    if (c->hydro.star_formation != NULL) {
-      scheduler_activate(s, c->hydro.star_formation);
+    if (c->top->hydro.star_formation != NULL) {
+      scheduler_activate(s, c->top->hydro.star_formation);
       cell_activate_drift_spart(c, s);
     }
   }
@@ -3298,7 +3444,7 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
         if (cj_active) scheduler_activate(s, ci->mpi.grav.recv);
 
         /* If the foreign cell is active, we want its ti_end values. */
-        if (ci_active) scheduler_activate(s, ci->mpi.recv_ti);
+        if (ci_active) scheduler_activate(s, ci->mpi.grav.recv_ti);
 
         /* Is the foreign cell active and will need stuff from us? */
         if (ci_active) {
@@ -3312,7 +3458,8 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
         }
 
         /* If the local cell is active, send its ti_end values. */
-        if (cj_active) scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+        if (cj_active)
+          scheduler_activate_send(s, cj->mpi.grav.send_ti, ci_nodeID);
 
       } else if (cj_nodeID != nodeID) {
 
@@ -3320,7 +3467,7 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
         if (ci_active) scheduler_activate(s, cj->mpi.grav.recv);
 
         /* If the foreign cell is active, we want its ti_end values. */
-        if (cj_active) scheduler_activate(s, cj->mpi.recv_ti);
+        if (cj_active) scheduler_activate(s, cj->mpi.grav.recv_ti);
 
         /* Is the foreign cell active and will need stuff from us? */
         if (cj_active) {
@@ -3334,7 +3481,8 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
         }
 
         /* If the local cell is active, send its ti_end values. */
-        if (ci_active) scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+        if (ci_active)
+          scheduler_activate_send(s, ci->mpi.grav.send_ti, cj_nodeID);
       }
 #endif
     }
@@ -3507,14 +3655,14 @@ int cell_unskip_stars_tasks(struct cell *c, struct scheduler *s) {
           cell_activate_drift_spart(cj, s);
 
           /* If the local cell is active, send its ti_end values. */
-          scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+          scheduler_activate_send(s, cj->mpi.stars.send_ti, ci_nodeID);
         }
 
         if (ci_active) {
           scheduler_activate(s, ci->mpi.stars.recv);
 
           /* If the foreign cell is active, we want its ti_end values. */
-          scheduler_activate(s, ci->mpi.recv_ti);
+          scheduler_activate(s, ci->mpi.stars.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           scheduler_activate_send(s, cj->mpi.hydro.send_xv, ci_nodeID);
@@ -3537,14 +3685,14 @@ int cell_unskip_stars_tasks(struct cell *c, struct scheduler *s) {
           cell_activate_drift_spart(ci, s);
 
           /* If the local cell is active, send its ti_end values. */
-          scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+          scheduler_activate_send(s, ci->mpi.stars.send_ti, cj_nodeID);
         }
 
         if (cj_active) {
           scheduler_activate(s, cj->mpi.stars.recv);
 
           /* If the foreign cell is active, we want its ti_end values. */
-          scheduler_activate(s, cj->mpi.recv_ti);
+          scheduler_activate(s, cj->mpi.stars.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           scheduler_activate_send(s, ci->mpi.hydro.send_xv, cj_nodeID);
@@ -3574,12 +3722,34 @@ int cell_unskip_stars_tasks(struct cell *c, struct scheduler *s) {
     const int cj_nodeID = nodeID;
 #endif
 
-    if ((ci_active && cj_nodeID == nodeID) ||
-        (cj_active && ci_nodeID == nodeID)) {
+    if (t->type == task_type_self && ci_active) {
+      scheduler_activate(s, t);
+    }
+
+    else if (t->type == task_type_sub_self && ci_active) {
       scheduler_activate(s, t);
+    }
+
+    else if (t->type == task_type_pair || t->type == task_type_sub_pair) {
 
-      /* Nothing more to do here, all drifts and sorts activated above */
+      /* We only want to activate the task if the cell is active and is
+         going to update some gas on the *local* node */
+      if ((ci_nodeID == nodeID && cj_nodeID == nodeID) &&
+          (ci_active || cj_active)) {
+
+        scheduler_activate(s, t);
+
+      } else if ((ci_nodeID == nodeID && cj_nodeID != nodeID) && (cj_active)) {
+
+        scheduler_activate(s, t);
+
+      } else if ((ci_nodeID != nodeID && cj_nodeID == nodeID) && (ci_active)) {
+
+        scheduler_activate(s, t);
+      }
     }
+
+    /* Nothing more to do here, all drifts and sorts activated above */
   }
 
   /* Unskip all the other task types. */
@@ -3588,6 +3758,9 @@ int cell_unskip_stars_tasks(struct cell *c, struct scheduler *s) {
     if (c->stars.ghost != NULL) scheduler_activate(s, c->stars.ghost);
     if (c->stars.stars_in != NULL) scheduler_activate(s, c->stars.stars_in);
     if (c->stars.stars_out != NULL) scheduler_activate(s, c->stars.stars_out);
+    if (c->kick1 != NULL) scheduler_activate(s, c->kick1);
+    if (c->kick2 != NULL) scheduler_activate(s, c->kick2);
+    if (c->timestep != NULL) scheduler_activate(s, c->timestep);
     if (c->logger != NULL) scheduler_activate(s, c->logger);
   }
 
@@ -3630,8 +3803,7 @@ void cell_set_super(struct cell *c, struct cell *super, const int with_hydro,
 void cell_set_super_hydro(struct cell *c, struct cell *super_hydro) {
 
   /* Are we in a cell with some kind of self/pair task ? */
-  if (super_hydro == NULL && (c->hydro.density != NULL || c->stars.count > 0))
-    super_hydro = c;
+  if (super_hydro == NULL && c->hydro.density != NULL) super_hydro = c;
 
   /* Set the super-cell */
   c->hydro.super = super_hydro;
@@ -3711,7 +3883,9 @@ void cell_set_super_mapper(void *map_data, int num_elements, void *extra_data) {
 int cell_has_tasks(struct cell *c) {
 
 #ifdef WITH_MPI
-  if (c->timestep != NULL || c->mpi.recv_ti != NULL) return 1;
+  if (c->timestep != NULL || c->mpi.hydro.recv_ti != NULL ||
+      c->mpi.grav.recv_ti != NULL || c->mpi.stars.recv_ti != NULL)
+    return 1;
 #else
   if (c->timestep != NULL) return 1;
 #endif
@@ -4284,35 +4458,19 @@ void cell_drift_multipole(struct cell *c, const struct engine *e) {
  * hierarchy.
  *
  * @param c The #cell to clean.
- * @param is_super Is this a super-cell?
  */
-void cell_clear_stars_sort_flags(struct cell *c, const int is_super) {
+void cell_clear_stars_sort_flags(struct cell *c) {
 
   /* Recurse if possible */
   if (c->split) {
     for (int k = 0; k < 8; k++)
-      if (c->progeny[k] != NULL)
-        cell_clear_stars_sort_flags(c->progeny[k], /*is_super=*/0);
-  }
-
-  /* Free the sorted array at the level where it was allocated */
-  if (is_super) {
-
-#ifdef SWIFT_DEBUG_CHECKS
-    if (c != c->hydro.super) error("Cell is not a super-cell!!!");
-#endif
-
-    for (int i = 0; i < 13; i++) {
-      free(c->stars.sort[i]);
-    }
+      if (c->progeny[k] != NULL) cell_clear_stars_sort_flags(c->progeny[k]);
   }
 
   /* Indicate that the cell is not sorted and cancel the pointer sorting arrays.
    */
   c->stars.sorted = 0;
-  for (int i = 0; i < 13; i++) {
-    c->stars.sort[i] = NULL;
-  }
+  cell_free_stars_sorts(c);
 }
 
 /**
@@ -4448,16 +4606,36 @@ struct spart *cell_add_spart(struct engine *e, struct cell *const c) {
      each level */
   struct cell *top = c;
   while (top->parent != NULL) {
+
+    /* What is the progeny index of the cell? */
     for (int k = 0; k < 8; ++k) {
       if (top->parent->progeny[k] == top) {
         progeny[(int)top->parent->depth] = k;
       }
     }
+
+      /* Check that the cell was indeed drifted to this point to avoid future
+       * issues */
+#ifdef SWIFT_DEBUG_CHECKS
+    if (top->hydro.super != NULL && top->stars.count > 0 &&
+        top->stars.ti_old_part != e->ti_current) {
+      error("Cell had not been correctly drifted before star formation");
+    }
+#endif
+
+    /* Climb up */
     top = top->parent;
   }
 
+  /* Lock the top-level cell as we are going to operate on it */
+  lock_lock(&top->stars.star_formation_lock);
+
   /* Are there any extra particles left? */
   if (top->stars.count == top->stars.count_total - 1) {
+
+    /* Release the local lock before exiting. */
+    if (lock_unlock(&top->stars.star_formation_lock) != 0)
+      error("Failed to unlock the top-level cell.");
     message("We ran out of star particles!");
     atomic_inc(&e->forcerebuild);
     return NULL;
@@ -4493,6 +4671,19 @@ struct spart *cell_add_spart(struct engine *e, struct cell *const c) {
    * current cell*/
   cell_recursively_shift_sparts(top, progeny, /* main_branch=*/1);
 
+  /* Make sure the gravity will be recomputed for this particle in the next step
+   */
+  struct cell *top2 = c;
+  while (top2->parent != NULL) {
+    top2->stars.ti_old_part = e->ti_current;
+    top2 = top2->parent;
+  }
+  top2->stars.ti_old_part = e->ti_current;
+
+  /* Release the lock */
+  if (lock_unlock(&top->stars.star_formation_lock) != 0)
+    error("Failed to unlock the top-level cell.");
+
   /* We now have an empty spart as the first particle in that cell */
   struct spart *sp = &c->stars.parts[0];
   bzero(sp, sizeof(struct spart));
@@ -4505,13 +4696,6 @@ struct spart *cell_add_spart(struct engine *e, struct cell *const c) {
   /* Set it to the current time-bin */
   sp->time_bin = e->min_active_bin;
 
-  top = c;
-  while (top->parent != NULL) {
-    top->grav.ti_end_min = e->ti_current;
-    top = top->parent;
-  }
-  top->grav.ti_end_min = e->ti_current;
-
 #ifdef SWIFT_DEBUG_CHECKS
   /* Specify it was drifted to this point */
   sp->ti_drift = e->ti_current;
@@ -4808,6 +4992,17 @@ void cell_reorder_extra_parts(struct cell *c, const ptrdiff_t parts_offset) {
         parts[i].gpart->id_or_neg_offset = -(i + parts_offset);
     }
   }
+
+#ifdef SWIFT_DEBUG_CHECKS
+  for (int i = 0; i < c->hydro.count_total; ++i) {
+    if (parts[i].time_bin == time_bin_not_created && i < c->hydro.count) {
+      error("Extra particle before the end of the regular array");
+    }
+    if (parts[i].time_bin != time_bin_not_created && i >= c->hydro.count) {
+      error("Regular particle after the end of the regular array");
+    }
+  }
+#endif
 }
 
 /**
@@ -4854,6 +5049,17 @@ void cell_reorder_extra_sparts(struct cell *c, const ptrdiff_t sparts_offset) {
 #endif
     }
   }
+
+#ifdef SWIFT_DEBUG_CHECKS
+  for (int i = 0; i < c->stars.count_total; ++i) {
+    if (sparts[i].time_bin == time_bin_not_created && i < c->stars.count) {
+      error("Extra particle before the end of the regular array");
+    }
+    if (sparts[i].time_bin != time_bin_not_created && i >= c->stars.count) {
+      error("Regular particle after the end of the regular array");
+    }
+  }
+#endif
 }
 
 /**
@@ -4899,6 +5105,17 @@ void cell_reorder_extra_gparts(struct cell *c, struct part *parts,
       }
     }
   }
+
+#ifdef SWIFT_DEBUG_CHECKS
+  for (int i = 0; i < c->grav.count_total; ++i) {
+    if (gparts[i].time_bin == time_bin_not_created && i < c->grav.count) {
+      error("Extra particle before the end of the regular array");
+    }
+    if (gparts[i].time_bin != time_bin_not_created && i >= c->grav.count) {
+      error("Regular particle after the end of the regular array");
+    }
+  }
+#endif
 }
 
 /**
diff --git a/src/cell.h b/src/cell.h
index e76657349eaf32e795054036e9c451edb03f8c8b..b9b77a002060e73c2fd384bf82471a5a73a61874 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -35,6 +35,7 @@
 #include "lock.h"
 #include "multipole.h"
 #include "part.h"
+#include "sort_part.h"
 #include "space.h"
 #include "task.h"
 #include "timeline.h"
@@ -174,46 +175,37 @@ struct pcell {
 /**
  * @brief Cell information at the end of a time-step.
  */
-struct pcell_step {
+struct pcell_step_hydro {
 
-  /*! Hydro variables */
-  struct {
-
-    /*! Minimal integer end-of-timestep in this cell (hydro) */
-    integertime_t ti_end_min;
-
-    /*! Minimal integer end-of-timestep in this cell (hydro) */
-    integertime_t ti_end_max;
-
-    /*! Maximal distance any #part has travelled since last rebuild */
-    float dx_max_part;
-
-  } hydro;
+  /*! Minimal integer end-of-timestep in this cell (hydro) */
+  integertime_t ti_end_min;
 
-  /*! Grav variables */
-  struct {
+  /*! Minimal integer end-of-timestep in this cell (hydro) */
+  integertime_t ti_end_max;
 
-    /*! Minimal integer end-of-timestep in this cell (gravity) */
-    integertime_t ti_end_min;
+  /*! Maximal distance any #part has travelled since last rebuild */
+  float dx_max_part;
+};
 
-    /*! Minimal integer end-of-timestep in this cell (gravity) */
-    integertime_t ti_end_max;
+struct pcell_step_grav {
 
-  } grav;
+  /*! Minimal integer end-of-timestep in this cell (gravity) */
+  integertime_t ti_end_min;
 
-  /*! Stars variables */
-  struct {
+  /*! Minimal integer end-of-timestep in this cell (gravity) */
+  integertime_t ti_end_max;
+};
 
-    /*! Minimal integer end-of-timestep in this cell (stars) */
-    integertime_t ti_end_min;
+struct pcell_step_stars {
 
-    /*! Maximal integer end-of-timestep in this cell (stars) */
-    integertime_t ti_end_max;
+  /*! Minimal integer end-of-timestep in this cell (stars) */
+  integertime_t ti_end_min;
 
-    /*! Maximal distance any #part has travelled since last rebuild */
-    float dx_max_part;
+  /*! Maximal integer end-of-timestep in this cell (stars) */
+  integertime_t ti_end_max;
 
-  } stars;
+  /*! Maximal distance any #part has travelled since last rebuild */
+  float dx_max_part;
 };
 
 /**
@@ -238,6 +230,9 @@ struct cell {
   /*! Parent cell. */
   struct cell *parent;
 
+  /*! Pointer to the top-level cell in a hierarchy */
+  struct cell *top;
+
   /*! Super cell, i.e. the highest-level parent cell with *any* task */
   struct cell *super;
 
@@ -252,6 +247,7 @@ struct cell {
 
     /*! Pointer for the sorted indices. */
     struct entry *sort[13];
+    struct entry *sortptr;
 
     /*! Super cell, i.e. the highest-level parent cell that has a hydro
      * pair/self tasks */
@@ -512,6 +508,9 @@ struct cell {
     /*! Spin lock for various uses (#spart case). */
     swift_lock_type lock;
 
+    /*! Spin lock for star formation use. */
+    swift_lock_type star_formation_lock;
+
     /*! Nr of #spart in this cell. */
     int count;
 
@@ -538,6 +537,7 @@ struct cell {
 
     /*! Pointer for the sorted indices. */
     struct entry *sort[13];
+    struct entry *sortptr;
 
     /*! Bit-mask indicating the sorted directions */
     unsigned int sorted;
@@ -594,6 +594,9 @@ struct cell {
       /* Task receiving hydro data (gradient). */
       struct task *recv_gradient;
 
+      /* Task receiving data (time-step). */
+      struct task *recv_ti;
+
       /* Linked list for sending hydro data (positions). */
       struct link *send_xv;
 
@@ -603,6 +606,9 @@ struct cell {
       /* Linked list for sending hydro data (gradient). */
       struct link *send_gradient;
 
+      /* Linked list for sending data (time-step). */
+      struct link *send_ti;
+
     } hydro;
 
     struct {
@@ -610,16 +616,30 @@ struct cell {
       /* Task receiving gpart data. */
       struct task *recv;
 
+      /* Task receiving data (time-step). */
+      struct task *recv_ti;
+
       /* Linked list for sending gpart data. */
       struct link *send;
+
+      /* Linked list for sending data (time-step). */
+      struct link *send_ti;
+
     } grav;
 
     struct {
       /* Task receiving spart data. */
       struct task *recv;
 
+      /* Task receiving data (time-step). */
+      struct task *recv_ti;
+
       /* Linked list for sending spart data. */
       struct link *send;
+
+      /* Linked list for sending data (time-step). */
+      struct link *send_ti;
+
     } stars;
 
     struct {
@@ -630,12 +650,6 @@ struct cell {
       struct link *send;
     } limiter;
 
-    /* Task receiving data (time-step). */
-    struct task *recv_ti;
-
-    /* Linked list for sending data (time-step). */
-    struct link *send_ti;
-
     /*! Bit mask of the proxies this cell is registered with. */
     unsigned long long int sendto;
 
@@ -725,8 +739,12 @@ int cell_unpack(struct pcell *pc, struct cell *c, struct space *s,
                 const int with_gravity);
 int cell_pack_tags(const struct cell *c, int *tags);
 int cell_unpack_tags(const int *tags, struct cell *c);
-int cell_pack_end_step(struct cell *c, struct pcell_step *pcell);
-int cell_unpack_end_step(struct cell *c, struct pcell_step *pcell);
+int cell_pack_end_step_hydro(struct cell *c, struct pcell_step_hydro *pcell);
+int cell_unpack_end_step_hydro(struct cell *c, struct pcell_step_hydro *pcell);
+int cell_pack_end_step_grav(struct cell *c, struct pcell_step_grav *pcell);
+int cell_unpack_end_step_grav(struct cell *c, struct pcell_step_grav *pcell);
+int cell_pack_end_step_stars(struct cell *c, struct pcell_step_stars *pcell);
+int cell_unpack_end_step_stars(struct cell *c, struct pcell_step_stars *pcell);
 int cell_pack_multipoles(struct cell *c, struct gravity_tensors *m);
 int cell_unpack_multipoles(struct cell *c, struct gravity_tensors *m);
 int cell_getsize(struct cell *c);
@@ -765,6 +783,7 @@ void cell_activate_subcell_stars_tasks(struct cell *ci, struct cell *cj,
                                        struct scheduler *s);
 void cell_activate_subcell_external_grav_tasks(struct cell *ci,
                                                struct scheduler *s);
+void cell_activate_super_spart_drifts(struct cell *c, struct scheduler *s);
 void cell_activate_drift_part(struct cell *c, struct scheduler *s);
 void cell_activate_drift_gpart(struct cell *c, struct scheduler *s);
 void cell_activate_drift_spart(struct cell *c, struct scheduler *s);
@@ -776,7 +795,7 @@ void cell_clear_limiter_flags(struct cell *c, void *data);
 void cell_set_super_mapper(void *map_data, int num_elements, void *extra_data);
 void cell_check_spart_pos(const struct cell *c,
                           const struct spart *global_sparts);
-void cell_clear_stars_sort_flags(struct cell *c, const int is_super);
+void cell_clear_stars_sort_flags(struct cell *c);
 int cell_has_tasks(struct cell *c);
 void cell_remove_part(const struct engine *e, struct cell *c, struct part *p,
                       struct xpart *xp);
@@ -1059,5 +1078,102 @@ __attribute__((always_inline)) INLINE static void cell_ensure_tagged(
 #endif  // WITH_MPI
 }
 
+/**
+ * @brief Allocate hydro sort memory for cell.
+ *
+ * @param c The #cell that will require sorting.
+ * @param flags Cell flags.
+ */
+__attribute__((always_inline)) INLINE static void cell_malloc_hydro_sorts(
+    struct cell *c, int flags) {
+
+  /* Count the memory needed for all active dimensions. */
+  int count = 0;
+  for (int j = 0; j < 13; j++) {
+    if ((flags & (1 << j)) && c->hydro.sort[j] == NULL)
+      count += (c->hydro.count + 1);
+  }
+
+  /* Allocate as a single chunk. */
+  struct entry *memptr = NULL;
+  if ((memptr = (struct entry *)swift_malloc(
+           "hydro.sort", sizeof(struct entry) * count)) == NULL)
+    error("Failed to allocate sort memory.");
+
+  c->hydro.sortptr = memptr;
+
+  /* And attach spans as needed. */
+  for (int j = 0; j < 13; j++) {
+    if ((flags & (1 << j)) && c->hydro.sort[j] == NULL) {
+      c->hydro.sort[j] = memptr;
+      memptr += (c->hydro.count + 1);
+    }
+  }
+}
+
+/**
+ * @brief Free hydro sort memory for cell.
+ *
+ * @param c The #cell.
+ */
+__attribute__((always_inline)) INLINE static void cell_free_hydro_sorts(
+    struct cell *c) {
+
+  /* Note only one allocation for the dimensions. */
+  if (c->hydro.sortptr != NULL) {
+    swift_free("hydro.sort", c->hydro.sortptr);
+    c->hydro.sortptr = NULL;
+    for (int i = 0; i < 13; i++) c->hydro.sort[i] = NULL;
+  }
+}
+
+/**
+ * @brief Allocate stars sort memory for cell.
+ *
+ * @param c The #cell that will require sorting.
+ * @param flags Cell flags.
+ */
+__attribute__((always_inline)) INLINE static void cell_malloc_stars_sorts(
+    struct cell *c, int flags) {
+
+  /* Count the memory needed for all active dimensions. */
+  int count = 0;
+  for (int j = 0; j < 13; j++) {
+    if ((flags & (1 << j)) && c->stars.sort[j] == NULL)
+      count += (c->stars.count + 1);
+  }
+
+  /* Allocate as a single chunk. */
+  struct entry *memptr = NULL;
+  if ((memptr = (struct entry *)swift_malloc(
+           "stars.sort", sizeof(struct entry) * count)) == NULL)
+    error("Failed to allocate sort memory.");
+
+  c->stars.sortptr = memptr;
+
+  /* And attach spans as needed. */
+  for (int j = 0; j < 13; j++) {
+    if ((flags & (1 << j)) && c->stars.sort[j] == NULL) {
+      c->stars.sort[j] = memptr;
+      memptr += (c->stars.count + 1);
+    }
+  }
+}
+
+/**
+ * @brief Free stars sort memory for cell.
+ *
+ * @param c The #cell.
+ */
+__attribute__((always_inline)) INLINE static void cell_free_stars_sorts(
+    struct cell *c) {
+
+  /* Note only one allocation for the dimensions. */
+  if (c->stars.sortptr != NULL) {
+    swift_free("stars.sort", c->stars.sortptr);
+    c->stars.sortptr = NULL;
+    for (int i = 0; i < 13; i++) c->stars.sort[i] = NULL;
+  }
+}
 
 #endif /* SWIFT_CELL_H */
diff --git a/src/clocks.c b/src/clocks.c
index 49297f5db1cc10a3d9f4537c5900610dded7ffba..16af01938d8f4e6cb21490af3288fd64e1a93876 100644
--- a/src/clocks.c
+++ b/src/clocks.c
@@ -42,8 +42,9 @@
 /* The CPU frequency used to convert ticks to seconds. */
 static unsigned long long clocks_cpufreq = 0;
 
-/* Ticks when the CPU frequency was initialised. Used in elapsed. */
-static ticks clocks_start = 0;
+/* Ticks when the CPU frequency was initialised, this marks the start of
+ * time. */
+ticks clocks_start_ticks = 0;
 
 /* The units of any returned times. */
 static const char *clocks_units[] = {"ms", "~ms"};
@@ -106,7 +107,7 @@ void clocks_set_cpufreq(unsigned long long freq) {
   } else {
     clocks_estimate_cpufreq();
   }
-  clocks_start = getticks();
+  clocks_start_ticks = getticks();
 }
 
 /**
@@ -258,7 +259,7 @@ const char *clocks_get_timesincestart(void) {
   static char buffer[40];
 
   sprintf(buffer, "[%07.1f]",
-          clocks_diff_ticks(getticks(), clocks_start) / 1000.0);
+          clocks_diff_ticks(getticks(), clocks_start_ticks) / 1000.0);
 
   return buffer;
 }
@@ -271,7 +272,7 @@ const char *clocks_get_timesincestart(void) {
  * @result the time since the start of the execution
  */
 double clocks_get_hours_since_start(void) {
-  return clocks_diff_ticks(getticks(), clocks_start) / (3600. * 1000.0);
+  return clocks_diff_ticks(getticks(), clocks_start_ticks) / (3600. * 1000.0);
 }
 
 /**
diff --git a/src/clocks.h b/src/clocks.h
index ce08167bd504d47a76542870791057881c6d2f17..d306268674fc85c722e71a6bf8c0095341ba4e1a 100644
--- a/src/clocks.h
+++ b/src/clocks.h
@@ -37,6 +37,9 @@ struct clocks_time {
 #endif
 };
 
+/* Ticks used as the start of time. */
+extern ticks clocks_start_ticks;
+
 void clocks_gettime(struct clocks_time *time);
 double clocks_diff(struct clocks_time *start, struct clocks_time *end);
 const char *clocks_getunit(void);
diff --git a/src/collectgroup.c b/src/collectgroup.c
index ddf3e35d945fd8b07cc927d8ba383963c7558cd2..5242d0d93bbca2315a91d2abc099670afb2789ed 100644
--- a/src/collectgroup.c
+++ b/src/collectgroup.c
@@ -40,6 +40,13 @@ struct mpicollectgroup1 {
   long long inhibited, g_inhibited, s_inhibited;
   integertime_t ti_hydro_end_min;
   integertime_t ti_gravity_end_min;
+  integertime_t ti_stars_end_min;
+  integertime_t ti_hydro_end_max;
+  integertime_t ti_gravity_end_max;
+  integertime_t ti_stars_end_max;
+  integertime_t ti_hydro_beg_max;
+  integertime_t ti_gravity_beg_max;
+  integertime_t ti_stars_beg_max;
   int forcerebuild;
   long long total_nr_cells;
   long long total_nr_tasks;
@@ -86,9 +93,15 @@ void collectgroup1_apply(struct collectgroup1 *grp1, struct engine *e) {
   e->ti_gravity_end_min = grp1->ti_gravity_end_min;
   e->ti_gravity_end_max = grp1->ti_gravity_end_max;
   e->ti_gravity_beg_max = grp1->ti_gravity_beg_max;
-  e->ti_end_min = min(e->ti_hydro_end_min, e->ti_gravity_end_min);
-  e->ti_end_max = max(e->ti_hydro_end_max, e->ti_gravity_end_max);
-  e->ti_beg_max = max(e->ti_hydro_beg_max, e->ti_gravity_beg_max);
+  e->ti_stars_end_min = grp1->ti_stars_end_min;
+  e->ti_stars_end_max = grp1->ti_stars_end_max;
+  e->ti_stars_beg_max = grp1->ti_stars_beg_max;
+  e->ti_end_min =
+      min3(e->ti_hydro_end_min, e->ti_gravity_end_min, e->ti_stars_end_min);
+  e->ti_end_max =
+      max3(e->ti_hydro_end_max, e->ti_gravity_end_max, e->ti_stars_end_max);
+  e->ti_beg_max =
+      max3(e->ti_hydro_beg_max, e->ti_gravity_beg_max, e->ti_stars_beg_max);
   e->updates = grp1->updated;
   e->g_updates = grp1->g_updated;
   e->s_updates = grp1->s_updated;
@@ -127,6 +140,12 @@ void collectgroup1_apply(struct collectgroup1 *grp1, struct engine *e) {
  *                           after this step.
  * @param ti_gravity_beg_max the maximum begin time for next gravity time step
  *                           after this step.
+ * @param ti_stars_end_min the minimum end time for next stars time step
+ *                           after this step.
+ * @param ti_stars_end_max the maximum end time for next stars time step
+ *                           after this step.
+ * @param ti_stars_beg_max the maximum begin time for next stars time step
+ *                           after this step.
  * @param forcerebuild whether a rebuild is required after this step.
  * @param total_nr_cells total number of all cells on rank.
  * @param total_nr_tasks total number of tasks on rank.
@@ -138,8 +157,9 @@ void collectgroup1_init(
     integertime_t ti_hydro_end_min, integertime_t ti_hydro_end_max,
     integertime_t ti_hydro_beg_max, integertime_t ti_gravity_end_min,
     integertime_t ti_gravity_end_max, integertime_t ti_gravity_beg_max,
-    int forcerebuild, long long total_nr_cells, long long total_nr_tasks,
-    float tasks_per_cell) {
+    integertime_t ti_stars_end_min, integertime_t ti_stars_end_max,
+    integertime_t ti_stars_beg_max, int forcerebuild, long long total_nr_cells,
+    long long total_nr_tasks, float tasks_per_cell) {
 
   grp1->updated = updated;
   grp1->g_updated = g_updated;
@@ -153,6 +173,9 @@ void collectgroup1_init(
   grp1->ti_gravity_end_min = ti_gravity_end_min;
   grp1->ti_gravity_end_max = ti_gravity_end_max;
   grp1->ti_gravity_beg_max = ti_gravity_beg_max;
+  grp1->ti_stars_end_min = ti_stars_end_min;
+  grp1->ti_stars_end_max = ti_stars_end_max;
+  grp1->ti_stars_beg_max = ti_stars_beg_max;
   grp1->forcerebuild = forcerebuild;
   grp1->total_nr_cells = total_nr_cells;
   grp1->total_nr_tasks = total_nr_tasks;
@@ -181,6 +204,13 @@ void collectgroup1_reduce(struct collectgroup1 *grp1) {
   mpigrp11.s_inhibited = grp1->s_inhibited;
   mpigrp11.ti_hydro_end_min = grp1->ti_hydro_end_min;
   mpigrp11.ti_gravity_end_min = grp1->ti_gravity_end_min;
+  mpigrp11.ti_stars_end_min = grp1->ti_stars_end_min;
+  mpigrp11.ti_hydro_end_max = grp1->ti_hydro_end_max;
+  mpigrp11.ti_gravity_end_max = grp1->ti_gravity_end_max;
+  mpigrp11.ti_stars_end_max = grp1->ti_stars_end_max;
+  mpigrp11.ti_hydro_beg_max = grp1->ti_hydro_beg_max;
+  mpigrp11.ti_gravity_beg_max = grp1->ti_gravity_beg_max;
+  mpigrp11.ti_stars_beg_max = grp1->ti_stars_beg_max;
   mpigrp11.forcerebuild = grp1->forcerebuild;
   mpigrp11.total_nr_cells = grp1->total_nr_cells;
   mpigrp11.total_nr_tasks = grp1->total_nr_tasks;
@@ -200,6 +230,13 @@ void collectgroup1_reduce(struct collectgroup1 *grp1) {
   grp1->s_inhibited = mpigrp12.s_inhibited;
   grp1->ti_hydro_end_min = mpigrp12.ti_hydro_end_min;
   grp1->ti_gravity_end_min = mpigrp12.ti_gravity_end_min;
+  grp1->ti_stars_end_min = mpigrp12.ti_stars_end_min;
+  grp1->ti_hydro_end_max = mpigrp12.ti_hydro_end_max;
+  grp1->ti_gravity_end_max = mpigrp12.ti_gravity_end_max;
+  grp1->ti_stars_end_max = mpigrp12.ti_stars_end_max;
+  grp1->ti_hydro_beg_max = mpigrp12.ti_hydro_beg_max;
+  grp1->ti_gravity_beg_max = mpigrp12.ti_gravity_beg_max;
+  grp1->ti_stars_beg_max = mpigrp12.ti_stars_beg_max;
   grp1->forcerebuild = mpigrp12.forcerebuild;
   grp1->total_nr_cells = mpigrp12.total_nr_cells;
   grp1->total_nr_tasks = mpigrp12.total_nr_tasks;
@@ -234,6 +271,24 @@ static void doreduce1(struct mpicollectgroup1 *mpigrp11,
       min(mpigrp11->ti_hydro_end_min, mpigrp12->ti_hydro_end_min);
   mpigrp11->ti_gravity_end_min =
       min(mpigrp11->ti_gravity_end_min, mpigrp12->ti_gravity_end_min);
+  mpigrp11->ti_stars_end_min =
+      min(mpigrp11->ti_stars_end_min, mpigrp12->ti_stars_end_min);
+
+  /* Maximum end time. */
+  mpigrp11->ti_hydro_end_max =
+      max(mpigrp11->ti_hydro_end_max, mpigrp12->ti_hydro_end_max);
+  mpigrp11->ti_gravity_end_max =
+      max(mpigrp11->ti_gravity_end_max, mpigrp12->ti_gravity_end_max);
+  mpigrp11->ti_stars_end_max =
+      max(mpigrp11->ti_stars_end_max, mpigrp12->ti_stars_end_max);
+
+  /* Maximum beg time. */
+  mpigrp11->ti_hydro_beg_max =
+      max(mpigrp11->ti_hydro_beg_max, mpigrp12->ti_hydro_beg_max);
+  mpigrp11->ti_gravity_beg_max =
+      max(mpigrp11->ti_gravity_beg_max, mpigrp12->ti_gravity_beg_max);
+  mpigrp11->ti_stars_beg_max =
+      max(mpigrp11->ti_stars_beg_max, mpigrp12->ti_stars_beg_max);
 
   /* Everyone must agree to not rebuild. */
   if (mpigrp11->forcerebuild || mpigrp12->forcerebuild)
diff --git a/src/collectgroup.h b/src/collectgroup.h
index 3e430b58db05b563f96149d1ae21039444a03640..0c0e0898f64deb0081cdab5c6cfbcad1dc760b1c 100644
--- a/src/collectgroup.h
+++ b/src/collectgroup.h
@@ -43,6 +43,7 @@ struct collectgroup1 {
   /* Times for the time-step */
   integertime_t ti_hydro_end_min, ti_hydro_end_max, ti_hydro_beg_max;
   integertime_t ti_gravity_end_min, ti_gravity_end_max, ti_gravity_beg_max;
+  integertime_t ti_stars_end_min, ti_stars_end_max, ti_stars_beg_max;
 
   /* Force the engine to rebuild? */
   int forcerebuild;
@@ -63,8 +64,9 @@ void collectgroup1_init(
     integertime_t ti_hydro_end_min, integertime_t ti_hydro_end_max,
     integertime_t ti_hydro_beg_max, integertime_t ti_gravity_end_min,
     integertime_t ti_gravity_end_max, integertime_t ti_gravity_beg_max,
-    int forcerebuild, long long total_nr_cells, long long total_nr_tasks,
-    float tasks_per_cell);
+    integertime_t ti_stars_end_min, integertime_t ti_stars_end_max,
+    integertime_t ti_stars_beg_max, int forcerebuild, long long total_nr_cells,
+    long long total_nr_tasks, float tasks_per_cell);
 void collectgroup1_reduce(struct collectgroup1 *grp1);
 
 #endif /* SWIFT_COLLECTGROUP_H */
diff --git a/src/cooling/EAGLE/cooling.c b/src/cooling/EAGLE/cooling.c
index d1c2e7c065cc2332b464396f4b746f13c5cf62f8..2e5da9576afecd63b7ecf12e1636f0c7892bdbf6 100644
--- a/src/cooling/EAGLE/cooling.c
+++ b/src/cooling/EAGLE/cooling.c
@@ -58,8 +58,8 @@ static const float explicit_tolerance = 0.05;
 static const float newton_tolerance = 1.0e-4;
 static const float bisection_tolerance = 1.0e-6;
 static const float rounding_tolerance = 1.0e-4;
-static const double bracket_factor = 1.5;              /* sqrt(1.1) */
-static const double newton_log_u_guess_cgs = 12.30103; /* log10(2e12) */
+static const double bracket_factor = 1.5;
+static const double newton_log_u_guess_cgs = 12;
 
 /**
  * @brief Find the index of the current redshift along the redshift dimension
@@ -142,17 +142,21 @@ void cooling_update(const struct cosmology *cosmo,
   get_redshift_index(redshift, &z_index, &dz, cooling);
   cooling->dz = dz;
 
-  /* Does this timestep straddle Hydrogen reionization? If so, we need to input
-   * extra heat */
-  if (!cooling->H_reion_done && (redshift < cooling->H_reion_z)) {
+  /* Extra energy for reionization? */
+  if (!cooling->H_reion_done) {
 
-    if (s == NULL) error("Trying to do H reionization on an empty space!");
+    /* Does this timestep straddle Hydrogen reionization? If so, we need to
+     * input extra heat */
+    if (cosmo->z <= cooling->H_reion_z && cosmo->z_old > cooling->H_reion_z) {
 
-    /* Inject energy to all particles */
-    cooling_Hydrogen_reionization(cooling, cosmo, s);
+      if (s == NULL) error("Trying to do H reionization on an empty space!");
 
-    /* Flag that reionization happened */
-    cooling->H_reion_done = 1;
+      /* Inject energy to all particles */
+      cooling_Hydrogen_reionization(cooling, cosmo, s);
+
+      /* Flag that reionization happened */
+      cooling->H_reion_done = 1;
+    }
   }
 
   /* Do we already have the correct tables loaded? */
@@ -803,6 +807,8 @@ void cooling_Hydrogen_reionization(const struct cooling_function_data *cooling,
   const float extra_heat =
       cooling->H_reion_heat_cgs * cooling->internal_energy_from_cgs;
 
+  message("Applying extra energy for H reionization!");
+
   /* Loop through particles and set new heat */
   for (size_t i = 0; i < s->nr_parts; i++) {
 
@@ -982,20 +988,20 @@ void cooling_print_backend(const struct cooling_function_data *cooling) {
 void cooling_clean(struct cooling_function_data *cooling) {
 
   /* Free the side arrays */
-  free(cooling->Redshifts);
-  free(cooling->nH);
-  free(cooling->Temp);
-  free(cooling->HeFrac);
-  free(cooling->Therm);
-  free(cooling->SolarAbundances);
-  free(cooling->SolarAbundances_inv);
+  swift_free("cooling", cooling->Redshifts);
+  swift_free("cooling", cooling->nH);
+  swift_free("cooling", cooling->Temp);
+  swift_free("cooling", cooling->HeFrac);
+  swift_free("cooling", cooling->Therm);
+  swift_free("cooling", cooling->SolarAbundances);
+  swift_free("cooling", cooling->SolarAbundances_inv);
 
   /* Free the tables */
-  free(cooling->table.metal_heating);
-  free(cooling->table.electron_abundance);
-  free(cooling->table.temperature);
-  free(cooling->table.H_plus_He_heating);
-  free(cooling->table.H_plus_He_electron_abundance);
+  swift_free("cooling-tables", cooling->table.metal_heating);
+  swift_free("cooling-tables", cooling->table.electron_abundance);
+  swift_free("cooling-tables", cooling->table.temperature);
+  swift_free("cooling-tables", cooling->table.H_plus_He_heating);
+  swift_free("cooling-tables", cooling->table.H_plus_He_electron_abundance);
 }
 
 /**
diff --git a/src/cooling/EAGLE/cooling_tables.c b/src/cooling/EAGLE/cooling_tables.c
index c66b7ebb8f8bea4aac557fe3b7f24f944014deda..cd6678c70614aa62c8145afbecc2c8f673dbf0de 100644
--- a/src/cooling/EAGLE/cooling_tables.c
+++ b/src/cooling/EAGLE/cooling_tables.c
@@ -107,10 +107,11 @@ void get_cooling_redshifts(struct cooling_function_data *cooling) {
 
     /* Check value */
     if (N_Redshifts != eagle_cooling_N_redshifts)
-      error("Invalid redshift lenght array.");
+      error("Invalid redshift length array.");
 
     /* Allocate the list of redshifts */
-    if (posix_memalign((void **)&cooling->Redshifts, SWIFT_STRUCT_ALIGNMENT,
+    if (swift_memalign("cooling", (void **)&cooling->Redshifts,
+                       SWIFT_STRUCT_ALIGNMENT,
                        eagle_cooling_N_redshifts * sizeof(float)) != 0)
       error("Failed to allocate redshift table");
 
@@ -227,22 +228,23 @@ void read_cooling_header(const char *fname,
   if (N_Elements != eagle_cooling_N_metal) error("Invalid metal array length.");
 
   /* allocate arrays of values for each of the above quantities */
-  if (posix_memalign((void **)&cooling->Temp, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling", (void **)&cooling->Temp, SWIFT_STRUCT_ALIGNMENT,
                      N_Temp * sizeof(float)) != 0)
     error("Failed to allocate temperature table");
-  if (posix_memalign((void **)&cooling->Therm, SWIFT_STRUCT_ALIGNMENT,
-                     N_Temp * sizeof(float)) != 0)
+  if (swift_memalign("cooling", (void **)&cooling->Therm,
+                     SWIFT_STRUCT_ALIGNMENT, N_Temp * sizeof(float)) != 0)
     error("Failed to allocate internal energy table");
-  if (posix_memalign((void **)&cooling->nH, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling", (void **)&cooling->nH, SWIFT_STRUCT_ALIGNMENT,
                      N_nH * sizeof(float)) != 0)
     error("Failed to allocate nH table");
-  if (posix_memalign((void **)&cooling->HeFrac, SWIFT_STRUCT_ALIGNMENT,
-                     N_He * sizeof(float)) != 0)
+  if (swift_memalign("cooling", (void **)&cooling->HeFrac,
+                     SWIFT_STRUCT_ALIGNMENT, N_He * sizeof(float)) != 0)
     error("Failed to allocate HeFrac table");
-  if (posix_memalign((void **)&cooling->SolarAbundances, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling", (void **)&cooling->SolarAbundances,
+                     SWIFT_STRUCT_ALIGNMENT,
                      N_SolarAbundances * sizeof(float)) != 0)
     error("Failed to allocate Solar abundances table");
-  if (posix_memalign((void **)&cooling->SolarAbundances_inv,
+  if (swift_memalign("cooling", (void **)&cooling->SolarAbundances_inv,
                      SWIFT_STRUCT_ALIGNMENT,
                      N_SolarAbundances * sizeof(float)) != 0)
     error("Failed to allocate Solar abundances inverses table");
@@ -315,31 +317,34 @@ void allocate_cooling_tables(struct cooling_function_data *restrict cooling) {
    * cooling rates with one table being for the redshift above current redshift
    * and one below. */
 
-  if (posix_memalign((void **)&cooling->table.metal_heating,
+  if (swift_memalign("cooling-tables", (void **)&cooling->table.metal_heating,
                      SWIFT_STRUCT_ALIGNMENT,
                      eagle_cooling_N_loaded_redshifts *
                          num_elements_metal_heating * sizeof(float)) != 0)
     error("Failed to allocate metal_heating array");
 
-  if (posix_memalign((void **)&cooling->table.electron_abundance,
+  if (swift_memalign("cooling-tables",
+                     (void **)&cooling->table.electron_abundance,
                      SWIFT_STRUCT_ALIGNMENT,
                      eagle_cooling_N_loaded_redshifts *
                          num_elements_electron_abundance * sizeof(float)) != 0)
     error("Failed to allocate electron_abundance array");
 
-  if (posix_memalign((void **)&cooling->table.temperature,
+  if (swift_memalign("cooling-tables", (void **)&cooling->table.temperature,
                      SWIFT_STRUCT_ALIGNMENT,
                      eagle_cooling_N_loaded_redshifts *
                          num_elements_temperature * sizeof(float)) != 0)
     error("Failed to allocate temperature array");
 
-  if (posix_memalign((void **)&cooling->table.H_plus_He_heating,
+  if (swift_memalign("cooling-tables",
+                     (void **)&cooling->table.H_plus_He_heating,
                      SWIFT_STRUCT_ALIGNMENT,
                      eagle_cooling_N_loaded_redshifts *
                          num_elements_HpHe_heating * sizeof(float)) != 0)
     error("Failed to allocate H_plus_He_heating array");
 
-  if (posix_memalign((void **)&cooling->table.H_plus_He_electron_abundance,
+  if (swift_memalign("cooling-tables",
+                     (void **)&cooling->table.H_plus_He_electron_abundance,
                      SWIFT_STRUCT_ALIGNMENT,
                      eagle_cooling_N_loaded_redshifts *
                          num_elements_HpHe_electron_abundance *
@@ -373,19 +378,24 @@ void get_redshift_invariant_table(
   float *he_electron_abundance = NULL;
 
   /* Allocate arrays for reading in cooling tables.  */
-  if (posix_memalign((void **)&net_cooling_rate, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&net_cooling_rate,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_cooling_rate * sizeof(float)) != 0)
     error("Failed to allocate net_cooling_rate array");
-  if (posix_memalign((void **)&electron_abundance, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&electron_abundance,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_electron_abundance * sizeof(float)) != 0)
     error("Failed to allocate electron_abundance array");
-  if (posix_memalign((void **)&temperature, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&temperature,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_temperature * sizeof(float)) != 0)
     error("Failed to allocate temperature array");
-  if (posix_memalign((void **)&he_net_cooling_rate, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&he_net_cooling_rate,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_HpHe_heating * sizeof(float)) != 0)
     error("Failed to allocate he_net_cooling_rate array");
-  if (posix_memalign((void **)&he_electron_abundance, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&he_electron_abundance,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_HpHe_electron_abundance * sizeof(float)) != 0)
     error("Failed to allocate he_electron_abundance array");
 
@@ -530,11 +540,11 @@ void get_redshift_invariant_table(
   status = H5Fclose(file_id);
   if (status < 0) error("error closing file");
 
-  free(net_cooling_rate);
-  free(electron_abundance);
-  free(temperature);
-  free(he_net_cooling_rate);
-  free(he_electron_abundance);
+  swift_free("cooling-temp", net_cooling_rate);
+  swift_free("cooling-temp", electron_abundance);
+  swift_free("cooling-temp", temperature);
+  swift_free("cooling-temp", he_net_cooling_rate);
+  swift_free("cooling-temp", he_electron_abundance);
 
 #ifdef SWIFT_DEBUG_CHECKS
   message("done reading in redshift invariant table");
@@ -573,19 +583,24 @@ void get_cooling_table(struct cooling_function_data *restrict cooling,
   float *he_electron_abundance = NULL;
 
   /* Allocate arrays for reading in cooling tables.  */
-  if (posix_memalign((void **)&net_cooling_rate, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&net_cooling_rate,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_cooling_rate * sizeof(float)) != 0)
     error("Failed to allocate net_cooling_rate array");
-  if (posix_memalign((void **)&electron_abundance, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&electron_abundance,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_electron_abundance * sizeof(float)) != 0)
     error("Failed to allocate electron_abundance array");
-  if (posix_memalign((void **)&temperature, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&temperature,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_temperature * sizeof(float)) != 0)
     error("Failed to allocate temperature array");
-  if (posix_memalign((void **)&he_net_cooling_rate, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&he_net_cooling_rate,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_HpHe_heating * sizeof(float)) != 0)
     error("Failed to allocate he_net_cooling_rate array");
-  if (posix_memalign((void **)&he_electron_abundance, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("cooling-temp", (void **)&he_electron_abundance,
+                     SWIFT_STRUCT_ALIGNMENT,
                      num_elements_HpHe_electron_abundance * sizeof(float)) != 0)
     error("Failed to allocate he_electron_abundance array");
 
@@ -741,11 +756,11 @@ void get_cooling_table(struct cooling_function_data *restrict cooling,
     if (status < 0) error("error closing file");
   }
 
-  free(net_cooling_rate);
-  free(electron_abundance);
-  free(temperature);
-  free(he_net_cooling_rate);
-  free(he_electron_abundance);
+  swift_free("cooling-temp", net_cooling_rate);
+  swift_free("cooling-temp", electron_abundance);
+  swift_free("cooling-temp", temperature);
+  swift_free("cooling-temp", he_net_cooling_rate);
+  swift_free("cooling-temp", he_electron_abundance);
 
 #ifdef SWIFT_DEBUG_CHECKS
   message("Done reading in general cooling table");
diff --git a/src/cosmology.c b/src/cosmology.c
index be23343d0d62584cd3a811e547b327120db744ef..a18f52b84da330238caaa0a16bb69de025e92046 100644
--- a/src/cosmology.c
+++ b/src/cosmology.c
@@ -140,6 +140,10 @@ double cosmology_get_time_since_big_bang(const struct cosmology *c, double a) {
 void cosmology_update(struct cosmology *c, const struct phys_const *phys_const,
                       integertime_t ti_current) {
 
+  /* Save the previous state */
+  c->z_old = c->z;
+  c->a_old = c->a;
+
   /* Get scale factor and powers of it */
   const double a = c->a_begin * exp(ti_current * c->time_base);
   const double a_inv = 1. / a;
@@ -527,6 +531,10 @@ void cosmology_init(struct swift_params *params, const struct unit_system *us,
   /* Update the times */
   c->time_begin = cosmology_get_time_since_big_bang(c, c->a_begin);
   c->time_end = cosmology_get_time_since_big_bang(c, c->a_end);
+
+  /* Initialise the old values to a valid state */
+  c->a_old = c->a_begin;
+  c->z_old = 1. / c->a_old - 1.;
 }
 
 /**
@@ -568,6 +576,9 @@ void cosmology_init_no_cosmo(struct cosmology *c) {
   c->a_factor_hydro_accel = 1.;
   c->a_factor_grav_accel = 1.;
 
+  c->a_old = 1.;
+  c->z_old = 0.;
+
   c->critical_density = 0.;
   c->critical_density_0 = 0.;
 
diff --git a/src/cosmology.h b/src/cosmology.h
index d6b7dfbdc854a66f89c5511a5076c4fb4a7a5d3f..f2abdb6c62e7509c593b5edfbdb9dd8fe0c99e72 100644
--- a/src/cosmology.h
+++ b/src/cosmology.h
@@ -93,6 +93,12 @@ struct cosmology {
   /*! Dark-energy equation of state at the current time */
   double w;
 
+  /*! Scale-factor at the previous time-step */
+  double a_old;
+
+  /*! Redshit at the previous time-step */
+  double z_old;
+
   /*------------------------------------------------------------------ */
 
   /*! Starting expansion factor */
diff --git a/src/debug.c b/src/debug.c
index d2aff378a174ade46b62a3931f78394a0f41ca41..6257f7cf4e62c3db9027c820bb658eb678c0ecf1 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -680,69 +680,3 @@ void dumpCellRanks(const char *prefix, struct cell *cells_top, int nr_cells) {
 }
 
 #endif /* HAVE_MPI */
-
-/**
- * @brief parse the process /proc/self/statm file to get the process
- *        memory use (in KB). Top field in ().
- *
- * @param size     total virtual memory (VIRT)
- * @param resident resident non-swapped memory (RES)
- * @param share    shared (mmap'd) memory  (SHR)
- * @param trs      text (exe) resident set (CODE)
- * @param lrs      library resident set
- * @param drs      data+stack resident set (DATA)
- * @param dt       dirty pages (nDRT)
- */
-void getProcMemUse(long *size, long *resident, long *share, long *trs,
-                   long *lrs, long *drs, long *dt) {
-
-  /* Open the file. */
-  FILE *file = fopen("/proc/self/statm", "r");
-  if (file != NULL) {
-    int nscan = fscanf(file, "%ld %ld %ld %ld %ld %ld %ld", size, resident,
-                       share, trs, lrs, drs, dt);
-
-    if (nscan == 7) {
-      /* Convert pages into bytes. Usually 4096, but could be 512 on some
-       * systems so take care in conversion to KB. */
-      long sz = sysconf(_SC_PAGESIZE);
-      *size *= sz;
-      *resident *= sz;
-      *share *= sz;
-      *trs *= sz;
-      *lrs *= sz;
-      *drs *= sz;
-      *dt *= sz;
-
-      *size /= 1024;
-      *resident /= 1024;
-      *share /= 1024;
-      *trs /= 1024;
-      *lrs /= 1024;
-      *drs /= 1024;
-      *dt /= 1024;
-    } else {
-      error("Failed to read sufficient fields from /proc/self/statm");
-    }
-    fclose(file);
-  } else {
-    error("Failed to open /proc/self/statm");
-  }
-}
-
-/**
- * @brief Print the current memory use of the process. A la "top".
- */
-void printProcMemUse(void) {
-  long size;
-  long resident;
-  long share;
-  long trs;
-  long lrs;
-  long drs;
-  long dt;
-  getProcMemUse(&size, &resident, &share, &trs, &lrs, &drs, &dt);
-  printf("## VIRT = %ld , RES = %ld , SHR = %ld , CODE = %ld, DATA = %ld\n",
-         size, resident, share, trs, drs);
-  fflush(stdout);
-}
diff --git a/src/debug.h b/src/debug.h
index ec3807c3ba911c6a553aa42d3f8a017662217001..3cafd17b835a1a816e049f3a714bedcaf34d183a 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -49,7 +49,4 @@ void dumpMETISGraph(const char *prefix, idx_t nvtxs, idx_t ncon, idx_t *xadj,
 void dumpCellRanks(const char *prefix, struct cell *cells_top, int nr_cells);
 #endif
 
-void getProcMemUse(long *size, long *resident, long *share, long *trs,
-                   long *lrs, long *drs, long *dt);
-void printProcMemUse(void);
 #endif /* SWIFT_DEBUG_H */
diff --git a/src/engine.c b/src/engine.c
index ee184e8ef317013145414a3d11b4f3d85d745a58..406bd3df511f24537ac08a7499d4c706e8e0f223 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -72,6 +72,7 @@
 #include "logger_io.h"
 #include "map.h"
 #include "memswap.h"
+#include "memuse.h"
 #include "minmax.h"
 #include "outputlist.h"
 #include "parallel_io.h"
@@ -121,6 +122,9 @@ const char *engine_policy_names[] = {"none",
 /** The rank of the engine as a global variable (for messages). */
 int engine_rank;
 
+/** The current step of the engine as a global variable (for messages). */
+int engine_current_step;
+
 /**
  * @brief Data collected from the cells at the end of a time-step
  */
@@ -130,7 +134,7 @@ struct end_of_step_data {
   size_t inhibited, g_inhibited, s_inhibited;
   integertime_t ti_hydro_end_min, ti_hydro_end_max, ti_hydro_beg_max;
   integertime_t ti_gravity_end_min, ti_gravity_end_max, ti_gravity_beg_max;
-  integertime_t ti_stars_end_min;
+  integertime_t ti_stars_end_min, ti_stars_end_max, ti_stars_beg_max;
   struct engine *e;
 };
 
@@ -163,6 +167,7 @@ void engine_addlink(struct engine *e, struct link **l, struct task *t) {
 /**
  * Do the exchange of one type of particles with all the other nodes.
  *
+ * @param label a label for the memory allocations of this particle type.
  * @param counts 2D array with the counts of particles to exchange with
  *               each other node.
  * @param parts the particle data to exchange
@@ -177,15 +182,15 @@ void engine_addlink(struct engine *e, struct link **l, struct task *t) {
  * @result new particle data constructed from all the exchanges with the
  *         given alignment.
  */
-static void *engine_do_redistribute(int *counts, char *parts,
+static void *engine_do_redistribute(const char *label, int *counts, char *parts,
                                     size_t new_nr_parts, size_t sizeofparts,
                                     size_t alignsize, MPI_Datatype mpi_type,
                                     int nr_nodes, int nodeID) {
 
   /* Allocate a new particle array with some extra margin */
   char *parts_new = NULL;
-  if (posix_memalign(
-          (void **)&parts_new, alignsize,
+  if (swift_memalign(
+          label, (void **)&parts_new, alignsize,
           sizeofparts * new_nr_parts * engine_redistribute_alloc_margin) != 0)
     error("Failed to allocate new particle data.");
 
@@ -551,7 +556,8 @@ void engine_redistribute(struct engine *e) {
 
   /* Start by moving inhibited particles to the end of the arrays */
   for (size_t k = 0; k < nr_parts; /* void */) {
-    if (parts[k].time_bin == time_bin_inhibited) {
+    if (parts[k].time_bin == time_bin_inhibited ||
+        parts[k].time_bin == time_bin_not_created) {
       nr_parts -= 1;
 
       /* Swap the particle */
@@ -574,7 +580,8 @@ void engine_redistribute(struct engine *e) {
 
   /* Now move inhibited star particles to the end of the arrays */
   for (size_t k = 0; k < nr_sparts; /* void */) {
-    if (sparts[k].time_bin == time_bin_inhibited) {
+    if (sparts[k].time_bin == time_bin_inhibited ||
+        sparts[k].time_bin == time_bin_not_created) {
       nr_sparts -= 1;
 
       /* Swap the particle */
@@ -594,7 +601,8 @@ void engine_redistribute(struct engine *e) {
 
   /* Finally do the same with the gravity particles */
   for (size_t k = 0; k < nr_gparts; /* void */) {
-    if (gparts[k].time_bin == time_bin_inhibited) {
+    if (gparts[k].time_bin == time_bin_inhibited ||
+        gparts[k].time_bin == time_bin_not_created) {
       nr_gparts -= 1;
 
       /* Swap the particle */
@@ -627,7 +635,7 @@ void engine_redistribute(struct engine *e) {
     error("Failed to allocate counts temporary buffer.");
 
   int *dest;
-  if ((dest = (int *)malloc(sizeof(int) * nr_parts)) == NULL)
+  if ((dest = (int *)swift_malloc("dest", sizeof(int) * nr_parts)) == NULL)
     error("Failed to allocate dest temporary buffer.");
 
   /* Simple index of node IDs, used for mappers over nodes. */
@@ -659,6 +667,12 @@ void engine_redistribute(struct engine *e) {
   for (size_t k = 0; k < nr_parts; k++) {
     const struct part *p = &s->parts[k];
 
+    if (p->time_bin == time_bin_inhibited)
+      error("Inhibited particle found after sorting!");
+
+    if (p->time_bin == time_bin_not_created)
+      error("Inhibited particle found after sorting!");
+
     /* New cell index */
     const int new_cid =
         cell_getid(s->cdim, p->x[0] * s->iwidth[0], p->x[1] * s->iwidth[1],
@@ -690,7 +704,7 @@ void engine_redistribute(struct engine *e) {
     threadpool_map(&e->threadpool, engine_redistribute_savelink_mapper_part,
                    nodes, nr_nodes, sizeof(int), 0, &savelink_data);
   }
-  free(dest);
+  swift_free("dest", dest);
 
   /* Get destination of each s-particle */
   int *s_counts;
@@ -698,7 +712,7 @@ void engine_redistribute(struct engine *e) {
     error("Failed to allocate s_counts temporary buffer.");
 
   int *s_dest;
-  if ((s_dest = (int *)malloc(sizeof(int) * nr_sparts)) == NULL)
+  if ((s_dest = (int *)swift_malloc("s_dest", sizeof(int) * nr_sparts)) == NULL)
     error("Failed to allocate s_dest temporary buffer.");
 
   redist_data.counts = s_counts;
@@ -718,6 +732,12 @@ void engine_redistribute(struct engine *e) {
   for (size_t k = 0; k < nr_sparts; k++) {
     const struct spart *sp = &s->sparts[k];
 
+    if (sp->time_bin == time_bin_inhibited)
+      error("Inhibited particle found after sorting!");
+
+    if (sp->time_bin == time_bin_not_created)
+      error("Inhibited particle found after sorting!");
+
     /* New cell index */
     const int new_cid =
         cell_getid(s->cdim, sp->x[0] * s->iwidth[0], sp->x[1] * s->iwidth[1],
@@ -748,7 +768,7 @@ void engine_redistribute(struct engine *e) {
     threadpool_map(&e->threadpool, engine_redistribute_savelink_mapper_spart,
                    nodes, nr_nodes, sizeof(int), 0, &savelink_data);
   }
-  free(s_dest);
+  swift_free("s_dest", s_dest);
 
   /* Get destination of each g-particle */
   int *g_counts;
@@ -756,7 +776,7 @@ void engine_redistribute(struct engine *e) {
     error("Failed to allocate g_gcount temporary buffer.");
 
   int *g_dest;
-  if ((g_dest = (int *)malloc(sizeof(int) * nr_gparts)) == NULL)
+  if ((g_dest = (int *)swift_malloc("g_dest", sizeof(int) * nr_gparts)) == NULL)
     error("Failed to allocate g_dest temporary buffer.");
 
   redist_data.counts = g_counts;
@@ -776,6 +796,12 @@ void engine_redistribute(struct engine *e) {
   for (size_t k = 0; k < nr_gparts; k++) {
     const struct gpart *gp = &s->gparts[k];
 
+    if (gp->time_bin == time_bin_inhibited)
+      error("Inhibited particle found after sorting!");
+
+    if (gp->time_bin == time_bin_not_created)
+      error("Inhibited particle found after sorting!");
+
     /* New cell index */
     const int new_cid =
         cell_getid(s->cdim, gp->x[0] * s->iwidth[0], gp->x[1] * s->iwidth[1],
@@ -796,7 +822,7 @@ void engine_redistribute(struct engine *e) {
   }
 #endif
 
-  free(g_dest);
+  swift_free("g_dest", g_dest);
 
   /* Get all the counts from all the nodes. */
   if (MPI_Allreduce(MPI_IN_PLACE, counts, nr_nodes * nr_nodes, MPI_INT, MPI_SUM,
@@ -861,34 +887,34 @@ void engine_redistribute(struct engine *e) {
 
   /* SPH particles. */
   void *new_parts = engine_do_redistribute(
-      counts, (char *)s->parts, nr_parts_new, sizeof(struct part), part_align,
-      part_mpi_type, nr_nodes, nodeID);
-  free(s->parts);
+      "parts", counts, (char *)s->parts, nr_parts_new, sizeof(struct part),
+      part_align, part_mpi_type, nr_nodes, nodeID);
+  swift_free("parts", s->parts);
   s->parts = (struct part *)new_parts;
   s->nr_parts = nr_parts_new;
   s->size_parts = engine_redistribute_alloc_margin * nr_parts_new;
 
   /* Extra SPH particle properties. */
-  new_parts = engine_do_redistribute(counts, (char *)s->xparts, nr_parts_new,
-                                     sizeof(struct xpart), xpart_align,
-                                     xpart_mpi_type, nr_nodes, nodeID);
-  free(s->xparts);
+  new_parts = engine_do_redistribute(
+      "xparts", counts, (char *)s->xparts, nr_parts_new, sizeof(struct xpart),
+      xpart_align, xpart_mpi_type, nr_nodes, nodeID);
+  swift_free("xparts", s->xparts);
   s->xparts = (struct xpart *)new_parts;
 
   /* Gravity particles. */
-  new_parts = engine_do_redistribute(g_counts, (char *)s->gparts, nr_gparts_new,
-                                     sizeof(struct gpart), gpart_align,
-                                     gpart_mpi_type, nr_nodes, nodeID);
-  free(s->gparts);
+  new_parts = engine_do_redistribute(
+      "gparts", g_counts, (char *)s->gparts, nr_gparts_new,
+      sizeof(struct gpart), gpart_align, gpart_mpi_type, nr_nodes, nodeID);
+  swift_free("gparts", s->gparts);
   s->gparts = (struct gpart *)new_parts;
   s->nr_gparts = nr_gparts_new;
   s->size_gparts = engine_redistribute_alloc_margin * nr_gparts_new;
 
   /* Star particles. */
-  new_parts = engine_do_redistribute(s_counts, (char *)s->sparts, nr_sparts_new,
-                                     sizeof(struct spart), spart_align,
-                                     spart_mpi_type, nr_nodes, nodeID);
-  free(s->sparts);
+  new_parts = engine_do_redistribute(
+      "sparts", s_counts, (char *)s->sparts, nr_sparts_new,
+      sizeof(struct spart), spart_align, spart_mpi_type, nr_nodes, nodeID);
+  swift_free("sparts", s->sparts);
   s->sparts = (struct spart *)new_parts;
   s->nr_sparts = nr_sparts_new;
   s->size_sparts = engine_redistribute_alloc_margin * nr_sparts_new;
@@ -946,6 +972,7 @@ void engine_redistribute(struct engine *e) {
   /* Verify that the links are correct */
   part_verify_links(s->parts, s->gparts, s->sparts, nr_parts_new, nr_gparts_new,
                     nr_sparts_new, e->verbose);
+
 #endif
 
   /* Be verbose about what just happened. */
@@ -957,6 +984,11 @@ void engine_redistribute(struct engine *e) {
             nodeID, nr_parts_new, nr_sparts_new, nr_gparts_new, my_cells);
   }
 
+  /* Flag that we do not have any extra particles any more */
+  s->nr_extra_parts = 0;
+  s->nr_extra_gparts = 0;
+  s->nr_extra_sparts = 0;
+
   /* Flag that a redistribute has taken place */
   e->step_props |= engine_step_prop_redistribute;
 
@@ -1007,7 +1039,8 @@ void engine_repartition(struct engine *e) {
 
   /* Partitioning requires copies of the particles, so we need to reduce the
    * memory in use to the minimum, we can free the sorting indices and the
-   * tasks as these will be regenerated at the next rebuild. */
+   * tasks as these will be regenerated at the next rebuild. Also the foreign
+   * particle arrays can go as these will be regenerated in proxy exchange. */
 
   /* Sorting indices. */
   if (e->s->cells_top != NULL) space_free_cells(e->s);
@@ -1015,6 +1048,9 @@ void engine_repartition(struct engine *e) {
   /* Task arrays. */
   scheduler_free_tasks(&e->sched);
 
+  /* Foreign parts. */
+  space_free_foreign_parts(e->s);
+
   /* Now comes the tricky part: Exchange particles between all nodes.
      This is done in two steps, first allreducing a matrix of
      how many particles go from where to where, then re-allocating
@@ -1356,15 +1392,15 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
     s->size_parts = (offset_parts + count_parts_in) * engine_parts_size_grow;
     struct part *parts_new = NULL;
     struct xpart *xparts_new = NULL;
-    if (posix_memalign((void **)&parts_new, part_align,
+    if (swift_memalign("parts", (void **)&parts_new, part_align,
                        sizeof(struct part) * s->size_parts) != 0 ||
-        posix_memalign((void **)&xparts_new, xpart_align,
+        swift_memalign("xparts", (void **)&xparts_new, xpart_align,
                        sizeof(struct xpart) * s->size_parts) != 0)
       error("Failed to allocate new part data.");
     memcpy(parts_new, s->parts, sizeof(struct part) * offset_parts);
     memcpy(xparts_new, s->xparts, sizeof(struct xpart) * offset_parts);
-    free(s->parts);
-    free(s->xparts);
+    swift_free("parts", s->parts);
+    swift_free("xparts", s->xparts);
     s->parts = parts_new;
     s->xparts = xparts_new;
 
@@ -1375,15 +1411,16 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
       }
     }
   }
+
   if (offset_sparts + count_sparts_in > s->size_sparts) {
     message("re-allocating sparts array.");
     s->size_sparts = (offset_sparts + count_sparts_in) * engine_parts_size_grow;
     struct spart *sparts_new = NULL;
-    if (posix_memalign((void **)&sparts_new, spart_align,
+    if (swift_memalign("sparts", (void **)&sparts_new, spart_align,
                        sizeof(struct spart) * s->size_sparts) != 0)
       error("Failed to allocate new spart data.");
     memcpy(sparts_new, s->sparts, sizeof(struct spart) * offset_sparts);
-    free(s->sparts);
+    swift_free("sparts", s->sparts);
     s->sparts = sparts_new;
 
     /* Reset the links */
@@ -1393,15 +1430,16 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
       }
     }
   }
+
   if (offset_gparts + count_gparts_in > s->size_gparts) {
     message("re-allocating gparts array.");
     s->size_gparts = (offset_gparts + count_gparts_in) * engine_parts_size_grow;
     struct gpart *gparts_new = NULL;
-    if (posix_memalign((void **)&gparts_new, gpart_align,
+    if (swift_memalign("gparts", (void **)&gparts_new, gpart_align,
                        sizeof(struct gpart) * s->size_gparts) != 0)
       error("Failed to allocate new gpart data.");
     memcpy(gparts_new, s->gparts, sizeof(struct gpart) * offset_gparts);
-    free(s->gparts);
+    swift_free("gparts", s->gparts);
     s->gparts = gparts_new;
 
     /* Reset the links */
@@ -1654,12 +1692,14 @@ void engine_exchange_proxy_multipoles(struct engine *e) {
 
   /* Allocate the buffers for the packed data */
   struct gravity_tensors *buffer_send = NULL;
-  if (posix_memalign((void **)&buffer_send, SWIFT_CACHE_ALIGNMENT,
+  if (swift_memalign("send_gravity_tensors", (void **)&buffer_send,
+                     SWIFT_CACHE_ALIGNMENT,
                      count_send_cells * sizeof(struct gravity_tensors)) != 0)
     error("Unable to allocate memory for multipole transactions");
 
   struct gravity_tensors *buffer_recv = NULL;
-  if (posix_memalign((void **)&buffer_recv, SWIFT_CACHE_ALIGNMENT,
+  if (swift_memalign("recv_gravity_tensors", (void **)&buffer_recv,
+                     SWIFT_CACHE_ALIGNMENT,
                      count_recv_cells * sizeof(struct gravity_tensors)) != 0)
     error("Unable to allocate memory for multipole transactions");
 
@@ -1820,25 +1860,32 @@ void engine_allocate_foreign_particles(struct engine *e) {
 
   /* Allocate space for the foreign particles we will receive */
   if (count_parts_in > s->size_parts_foreign) {
-    if (s->parts_foreign != NULL) free(s->parts_foreign);
+    if (s->parts_foreign != NULL)
+      swift_free("sparts_foreign", s->parts_foreign);
     s->size_parts_foreign = engine_foreign_alloc_margin * count_parts_in;
-    if (posix_memalign((void **)&s->parts_foreign, part_align,
+    if (swift_memalign("parts_foreign", (void **)&s->parts_foreign, part_align,
                        sizeof(struct part) * s->size_parts_foreign) != 0)
       error("Failed to allocate foreign part data.");
   }
+
   /* Allocate space for the foreign particles we will receive */
   if (count_gparts_in > s->size_gparts_foreign) {
-    if (s->gparts_foreign != NULL) free(s->gparts_foreign);
+    if (s->gparts_foreign != NULL)
+      swift_free("gparts_foreign", s->gparts_foreign);
     s->size_gparts_foreign = engine_foreign_alloc_margin * count_gparts_in;
-    if (posix_memalign((void **)&s->gparts_foreign, gpart_align,
+    if (swift_memalign("gparts_foreign", (void **)&s->gparts_foreign,
+                       gpart_align,
                        sizeof(struct gpart) * s->size_gparts_foreign) != 0)
       error("Failed to allocate foreign gpart data.");
   }
+
   /* Allocate space for the foreign particles we will receive */
   if (count_sparts_in > s->size_sparts_foreign) {
-    if (s->sparts_foreign != NULL) free(s->sparts_foreign);
+    if (s->sparts_foreign != NULL)
+      swift_free("sparts_foreign", s->sparts_foreign);
     s->size_sparts_foreign = engine_foreign_alloc_margin * count_sparts_in;
-    if (posix_memalign((void **)&s->sparts_foreign, spart_align,
+    if (swift_memalign("sparts_foreign", (void **)&s->sparts_foreign,
+                       spart_align,
                        sizeof(struct spart) * s->size_sparts_foreign) != 0)
       error("Failed to allocate foreign spart data.");
   }
@@ -2335,57 +2382,45 @@ void engine_barrier(struct engine *e) {
  * @param c The #cell to recurse into.
  * @param e The #engine.
  */
-void engine_collect_end_of_step_recurse(struct cell *c,
-                                        const struct engine *e) {
+void engine_collect_end_of_step_recurse_hydro(struct cell *c,
+                                              const struct engine *e) {
 
 /* Skip super-cells (Their values are already set) */
 #ifdef WITH_MPI
-  if (c->timestep != NULL || c->mpi.recv_ti != NULL) return;
+  if (c->timestep != NULL || c->mpi.hydro.recv_ti != NULL) return;
 #else
   if (c->timestep != NULL) return;
 #endif /* WITH_MPI */
 
+#ifdef SWIFT_DEBUG_CHECKS
+    /* if (!c->split) error("Reached a leaf without finding a time-step task!
+     * c->depth=%d c->maxdepth=%d c->count=%d c->node=%d", */
+    /* 		       c->depth, c->maxdepth, c->hydro.count, c->nodeID); */
+#endif
+
   /* Counters for the different quantities. */
-  size_t updated = 0, g_updated = 0, s_updated = 0;
-  size_t inhibited = 0, g_inhibited = 0, s_inhibited = 0;
+  size_t updated = 0, inhibited = 0;
   integertime_t ti_hydro_end_min = max_nr_timesteps, ti_hydro_end_max = 0,
                 ti_hydro_beg_max = 0;
-  integertime_t ti_gravity_end_min = max_nr_timesteps, ti_gravity_end_max = 0,
-                ti_gravity_beg_max = 0;
-  integertime_t ti_stars_end_min = max_nr_timesteps;
 
   /* Collect the values from the progeny. */
   for (int k = 0; k < 8; k++) {
     struct cell *cp = c->progeny[k];
-    if (cp != NULL &&
-        (cp->hydro.count > 0 || cp->grav.count > 0 || cp->stars.count > 0)) {
+    if (cp != NULL && cp->hydro.count > 0) {
 
       /* Recurse */
-      engine_collect_end_of_step_recurse(cp, e);
+      engine_collect_end_of_step_recurse_hydro(cp, e);
 
       /* And update */
       ti_hydro_end_min = min(ti_hydro_end_min, cp->hydro.ti_end_min);
       ti_hydro_end_max = max(ti_hydro_end_max, cp->hydro.ti_end_max);
       ti_hydro_beg_max = max(ti_hydro_beg_max, cp->hydro.ti_beg_max);
 
-      ti_gravity_end_min = min(ti_gravity_end_min, cp->grav.ti_end_min);
-      ti_gravity_end_max = max(ti_gravity_end_max, cp->grav.ti_end_max);
-      ti_gravity_beg_max = max(ti_gravity_beg_max, cp->grav.ti_beg_max);
-
-      ti_stars_end_min = min(ti_stars_end_min, cp->stars.ti_end_min);
-
       updated += cp->hydro.updated;
-      g_updated += cp->grav.updated;
-      s_updated += cp->stars.updated;
-
       inhibited += cp->hydro.inhibited;
-      g_inhibited += cp->grav.inhibited;
-      s_inhibited += cp->stars.inhibited;
 
       /* Collected, so clear for next time. */
       cp->hydro.updated = 0;
-      cp->grav.updated = 0;
-      cp->stars.updated = 0;
     }
   }
 
@@ -2393,16 +2428,125 @@ void engine_collect_end_of_step_recurse(struct cell *c,
   c->hydro.ti_end_min = ti_hydro_end_min;
   c->hydro.ti_end_max = ti_hydro_end_max;
   c->hydro.ti_beg_max = ti_hydro_beg_max;
-  c->grav.ti_end_min = ti_gravity_end_min;
-  c->grav.ti_end_max = ti_gravity_end_max;
-  c->grav.ti_beg_max = ti_gravity_beg_max;
-  c->stars.ti_end_min = ti_stars_end_min;
   c->hydro.updated = updated;
-  c->grav.updated = g_updated;
-  c->stars.updated = s_updated;
   c->hydro.inhibited = inhibited;
-  c->grav.inhibited = g_inhibited;
-  c->stars.inhibited = s_inhibited;
+}
+
+/**
+ * @brief Recursive function gathering end-of-step data.
+ *
+ * We recurse until we encounter a timestep or time-step MPI recv task
+ * as the values will have been set at that level. We then bring these
+ * values upwards.
+ *
+ * @param c The #cell to recurse into.
+ * @param e The #engine.
+ */
+void engine_collect_end_of_step_recurse_grav(struct cell *c,
+                                             const struct engine *e) {
+
+/* Skip super-cells (Their values are already set) */
+#ifdef WITH_MPI
+  if (c->timestep != NULL || c->mpi.grav.recv_ti != NULL) return;
+#else
+  if (c->timestep != NULL) return;
+#endif /* WITH_MPI */
+
+#ifdef SWIFT_DEBUG_CHECKS
+    //  if (!c->split) error("Reached a leaf without finding a time-step
+    //  task!");
+#endif
+
+  /* Counters for the different quantities. */
+  size_t updated = 0, inhibited = 0;
+  integertime_t ti_grav_end_min = max_nr_timesteps, ti_grav_end_max = 0,
+                ti_grav_beg_max = 0;
+
+  /* Collect the values from the progeny. */
+  for (int k = 0; k < 8; k++) {
+    struct cell *cp = c->progeny[k];
+    if (cp != NULL && cp->grav.count > 0) {
+
+      /* Recurse */
+      engine_collect_end_of_step_recurse_grav(cp, e);
+
+      /* And update */
+      ti_grav_end_min = min(ti_grav_end_min, cp->grav.ti_end_min);
+      ti_grav_end_max = max(ti_grav_end_max, cp->grav.ti_end_max);
+      ti_grav_beg_max = max(ti_grav_beg_max, cp->grav.ti_beg_max);
+
+      updated += cp->grav.updated;
+      inhibited += cp->grav.inhibited;
+
+      /* Collected, so clear for next time. */
+      cp->grav.updated = 0;
+    }
+  }
+
+  /* Store the collected values in the cell. */
+  c->grav.ti_end_min = ti_grav_end_min;
+  c->grav.ti_end_max = ti_grav_end_max;
+  c->grav.ti_beg_max = ti_grav_beg_max;
+  c->grav.updated = updated;
+  c->grav.inhibited = inhibited;
+}
+
+/**
+ * @brief Recursive function gathering end-of-step data.
+ *
+ * We recurse until we encounter a timestep or time-step MPI recv task
+ * as the values will have been set at that level. We then bring these
+ * values upwards.
+ *
+ * @param c The #cell to recurse into.
+ * @param e The #engine.
+ */
+void engine_collect_end_of_step_recurse_stars(struct cell *c,
+                                              const struct engine *e) {
+
+/* Skip super-cells (Their values are already set) */
+#ifdef WITH_MPI
+  if (c->timestep != NULL || c->mpi.stars.recv_ti != NULL) return;
+#else
+  if (c->timestep != NULL) return;
+#endif /* WITH_MPI */
+
+#ifdef SWIFT_DEBUG_CHECKS
+    // if (!c->split) error("Reached a leaf without finding a time-step task!");
+#endif
+
+  /* Counters for the different quantities. */
+  size_t updated = 0, inhibited = 0;
+  integertime_t ti_stars_end_min = max_nr_timesteps, ti_stars_end_max = 0,
+                ti_stars_beg_max = 0;
+
+  /* Collect the values from the progeny. */
+  for (int k = 0; k < 8; k++) {
+    struct cell *cp = c->progeny[k];
+    if (cp != NULL && cp->stars.count > 0) {
+
+      /* Recurse */
+      engine_collect_end_of_step_recurse_stars(cp, e);
+
+      /* And update */
+      ti_stars_end_min = min(ti_stars_end_min, cp->stars.ti_end_min);
+      ti_stars_end_max = max(ti_stars_end_max, cp->stars.ti_end_max);
+      ti_stars_beg_max = max(ti_stars_beg_max, cp->stars.ti_beg_max);
+
+      updated += cp->stars.updated;
+      inhibited += cp->stars.inhibited;
+
+      /* Collected, so clear for next time. */
+      cp->stars.updated = 0;
+    }
+  }
+
+  /* Store the collected values in the cell. */
+  c->stars.ti_end_min = ti_stars_end_min;
+  c->stars.ti_end_max = ti_stars_end_max;
+  c->stars.ti_beg_max = ti_stars_beg_max;
+  c->stars.updated = updated;
+  c->stars.inhibited = inhibited;
 }
 
 /**
@@ -2421,6 +2565,9 @@ void engine_collect_end_of_step_mapper(void *map_data, int num_elements,
 
   struct end_of_step_data *data = (struct end_of_step_data *)extra_data;
   const struct engine *e = data->e;
+  const int with_hydro = (e->policy & engine_policy_hydro);
+  const int with_self_grav = (e->policy & engine_policy_self_gravity);
+  const int with_stars = (e->policy & engine_policy_stars);
   struct space *s = e->s;
   int *local_cells = (int *)map_data;
 
@@ -2431,7 +2578,8 @@ void engine_collect_end_of_step_mapper(void *map_data, int num_elements,
                 ti_hydro_beg_max = 0;
   integertime_t ti_gravity_end_min = max_nr_timesteps, ti_gravity_end_max = 0,
                 ti_gravity_beg_max = 0;
-  integertime_t ti_stars_end_min = max_nr_timesteps;
+  integertime_t ti_stars_end_min = max_nr_timesteps, ti_stars_end_max = 0,
+                ti_stars_beg_max = 0;
 
   for (int ind = 0; ind < num_elements; ind++) {
     struct cell *c = &s->cells_top[local_cells[ind]];
@@ -2439,7 +2587,15 @@ void engine_collect_end_of_step_mapper(void *map_data, int num_elements,
     if (c->hydro.count > 0 || c->grav.count > 0 || c->stars.count > 0) {
 
       /* Make the top-cells recurse */
-      engine_collect_end_of_step_recurse(c, e);
+      if (with_hydro) {
+        engine_collect_end_of_step_recurse_hydro(c, e);
+      }
+      if (with_self_grav) {
+        engine_collect_end_of_step_recurse_grav(c, e);
+      }
+      if (with_stars) {
+        engine_collect_end_of_step_recurse_stars(c, e);
+      }
 
       /* And aggregate */
       if (c->hydro.ti_end_min > e->ti_current)
@@ -2454,6 +2610,8 @@ void engine_collect_end_of_step_mapper(void *map_data, int num_elements,
 
       if (c->stars.ti_end_min > e->ti_current)
         ti_stars_end_min = min(ti_stars_end_min, c->stars.ti_end_min);
+      ti_stars_end_max = max(ti_stars_end_max, c->stars.ti_end_max);
+      ti_stars_beg_max = max(ti_stars_beg_max, c->stars.ti_beg_max);
 
       updated += c->hydro.updated;
       g_updated += c->grav.updated;
@@ -2496,6 +2654,8 @@ void engine_collect_end_of_step_mapper(void *map_data, int num_elements,
 
     if (ti_stars_end_min > e->ti_current)
       data->ti_stars_end_min = min(ti_stars_end_min, data->ti_stars_end_min);
+    data->ti_stars_end_max = max(ti_stars_end_max, data->ti_stars_end_max);
+    data->ti_stars_beg_max = max(ti_stars_beg_max, data->ti_stars_beg_max);
   }
 
   if (lock_unlock(&s->lock) != 0) error("Failed to unlock the space");
@@ -2529,6 +2689,8 @@ void engine_collect_end_of_step(struct engine *e, int apply) {
   data.ti_hydro_beg_max = 0;
   data.ti_gravity_end_min = max_nr_timesteps, data.ti_gravity_end_max = 0,
   data.ti_gravity_beg_max = 0;
+  data.ti_stars_end_min = max_nr_timesteps, data.ti_stars_end_max = 0,
+  data.ti_stars_beg_max = 0;
   data.e = e;
 
   /* Collect information from the local top-level cells */
@@ -2546,7 +2708,8 @@ void engine_collect_end_of_step(struct engine *e, int apply) {
       &e->collect_group1, data.updated, data.g_updated, data.s_updated,
       data.inhibited, data.g_inhibited, data.s_inhibited, data.ti_hydro_end_min,
       data.ti_hydro_end_max, data.ti_hydro_beg_max, data.ti_gravity_end_min,
-      data.ti_gravity_end_max, data.ti_gravity_beg_max, e->forcerebuild,
+      data.ti_gravity_end_max, data.ti_gravity_beg_max, data.ti_stars_end_min,
+      data.ti_stars_end_max, data.ti_stars_beg_max, e->forcerebuild,
       e->s->tot_cells, e->sched.nr_tasks,
       (float)e->sched.nr_tasks / (float)e->s->tot_cells);
 
@@ -2724,7 +2887,11 @@ void engine_skip_force_and_kick(struct engine *e) {
         t->type == task_type_star_formation ||
         t->type == task_type_extra_ghost ||
         t->subtype == task_subtype_gradient ||
-        t->subtype == task_subtype_stars_feedback)
+        t->subtype == task_subtype_stars_feedback ||
+        t->subtype == task_subtype_tend_part ||
+        t->subtype == task_subtype_tend_gpart ||
+        t->subtype == task_subtype_tend_spart ||
+        t->subtype == task_subtype_rho || t->subtype == task_subtype_gpart)
       t->skip = 1;
   }
 
@@ -3107,6 +3274,7 @@ void engine_step(struct engine *e) {
   e->max_active_bin = get_max_active_bin(e->ti_end_min);
   e->min_active_bin = get_min_active_bin(e->ti_current, e->ti_old);
   e->step += 1;
+  engine_current_step = e->step;
   e->step_props = engine_step_prop_none;
 
   /* When restarting, move everyone to the current time. */
@@ -3352,7 +3520,7 @@ void engine_check_for_dumps(struct engine *e) {
         /* Free the memory allocated for VELOCIraptor i/o. */
         if (with_stf && e->snapshot_invoke_stf) {
 #ifdef HAVE_VELOCIRAPTOR
-          free(e->s->gpart_group_data);
+          swift_free("gpart_group_data", e->s->gpart_group_data);
           e->s->gpart_group_data = NULL;
 #endif
         }
@@ -3494,6 +3662,14 @@ void engine_unskip(struct engine *e) {
 
   const ticks tic = getticks();
   struct space *s = e->s;
+  const int nodeID = e->nodeID;
+
+  const int with_hydro = e->policy & engine_policy_hydro;
+  const int with_self_grav = e->policy & engine_policy_self_gravity;
+  const int with_ext_grav = e->policy & engine_policy_external_gravity;
+  const int with_grav = (with_self_grav || with_ext_grav);
+  const int with_stars = e->policy & engine_policy_stars;
+  const int with_feedback = e->policy & engine_policy_feedback;
 
 #ifdef WITH_PROFILER
   static int count = 0;
@@ -3508,11 +3684,10 @@ void engine_unskip(struct engine *e) {
   for (int k = 0; k < s->nr_local_cells_with_tasks; k++) {
     struct cell *c = &s->cells_top[local_cells[k]];
 
-    if ((e->policy & engine_policy_hydro && cell_is_active_hydro(c, e)) ||
-        (e->policy & engine_policy_self_gravity &&
-         cell_is_active_gravity(c, e)) ||
-        (e->policy & engine_policy_external_gravity &&
-         cell_is_active_gravity(c, e))) {
+    if ((with_hydro && cell_is_active_hydro(c, e)) ||
+        (with_grav && cell_is_active_gravity(c, e)) ||
+        (with_feedback && cell_is_active_stars(c, e)) ||
+        (with_stars && c->nodeID == nodeID && cell_is_active_stars(c, e))) {
 
       if (num_active_cells != k)
         memswap(&local_cells[k], &local_cells[num_active_cells], sizeof(int));
@@ -3881,17 +4056,18 @@ void engine_split(struct engine *e, struct partition *initial_partition) {
   s->size_parts = s->nr_parts * engine_redistribute_alloc_margin;
   struct part *parts_new = NULL;
   struct xpart *xparts_new = NULL;
-  if (posix_memalign((void **)&parts_new, part_align,
+  if (swift_memalign("parts", (void **)&parts_new, part_align,
                      sizeof(struct part) * s->size_parts) != 0 ||
-      posix_memalign((void **)&xparts_new, xpart_align,
+      swift_memalign("xparts", (void **)&xparts_new, xpart_align,
                      sizeof(struct xpart) * s->size_parts) != 0)
     error("Failed to allocate new part data.");
+
   if (s->nr_parts > 0) {
     memcpy(parts_new, s->parts, sizeof(struct part) * s->nr_parts);
     memcpy(xparts_new, s->xparts, sizeof(struct xpart) * s->nr_parts);
   }
-  free(s->parts);
-  free(s->xparts);
+  swift_free("parts", s->parts);
+  swift_free("xparts", s->xparts);
   s->parts = parts_new;
   s->xparts = xparts_new;
 
@@ -3905,12 +4081,13 @@ void engine_split(struct engine *e, struct partition *initial_partition) {
             (size_t)(s->nr_sparts * engine_redistribute_alloc_margin));
   s->size_sparts = s->nr_sparts * engine_redistribute_alloc_margin;
   struct spart *sparts_new = NULL;
-  if (posix_memalign((void **)&sparts_new, spart_align,
+  if (swift_memalign("sparts", (void **)&sparts_new, spart_align,
                      sizeof(struct spart) * s->size_sparts) != 0)
     error("Failed to allocate new spart data.");
+
   if (s->nr_sparts > 0)
     memcpy(sparts_new, s->sparts, sizeof(struct spart) * s->nr_sparts);
-  free(s->sparts);
+  swift_free("sparts", s->sparts);
   s->sparts = sparts_new;
 
   /* Re-link the gparts to their sparts. */
@@ -3923,12 +4100,13 @@ void engine_split(struct engine *e, struct partition *initial_partition) {
             (size_t)(s->nr_gparts * engine_redistribute_alloc_margin));
   s->size_gparts = s->nr_gparts * engine_redistribute_alloc_margin;
   struct gpart *gparts_new = NULL;
-  if (posix_memalign((void **)&gparts_new, gpart_align,
+  if (swift_memalign("gparts", (void **)&gparts_new, gpart_align,
                      sizeof(struct gpart) * s->size_gparts) != 0)
     error("Failed to allocate new gpart data.");
+
   if (s->nr_gparts > 0)
     memcpy(gparts_new, s->gparts, sizeof(struct gpart) * s->nr_gparts);
-  free(s->gparts);
+  swift_free("gparts", s->gparts);
   s->gparts = gparts_new;
 
   /* Re-link the parts. */
@@ -3986,7 +4164,8 @@ void engine_collect_stars_counter(struct engine *e) {
   }
 
   /* Get all sparticles */
-  struct spart *sparts = (struct spart *)malloc(total * sizeof(struct spart));
+  struct spart *sparts =
+      (struct spart *)swift_malloc("sparts", total * sizeof(struct spart));
   err = MPI_Allgatherv(e->s->sparts_foreign, e->s->nr_sparts_foreign,
                        spart_mpi_type, sparts, n_sparts_int, displs,
                        spart_mpi_type, MPI_COMM_WORLD);
@@ -4020,8 +4199,8 @@ void engine_collect_stars_counter(struct engine *e) {
   }
 
   free(n_sparts);
-  free(n_sparts_in);
-  free(sparts);
+  free(n_sparts_int);
+  swift_free("sparts", sparts);
 #endif
 }
 
@@ -4858,9 +5037,10 @@ void engine_config(int restart, struct engine *e, struct swift_params *params,
       parser_get_opt_param_int(params, "Scheduler:mpi_message_limit", 4) * 1024;
 
   /* Allocate and init the threads. */
-  if (posix_memalign((void **)&e->runners, SWIFT_CACHE_ALIGNMENT,
+  if (swift_memalign("runners", (void **)&e->runners, SWIFT_CACHE_ALIGNMENT,
                      e->nr_threads * sizeof(struct runner)) != 0)
     error("Failed to allocate threads array.");
+
   for (int k = 0; k < e->nr_threads; k++) {
     e->runners[k].id = k;
     e->runners[k].e = e;
@@ -5365,14 +5545,14 @@ void engine_clean(struct engine *e) {
     gravity_cache_clean(&e->runners[i].ci_gravity_cache);
     gravity_cache_clean(&e->runners[i].cj_gravity_cache);
   }
-  free(e->runners);
+  swift_free("runners", e->runners);
   free(e->snapshot_units);
 
   output_list_clean(&e->output_list_snapshots);
   output_list_clean(&e->output_list_stats);
   output_list_clean(&e->output_list_stf);
 
-  free(e->links);
+  swift_free("links", e->links);
 #if defined(WITH_LOGGER)
   logger_clean(e->logger);
   free(e->logger);
diff --git a/src/engine.h b/src/engine.h
index 0e0e9895a8b0d1928e48c52ad760d2303447c24d..e0c52dafadeb2996600e3e3b01349ae718c985dc 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -114,6 +114,11 @@ enum engine_step_properties {
  */
 extern int engine_rank;
 
+/**
+ * @brief The current step as a global variable (for messages).
+ */
+extern int engine_current_step;
+
 /* Data structure for the engine. */
 struct engine {
 
@@ -189,6 +194,15 @@ struct engine {
   /* Maximal gravity ti_beg for the next time-step */
   integertime_t ti_gravity_beg_max;
 
+  /* Minimal stars ti_end for the next time-step */
+  integertime_t ti_stars_end_min;
+
+  /* Maximal stars ti_end for the next time-step */
+  integertime_t ti_stars_end_max;
+
+  /* Maximal stars ti_beg for the next time-step */
+  integertime_t ti_stars_beg_max;
+
   /* Minimal overall ti_end for the next time-step */
   integertime_t ti_end_min;
 
diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index d1858f87ff0bfdfee878f2e53b81e100812fd0a5..aaf8bc677b3cd6de21cdbf8d74393263a816f82f 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -61,7 +61,8 @@
  * @param t_grav The send_grav #task, if it has already been created.
  */
 void engine_addtasks_send_gravity(struct engine *e, struct cell *ci,
-                                  struct cell *cj, struct task *t_grav) {
+                                  struct cell *cj, struct task *t_grav,
+                                  struct task *t_ti) {
 
 #ifdef WITH_MPI
   struct link *l = NULL;
@@ -86,22 +87,28 @@ void engine_addtasks_send_gravity(struct engine *e, struct cell *ci,
       t_grav = scheduler_addtask(s, task_type_send, task_subtype_gpart,
                                  ci->mpi.tag, 0, ci, cj);
 
+      t_ti = scheduler_addtask(s, task_type_send, task_subtype_tend_gpart,
+                               ci->mpi.tag, 0, ci, cj);
+
       /* The sends should unlock the down pass. */
       scheduler_addunlock(s, t_grav, ci->grav.super->grav.down);
 
       /* Drift before you send */
       scheduler_addunlock(s, ci->grav.super->grav.drift, t_grav);
+
+      scheduler_addunlock(s, ci->super->timestep, t_ti);
     }
 
     /* Add them to the local cell. */
     engine_addlink(e, &ci->mpi.grav.send, t_grav);
+    engine_addlink(e, &ci->mpi.grav.send_ti, t_ti);
   }
 
   /* Recurse? */
   if (ci->split)
     for (int k = 0; k < 8; k++)
       if (ci->progeny[k] != NULL)
-        engine_addtasks_send_gravity(e, ci->progeny[k], cj, t_grav);
+        engine_addtasks_send_gravity(e, ci->progeny[k], cj, t_grav, t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -120,7 +127,8 @@ void engine_addtasks_send_gravity(struct engine *e, struct cell *ci,
  */
 void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
                                 struct cell *cj, struct task *t_xv,
-                                struct task *t_rho, struct task *t_gradient) {
+                                struct task *t_rho, struct task *t_gradient,
+                                struct task *t_ti) {
 
 #ifdef WITH_MPI
   struct link *l = NULL;
@@ -152,6 +160,9 @@ void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
                                      ci->mpi.tag, 0, ci, cj);
 #endif
 
+      t_ti = scheduler_addtask(s, task_type_send, task_subtype_tend_part,
+                               ci->mpi.tag, 0, ci, cj);
+
 #ifdef EXTRA_HYDRO_LOOP
 
       scheduler_addunlock(s, t_gradient, ci->hydro.super->hydro.end_force);
@@ -184,6 +195,8 @@ void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
 
       /* Drift before you send */
       scheduler_addunlock(s, ci->hydro.super->hydro.drift, t_xv);
+
+      scheduler_addunlock(s, ci->super->timestep, t_ti);
     }
 
     /* Add them to the local cell. */
@@ -192,6 +205,7 @@ void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
 #ifdef EXTRA_HYDRO_LOOP
     engine_addlink(e, &ci->mpi.hydro.send_gradient, t_gradient);
 #endif
+    engine_addlink(e, &ci->mpi.hydro.send_ti, t_ti);
   }
 
   /* Recurse? */
@@ -199,7 +213,7 @@ void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
     for (int k = 0; k < 8; k++)
       if (ci->progeny[k] != NULL)
         engine_addtasks_send_hydro(e, ci->progeny[k], cj, t_xv, t_rho,
-                                   t_gradient);
+                                   t_gradient, t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -215,7 +229,8 @@ void engine_addtasks_send_hydro(struct engine *e, struct cell *ci,
  * @param t_feedback The send_feed #task, if it has already been created.
  */
 void engine_addtasks_send_stars(struct engine *e, struct cell *ci,
-                                struct cell *cj, struct task *t_feedback) {
+                                struct cell *cj, struct task *t_feedback,
+                                struct task *t_ti) {
 
 #ifdef WITH_MPI
 
@@ -241,6 +256,9 @@ void engine_addtasks_send_stars(struct engine *e, struct cell *ci,
       t_feedback = scheduler_addtask(s, task_type_send, task_subtype_spart,
                                      ci->mpi.tag, 0, ci, cj);
 
+      t_ti = scheduler_addtask(s, task_type_send, task_subtype_tend_spart,
+                               ci->mpi.tag, 0, ci, cj);
+
       /* The send_stars task should unlock the super_cell's kick task. */
       scheduler_addunlock(s, t_feedback, ci->hydro.super->stars.stars_out);
 
@@ -249,98 +267,19 @@ void engine_addtasks_send_stars(struct engine *e, struct cell *ci,
 
       /* Drift before you send */
       scheduler_addunlock(s, ci->hydro.super->stars.drift, t_feedback);
-    }
-
-    engine_addlink(e, &ci->mpi.stars.send, t_feedback);
-  }
-
-  /* Recurse? */
-  if (ci->split)
-    for (int k = 0; k < 8; k++)
-      if (ci->progeny[k] != NULL)
-        engine_addtasks_send_stars(e, ci->progeny[k], cj, t_feedback);
-
-#else
-  error("SWIFT was not compiled with MPI support.");
-#endif
-}
-
-/**
- * @brief Add send tasks for the time-step to a hierarchy of cells.
- *
- * @param e The #engine.
- * @param ci The sending #cell.
- * @param cj Dummy cell containing the nodeID of the receiving node.
- * @param t_ti The send_ti #task, if it has already been created.
- * @param t_limiter The send_limiter #task, if already created.
- * @param with_limiter Are we running with the time-step limiter?
- */
-void engine_addtasks_send_timestep(struct engine *e, struct cell *ci,
-                                   struct cell *cj, struct task *t_ti,
-                                   struct task *t_limiter,
-                                   const int with_limiter) {
 
-#ifdef WITH_MPI
-  struct link *l = NULL;
-  struct scheduler *s = &e->sched;
-  const int nodeID = cj->nodeID;
-
-  /* Check if any of the gravity tasks are for the target node. */
-  for (l = ci->grav.grav; l != NULL; l = l->next)
-    if (l->t->ci->nodeID == nodeID ||
-        (l->t->cj != NULL && l->t->cj->nodeID == nodeID))
-      break;
-
-  /* Check whether instead any of the hydro tasks are for the target node. */
-  if (l == NULL)
-    for (l = ci->hydro.density; l != NULL; l = l->next)
-      if (l->t->ci->nodeID == nodeID ||
-          (l->t->cj != NULL && l->t->cj->nodeID == nodeID))
-        break;
-
-  if (l == NULL)
-    for (l = ci->stars.density; l != NULL; l = l->next)
-      if (l->t->ci->nodeID == nodeID ||
-          (l->t->cj != NULL && l->t->cj->nodeID == nodeID))
-        break;
-
-  /* If found anything, attach send tasks. */
-  if (l != NULL) {
-
-    /* Create the tasks and their dependencies? */
-    if (t_ti == NULL) {
-
-      /* Make sure this cell is tagged. */
-      cell_ensure_tagged(ci);
-
-      t_ti = scheduler_addtask(s, task_type_send, task_subtype_tend,
-                               ci->mpi.tag, 0, ci, cj);
-
-      if (with_limiter)
-        t_limiter = scheduler_addtask(s, task_type_send, task_subtype_limiter,
-                                      ci->mpi.tag, 0, ci, cj);
-
-      /* The super-cell's timestep task should unlock the send_ti task. */
       scheduler_addunlock(s, ci->super->timestep, t_ti);
-      if (with_limiter) scheduler_addunlock(s, t_limiter, ci->super->timestep);
-      if (with_limiter)
-        scheduler_addunlock(s, t_limiter, ci->super->timestep_limiter);
-      if (with_limiter) scheduler_addunlock(s, ci->super->kick2, t_limiter);
-      if (with_limiter)
-        scheduler_addunlock(s, ci->super->timestep_limiter, t_ti);
     }
 
-    /* Add them to the local cell. */
-    engine_addlink(e, &ci->mpi.send_ti, t_ti);
-    if (with_limiter) engine_addlink(e, &ci->mpi.limiter.send, t_limiter);
+    engine_addlink(e, &ci->mpi.stars.send, t_feedback);
+    engine_addlink(e, &ci->mpi.stars.send_ti, t_ti);
   }
 
   /* Recurse? */
   if (ci->split)
     for (int k = 0; k < 8; k++)
       if (ci->progeny[k] != NULL)
-        engine_addtasks_send_timestep(e, ci->progeny[k], cj, t_ti, t_limiter,
-                                      with_limiter);
+        engine_addtasks_send_stars(e, ci->progeny[k], cj, t_feedback, t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -355,10 +294,11 @@ void engine_addtasks_send_timestep(struct engine *e, struct cell *ci,
  * @param t_xv The recv_xv #task, if it has already been created.
  * @param t_rho The recv_rho #task, if it has already been created.
  * @param t_gradient The recv_gradient #task, if it has already been created.
+ * @param t_ti The recv_ti_end #task, if it has already been created.
  */
 void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
                                 struct task *t_xv, struct task *t_rho,
-                                struct task *t_gradient) {
+                                struct task *t_gradient, struct task *t_ti) {
 
 #ifdef WITH_MPI
   struct scheduler *s = &e->sched;
@@ -380,11 +320,15 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
     t_gradient = scheduler_addtask(s, task_type_recv, task_subtype_gradient,
                                    c->mpi.tag, 0, c, NULL);
 #endif
+
+    t_ti = scheduler_addtask(s, task_type_recv, task_subtype_tend_part,
+                             c->mpi.tag, 0, c, NULL);
   }
 
   c->mpi.hydro.recv_xv = t_xv;
   c->mpi.hydro.recv_rho = t_rho;
   c->mpi.hydro.recv_gradient = t_gradient;
+  c->mpi.hydro.recv_ti = t_ti;
 
   /* Add dependencies. */
   if (c->hydro.sorts != NULL) {
@@ -403,10 +347,12 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
   }
   for (struct link *l = c->hydro.force; l != NULL; l = l->next) {
     scheduler_addunlock(s, t_gradient, l->t);
+    scheduler_addunlock(s, l->t, t_ti);
   }
 #else
   for (struct link *l = c->hydro.force; l != NULL; l = l->next) {
     scheduler_addunlock(s, t_rho, l->t);
+    scheduler_addunlock(s, l->t, t_ti);
   }
 #endif
 
@@ -419,7 +365,8 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
   if (c->split)
     for (int k = 0; k < 8; k++)
       if (c->progeny[k] != NULL)
-        engine_addtasks_recv_hydro(e, c->progeny[k], t_xv, t_rho, t_gradient);
+        engine_addtasks_recv_hydro(e, c->progeny[k], t_xv, t_rho, t_gradient,
+                                   t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -434,7 +381,7 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
  * @param t_feedback The recv_feed #task, if it has already been created.
  */
 void engine_addtasks_recv_stars(struct engine *e, struct cell *c,
-                                struct task *t_feedback) {
+                                struct task *t_feedback, struct task *t_ti) {
 
 #ifdef WITH_MPI
   struct scheduler *s = &e->sched;
@@ -450,9 +397,13 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c,
     /* Create the tasks. */
     t_feedback = scheduler_addtask(s, task_type_recv, task_subtype_spart,
                                    c->mpi.tag, 0, c, NULL);
+
+    t_ti = scheduler_addtask(s, task_type_recv, task_subtype_tend_spart,
+                             c->mpi.tag, 0, c, NULL);
   }
 
   c->mpi.stars.recv = t_feedback;
+  c->mpi.stars.recv_ti = t_ti;
 
 #ifdef SWIFT_DEBUG_CHECKS
   if (c->nodeID == e->nodeID) error("Local cell!");
@@ -466,13 +417,14 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c,
 
   for (struct link *l = c->stars.feedback; l != NULL; l = l->next) {
     scheduler_addunlock(s, t_feedback, l->t);
+    scheduler_addunlock(s, l->t, t_ti);
   }
 
   /* Recurse? */
   if (c->split)
     for (int k = 0; k < 8; k++)
       if (c->progeny[k] != NULL)
-        engine_addtasks_recv_stars(e, c->progeny[k], t_feedback);
+        engine_addtasks_recv_stars(e, c->progeny[k], t_feedback, t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -487,7 +439,7 @@ void engine_addtasks_recv_stars(struct engine *e, struct cell *c,
  * @param t_grav The recv_gpart #task, if it has already been created.
  */
 void engine_addtasks_recv_gravity(struct engine *e, struct cell *c,
-                                  struct task *t_grav) {
+                                  struct task *t_grav, struct task *t_ti) {
 
 #ifdef WITH_MPI
   struct scheduler *s = &e->sched;
@@ -503,89 +455,24 @@ void engine_addtasks_recv_gravity(struct engine *e, struct cell *c,
     /* Create the tasks. */
     t_grav = scheduler_addtask(s, task_type_recv, task_subtype_gpart,
                                c->mpi.tag, 0, c, NULL);
-  }
 
-  c->mpi.grav.recv = t_grav;
-
-  for (struct link *l = c->grav.grav; l != NULL; l = l->next)
-    scheduler_addunlock(s, t_grav, l->t);
-
-  /* Recurse? */
-  if (c->split)
-    for (int k = 0; k < 8; k++)
-      if (c->progeny[k] != NULL)
-        engine_addtasks_recv_gravity(e, c->progeny[k], t_grav);
-
-#else
-  error("SWIFT was not compiled with MPI support.");
-#endif
-}
-
-/**
- * @brief Add recv tasks for gravity pairs to a hierarchy of cells.
- *
- * @param e The #engine.
- * @param c The foreign #cell.
- * @param t_ti The recv_ti #task, if already been created.
- * @param t_limiter The recv_limiter #task, if already created.
- * @param with_limiter Are we running with the time-step limiter?
- */
-void engine_addtasks_recv_timestep(struct engine *e, struct cell *c,
-                                   struct task *t_ti, struct task *t_limiter,
-                                   const int with_limiter) {
-
-#ifdef WITH_MPI
-  struct scheduler *s = &e->sched;
-
-  /* Have we reached a level where there are any self/pair tasks ? */
-  if (t_ti == NULL && (c->grav.grav != NULL || c->hydro.density != NULL)) {
-
-#ifdef SWIFT_DEBUG_CHECKS
-    /* Make sure this cell has a valid tag. */
-    if (c->mpi.tag < 0) error("Trying to receive from untagged cell.");
-#endif  // SWIFT_DEBUG_CHECKS
-
-    t_ti = scheduler_addtask(s, task_type_recv, task_subtype_tend, c->mpi.tag,
-                             0, c, NULL);
-
-    if (with_limiter)
-      t_limiter = scheduler_addtask(s, task_type_recv, task_subtype_limiter,
-                                    c->mpi.tag, 0, c, NULL);
+    t_ti = scheduler_addtask(s, task_type_recv, task_subtype_tend_gpart,
+                             c->mpi.tag, 0, c, NULL);
   }
 
-  c->mpi.recv_ti = t_ti;
+  c->mpi.grav.recv = t_grav;
+  c->mpi.grav.recv_ti = t_ti;
 
   for (struct link *l = c->grav.grav; l != NULL; l = l->next) {
+    scheduler_addunlock(s, t_grav, l->t);
     scheduler_addunlock(s, l->t, t_ti);
   }
 
-  if (with_limiter) {
-
-    for (struct link *l = c->hydro.force; l != NULL; l = l->next) {
-      scheduler_addunlock(s, l->t, t_limiter);
-    }
-
-    for (struct link *l = c->hydro.limiter; l != NULL; l = l->next) {
-      scheduler_addunlock(s, t_limiter, l->t);
-      scheduler_addunlock(s, l->t, t_ti);
-    }
-
-  } else {
-
-    for (struct link *l = c->hydro.force; l != NULL; l = l->next) {
-      scheduler_addunlock(s, l->t, t_ti);
-    }
-  }
-
-  for (struct link *l = c->stars.feedback; l != NULL; l = l->next)
-    scheduler_addunlock(s, l->t, t_ti);
-
   /* Recurse? */
   if (c->split)
     for (int k = 0; k < 8; k++)
       if (c->progeny[k] != NULL)
-        engine_addtasks_recv_timestep(e, c->progeny[k], t_ti, t_limiter,
-                                      with_limiter);
+        engine_addtasks_recv_gravity(e, c->progeny[k], t_grav, t_ti);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -608,6 +495,16 @@ void engine_make_hierarchical_tasks_common(struct engine *e, struct cell *c) {
 
   struct scheduler *s = &e->sched;
   const int with_limiter = (e->policy & engine_policy_limiter);
+  const int with_star_formation = (e->policy & engine_policy_star_formation);
+
+  /* Are we at the top-level? */
+  if (c->top == c && c->nodeID == e->nodeID) {
+
+    if (with_star_formation && c->hydro.count > 0) {
+      c->hydro.star_formation = scheduler_addtask(
+          s, task_type_star_formation, task_subtype_none, 0, 0, c, NULL);
+    }
+  }
 
   /* Are we in a super-cell ? */
   if (c->super == c) {
@@ -634,6 +531,12 @@ void engine_make_hierarchical_tasks_common(struct engine *e, struct cell *c) {
       scheduler_addunlock(s, c->kick2, c->timestep);
       scheduler_addunlock(s, c->timestep, c->kick1);
 
+      /* Subgrid tasks: star formation */
+      if (with_star_formation && c->hydro.count > 0) {
+        scheduler_addunlock(s, c->kick2, c->top->hydro.star_formation);
+        scheduler_addunlock(s, c->top->hydro.star_formation, c->timestep);
+      }
+
       /* Time-step limiting */
       if (with_limiter) {
         c->timestep_limiter = scheduler_addtask(
@@ -868,16 +771,6 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c) {
         scheduler_addunlock(s, c->hydro.end_force, c->super->kick2);
       }
 
-      /* Subgrid tasks: star formation */
-      if (with_star_formation) {
-
-        c->hydro.star_formation = scheduler_addtask(
-            s, task_type_star_formation, task_subtype_none, 0, 0, c, NULL);
-
-        scheduler_addunlock(s, c->super->kick2, c->hydro.star_formation);
-        scheduler_addunlock(s, c->hydro.star_formation, c->super->timestep);
-      }
-
       /* Subgrid tasks: feedback */
       if (with_feedback) {
 
@@ -895,8 +788,9 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c) {
         scheduler_addunlock(s, c->super->kick2, c->stars.stars_in);
         scheduler_addunlock(s, c->stars.stars_out, c->super->timestep);
 
-        if (with_star_formation) {
-          scheduler_addunlock(s, c->hydro.star_formation, c->stars.stars_in);
+        if (with_star_formation && c->hydro.count > 0) {
+          scheduler_addunlock(s, c->top->hydro.star_formation,
+                              c->stars.stars_in);
         }
       }
     }
@@ -2044,6 +1938,7 @@ void engine_make_hydroloop_tasks_mapper(void *map_data, int num_elements,
   struct engine *e = (struct engine *)extra_data;
   const int periodic = e->s->periodic;
   const int with_feedback = (e->policy & engine_policy_feedback);
+  const int with_stars = (e->policy & engine_policy_stars);
 
   struct space *s = e->s;
   struct scheduler *sched = &e->sched;
@@ -2066,7 +1961,7 @@ void engine_make_hydroloop_tasks_mapper(void *map_data, int num_elements,
     struct cell *ci = &cells[cid];
 
     /* Skip cells without hydro or star particles */
-    if ((ci->hydro.count == 0) && (!with_feedback || ci->stars.count == 0))
+    if ((ci->hydro.count == 0) && (!with_stars || ci->stars.count == 0))
       continue;
 
     /* If the cell is local build a self-interaction */
@@ -2163,7 +2058,7 @@ void engine_addtasks_send_mapper(void *map_data, int num_elements,
                                  void *extra_data) {
 
   struct engine *e = (struct engine *)extra_data;
-  const int with_limiter = (e->policy & engine_policy_limiter);
+  // const int with_limiter = (e->policy & engine_policy_limiter);
   struct cell_type_pair *cell_type_pairs = (struct cell_type_pair *)map_data;
 
   for (int k = 0; k < num_elements; k++) {
@@ -2172,24 +2067,25 @@ void engine_addtasks_send_mapper(void *map_data, int num_elements,
     const int type = cell_type_pairs[k].type;
 
     /* Add the send task for the particle timesteps. */
-    engine_addtasks_send_timestep(e, ci, cj, NULL, NULL, with_limiter);
+    // engine_addtasks_send_timestep(e, ci, cj, NULL, NULL, with_limiter);
 
     /* Add the send tasks for the cells in the proxy that have a hydro
      * connection. */
     if ((e->policy & engine_policy_hydro) && (type & proxy_cell_type_hydro))
       engine_addtasks_send_hydro(e, ci, cj, /*t_xv=*/NULL,
-                                 /*t_rho=*/NULL, /*t_gradient=*/NULL);
+                                 /*t_rho=*/NULL, /*t_gradient=*/NULL,
+                                 /*t_ti=*/NULL);
 
     /* Add the send tasks for the cells in the proxy that have a stars
      * connection. */
     if ((e->policy & engine_policy_feedback) && (type & proxy_cell_type_hydro))
-      engine_addtasks_send_stars(e, ci, cj, /*t_feedback=*/NULL);
+      engine_addtasks_send_stars(e, ci, cj, /*t_feedback=*/NULL, /*t_ti=*/NULL);
 
     /* Add the send tasks for the cells in the proxy that have a gravity
      * connection. */
     if ((e->policy & engine_policy_self_gravity) &&
         (type & proxy_cell_type_gravity))
-      engine_addtasks_send_gravity(e, ci, cj, NULL);
+      engine_addtasks_send_gravity(e, ci, cj, NULL, NULL);
   }
 }
 
@@ -2197,7 +2093,7 @@ void engine_addtasks_recv_mapper(void *map_data, int num_elements,
                                  void *extra_data) {
 
   struct engine *e = (struct engine *)extra_data;
-  const int with_limiter = (e->policy & engine_policy_limiter);
+  // const int with_limiter = (e->policy & engine_policy_limiter);
   struct cell_type_pair *cell_type_pairs = (struct cell_type_pair *)map_data;
 
   for (int k = 0; k < num_elements; k++) {
@@ -2205,23 +2101,23 @@ void engine_addtasks_recv_mapper(void *map_data, int num_elements,
     const int type = cell_type_pairs[k].type;
 
     /* Add the recv task for the particle timesteps. */
-    engine_addtasks_recv_timestep(e, ci, NULL, NULL, with_limiter);
+    // engine_addtasks_recv_timestep(e, ci, NULL, NULL, with_limiter);
 
     /* Add the recv tasks for the cells in the proxy that have a hydro
      * connection. */
     if ((e->policy & engine_policy_hydro) && (type & proxy_cell_type_hydro))
-      engine_addtasks_recv_hydro(e, ci, NULL, NULL, NULL);
+      engine_addtasks_recv_hydro(e, ci, NULL, NULL, NULL, NULL);
 
     /* Add the recv tasks for the cells in the proxy that have a stars
      * connection. */
     if ((e->policy & engine_policy_feedback) && (type & proxy_cell_type_hydro))
-      engine_addtasks_recv_stars(e, ci, NULL);
+      engine_addtasks_recv_stars(e, ci, NULL, NULL);
 
     /* Add the recv tasks for the cells in the proxy that have a gravity
      * connection. */
     if ((e->policy & engine_policy_self_gravity) &&
         (type & proxy_cell_type_gravity))
-      engine_addtasks_recv_gravity(e, ci, NULL);
+      engine_addtasks_recv_gravity(e, ci, NULL, NULL);
   }
 }
 
@@ -2289,7 +2185,7 @@ void engine_maketasks(struct engine *e) {
 #endif
 
   /* Free the old list of cell-task links. */
-  if (e->links != NULL) free(e->links);
+  if (e->links != NULL) swift_free("links", e->links);
   e->size_links = e->sched.nr_tasks * e->links_per_tasks;
 
   /* Make sure that we have space for more links than last time. */
@@ -2297,8 +2193,8 @@ void engine_maketasks(struct engine *e) {
     e->size_links = e->nr_links * engine_rebuild_link_alloc_margin;
 
   /* Allocate the new link list */
-  if ((e->links = (struct link *)malloc(sizeof(struct link) * e->size_links)) ==
-      NULL)
+  if ((e->links = (struct link *)swift_malloc(
+           "links", sizeof(struct link) * e->size_links)) == NULL)
     error("Failed to allocate cell-task links.");
   e->nr_links = 0;
 
diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c
index 9b34b3ea95a9ae8bc848a90113647b3e68b121b1..114841b015c680973b5c3007cf4c03048cd861dc 100644
--- a/src/engine_marktasks.c
+++ b/src/engine_marktasks.c
@@ -309,11 +309,25 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
       }
 
       /* Stars feedback */
-      else if ((t_subtype == task_subtype_stars_feedback) &&
-               ((ci_active_stars && ci_nodeID == nodeID) ||
-                (cj_active_stars && cj_nodeID == nodeID))) {
+      else if (t_subtype == task_subtype_stars_feedback) {
 
-        scheduler_activate(s, t);
+        /* We only want to activate the task if the cell is active and is
+           going to update some gas on the *local* node */
+        if ((ci_nodeID == nodeID && cj_nodeID == nodeID) &&
+            (ci_active_stars || cj_active_stars)) {
+
+          scheduler_activate(s, t);
+
+        } else if ((ci_nodeID == nodeID && cj_nodeID != nodeID) &&
+                   (cj_active_stars)) {
+
+          scheduler_activate(s, t);
+
+        } else if ((ci_nodeID != nodeID && cj_nodeID == nodeID) &&
+                   (ci_active_stars)) {
+
+          scheduler_activate(s, t);
+        }
       }
 
       /* Gravity */
@@ -358,7 +372,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
           }
 
           /* If the foreign cell is active, we want its ti_end values. */
-          if (ci_active_hydro) scheduler_activate(s, ci->mpi.recv_ti);
+          if (ci_active_hydro) scheduler_activate(s, ci->mpi.hydro.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           if (ci_active_hydro) {
@@ -383,7 +397,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
 
           /* If the local cell is active, send its ti_end values. */
           if (cj_active_hydro)
-            scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+            scheduler_activate_send(s, cj->mpi.hydro.send_ti, ci_nodeID);
 
         } else if (cj_nodeID != nodeID) {
 
@@ -400,7 +414,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
           }
 
           /* If the foreign cell is active, we want its ti_end values. */
-          if (cj_active_hydro) scheduler_activate(s, cj->mpi.recv_ti);
+          if (cj_active_hydro) scheduler_activate(s, cj->mpi.hydro.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           if (cj_active_hydro) {
@@ -427,7 +441,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
 
           /* If the local cell is active, send its ti_end values. */
           if (ci_active_hydro)
-            scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+            scheduler_activate_send(s, ci->mpi.hydro.send_ti, cj_nodeID);
         }
 #endif
       }
@@ -452,14 +466,14 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
             cell_activate_drift_spart(cj, s);
 
             /* If the local cell is active, send its ti_end values. */
-            scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+            scheduler_activate_send(s, cj->mpi.stars.send_ti, ci_nodeID);
           }
 
           if (ci_active_stars) {
             scheduler_activate(s, ci->mpi.stars.recv);
 
             /* If the foreign cell is active, we want its ti_end values. */
-            scheduler_activate(s, ci->mpi.recv_ti);
+            scheduler_activate(s, ci->mpi.stars.recv_ti);
 
             /* Is the foreign cell active and will need stuff from us? */
             scheduler_activate_send(s, cj->mpi.hydro.send_xv, ci_nodeID);
@@ -482,14 +496,14 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
             cell_activate_drift_spart(ci, s);
 
             /* If the local cell is active, send its ti_end values. */
-            scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+            scheduler_activate_send(s, ci->mpi.stars.send_ti, cj_nodeID);
           }
 
           if (cj_active_stars) {
             scheduler_activate(s, cj->mpi.stars.recv);
 
             /* If the foreign cell is active, we want its ti_end values. */
-            scheduler_activate(s, cj->mpi.recv_ti);
+            scheduler_activate(s, cj->mpi.stars.recv_ti);
 
             /* Is the foreign cell active and will need stuff from us? */
             scheduler_activate_send(s, ci->mpi.hydro.send_xv, cj_nodeID);
@@ -514,7 +528,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
           if (cj_active_gravity) scheduler_activate(s, ci->mpi.grav.recv);
 
           /* If the foreign cell is active, we want its ti_end values. */
-          if (ci_active_gravity) scheduler_activate(s, ci->mpi.recv_ti);
+          if (ci_active_gravity) scheduler_activate(s, ci->mpi.grav.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           if (ci_active_gravity) {
@@ -530,7 +544,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
 
           /* If the local cell is active, send its ti_end values. */
           if (cj_active_gravity)
-            scheduler_activate_send(s, cj->mpi.send_ti, ci_nodeID);
+            scheduler_activate_send(s, cj->mpi.grav.send_ti, ci_nodeID);
 
         } else if (cj_nodeID != nodeID) {
 
@@ -538,7 +552,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
           if (ci_active_gravity) scheduler_activate(s, cj->mpi.grav.recv);
 
           /* If the foreign cell is active, we want its ti_end values. */
-          if (cj_active_gravity) scheduler_activate(s, cj->mpi.recv_ti);
+          if (cj_active_gravity) scheduler_activate(s, cj->mpi.grav.recv_ti);
 
           /* Is the foreign cell active and will need stuff from us? */
           if (cj_active_gravity) {
@@ -554,7 +568,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
 
           /* If the local cell is active, send its ti_end values. */
           if (ci_active_gravity)
-            scheduler_activate_send(s, ci->mpi.send_ti, cj_nodeID);
+            scheduler_activate_send(s, ci->mpi.grav.send_ti, cj_nodeID);
         }
 #endif
       }
@@ -651,7 +665,7 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
     else if (t_type == task_type_star_formation) {
       if (cell_is_active_hydro(t->ci, e)) {
         scheduler_activate(s, t);
-        cell_activate_drift_spart(t->ci, s);
+        cell_activate_super_spart_drifts(t->ci, s);
       }
     }
   }
diff --git a/src/entropy_floor/EAGLE/entropy_floor.h b/src/entropy_floor/EAGLE/entropy_floor.h
index cc90e0ad3dd0cf6f16af6e95cbe93be17af3c847..5a53b3b39c9df3aa624b3fd93e82bed9d221204c 100644
--- a/src/entropy_floor/EAGLE/entropy_floor.h
+++ b/src/entropy_floor/EAGLE/entropy_floor.h
@@ -98,42 +98,48 @@ static INLINE float entropy_floor(
     const struct part *p, const struct cosmology *cosmo,
     const struct entropy_floor_properties *props) {
 
+  /* Comoving density in internal units */
+  const float rho_com = hydro_get_comoving_density(p);
+
   /* Physical density in internal units */
-  const float rho = hydro_get_physical_density(p, cosmo);
+  const float rho_phys = hydro_get_physical_density(p, cosmo);
 
-  /* Critical density at this redshift.
-   * Recall that this is 0 in a non-cosmological run */
-  const float rho_crit = cosmo->critical_density;
-  const float rho_crit_baryon = cosmo->Omega_b * rho_crit;
+  /* Mean baryon density in co-moving internal units for over-density condition
+   * (Recall cosmo->critical_density_0 is 0 in a non-cosmological run,
+   * making the over-density condition a no-op) */
+  const float rho_crit_0 = cosmo->critical_density_0;
+  const float rho_crit_baryon = cosmo->Omega_b * rho_crit_0;
 
   /* Physical pressure */
   float pressure = 0.f;
 
   /* Are we in the regime of the Jeans equation of state? */
-  if ((rho >= rho_crit_baryon * props->Jeans_over_density_threshold) &&
-      (rho >= props->Jeans_density_threshold)) {
+  if ((rho_com >= rho_crit_baryon * props->Jeans_over_density_threshold) &&
+      (rho_phys >= props->Jeans_density_threshold)) {
 
-    const float pressure_Jeans = props->Jeans_pressure_norm *
-                                 powf(rho * props->Jeans_density_threshold_inv,
-                                      props->Jeans_gamma_effective);
+    const float pressure_Jeans =
+        props->Jeans_pressure_norm *
+        powf(rho_phys * props->Jeans_density_threshold_inv,
+             props->Jeans_gamma_effective);
 
     pressure = max(pressure, pressure_Jeans);
   }
 
   /* Are we in the regime of the Cool equation of state? */
-  if ((rho >= rho_crit_baryon * props->Cool_over_density_threshold) &&
-      (rho >= props->Cool_density_threshold)) {
+  if ((rho_com >= rho_crit_baryon * props->Cool_over_density_threshold) &&
+      (rho_phys >= props->Cool_density_threshold)) {
 
-    const float pressure_Cool = props->Cool_pressure_norm *
-                                powf(rho * props->Cool_density_threshold_inv,
-                                     props->Cool_gamma_effective);
+    const float pressure_Cool =
+        props->Cool_pressure_norm *
+        powf(rho_phys * props->Cool_density_threshold_inv,
+             props->Cool_gamma_effective);
 
     pressure = max(pressure, pressure_Cool);
   }
 
   /* Convert to an entropy.
    * (Recall that the entropy is the same in co-moving and phycial frames) */
-  return gas_entropy_from_pressure(rho, pressure);
+  return gas_entropy_from_pressure(rho_phys, pressure);
 }
 
 /**
@@ -152,39 +158,43 @@ static INLINE float entropy_floor_temperature(
     const struct part *p, const struct cosmology *cosmo,
     const struct entropy_floor_properties *props) {
 
+  /* Comoving density in internal units */
+  const float rho_com = hydro_get_comoving_density(p);
+
   /* Physical density in internal units */
-  const float rho = hydro_get_physical_density(p, cosmo);
+  const float rho_phys = hydro_get_physical_density(p, cosmo);
 
-  /* Critical density at this redshift.
-   * Recall that this is 0 in a non-cosmological run */
-  const float rho_crit = cosmo->critical_density;
-  const float rho_crit_baryon = cosmo->Omega_b * rho_crit;
+  /* Mean baryon density in co-moving internal units for over-density condition
+   * (Recall cosmo->critical_density_0 is 0 in a non-cosmological run,
+   * making the over-density condition a no-op) */
+  const float rho_crit_0 = cosmo->critical_density_0;
+  const float rho_crit_baryon = cosmo->Omega_b * rho_crit_0;
 
   /* Physical */
   float temperature = 0.f;
 
   /* Are we in the regime of the Jeans equation of state? */
-  if ((rho >= rho_crit_baryon * props->Jeans_over_density_threshold) &&
-      (rho >= props->Jeans_density_threshold)) {
+  if ((rho_com >= rho_crit_baryon * props->Jeans_over_density_threshold) &&
+      (rho_phys >= props->Jeans_density_threshold)) {
 
     const float jeans_slope = props->Jeans_gamma_effective - 1.f;
 
     const float temperature_Jeans =
         props->Jeans_temperature_norm *
-        pow(rho * props->Jeans_density_threshold_inv, jeans_slope);
+        pow(rho_phys * props->Jeans_density_threshold_inv, jeans_slope);
 
     temperature = max(temperature, temperature_Jeans);
   }
 
   /* Are we in the regime of the Cool equation of state? */
-  if ((rho >= rho_crit_baryon * props->Cool_over_density_threshold) &&
-      (rho >= props->Cool_density_threshold)) {
+  if ((rho_com >= rho_crit_baryon * props->Cool_over_density_threshold) &&
+      (rho_phys >= props->Cool_density_threshold)) {
 
     const float cool_slope = props->Cool_gamma_effective - 1.f;
 
     const float temperature_Cool =
         props->Cool_temperature_norm *
-        pow(rho * props->Cool_density_threshold_inv, cool_slope);
+        pow(rho_phys * props->Cool_density_threshold_inv, cool_slope);
 
     temperature = max(temperature, temperature_Cool);
   }
diff --git a/src/error.h b/src/error.h
index d384ec56ba0dc3562160d94911e3e3d3bb786211..de4e9fa44c73d91524dfd307a3ad19b6cad3421f 100644
--- a/src/error.h
+++ b/src/error.h
@@ -35,13 +35,22 @@
 
 /* Local headers. */
 #include "clocks.h"
+#include "memuse.h"
 
+/* Use exit when not developing, avoids core dumps. */
 #ifdef SWIFT_DEVELOP_MODE
 #define swift_abort(errcode) abort()
 #else
 #define swift_abort(errcode) exit(errcode)
 #endif
 
+/* If reporting memory usage, try to dump that when exiting in error. */
+#ifdef SWIFT_MEMUSE_REPORTS
+#define memdump(rank) memuse_log_dump_error(rank);
+#else
+#define memdump(rank)
+#endif
+
 /**
  * @brief Error macro. Prints the message given in argument and aborts.
  *
@@ -54,19 +63,23 @@ extern int engine_rank;
     fprintf(stderr, "[%04i] %s %s:%s():%i: " s "\n", engine_rank,          \
             clocks_get_timesincestart(), __FILE__, __FUNCTION__, __LINE__, \
             ##__VA_ARGS__);                                                \
+    memdump(engine_rank);                                                  \
     MPI_Abort(MPI_COMM_WORLD, -1);                                         \
   })
 #else
+extern int engine_rank;
 #define error(s, ...)                                                      \
   ({                                                                       \
     fflush(stdout);                                                        \
     fprintf(stderr, "%s %s:%s():%i: " s "\n", clocks_get_timesincestart(), \
             __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);              \
+    memdump(engine_rank);                                                  \
     swift_abort(1);                                                        \
   })
 #endif
 
 #ifdef WITH_MPI
+extern int engine_rank;
 /**
  * @brief MPI error macro. Prints the message given in argument,
  *                         followed by the MPI error string and aborts.
@@ -82,6 +95,7 @@ extern int engine_rank;
     char buf[len];                                                         \
     MPI_Error_string(res, buf, &len);                                      \
     fprintf(stderr, "%s\n\n", buf);                                        \
+    memdump(engine_rank);                                                  \
     MPI_Abort(MPI_COMM_WORLD, -1);                                         \
   })
 
diff --git a/src/memuse.c b/src/memuse.c
new file mode 100644
index 0000000000000000000000000000000000000000..10fd349c0cc4de26b94878b45fd78da19e140f12
--- /dev/null
+++ b/src/memuse.c
@@ -0,0 +1,280 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2018 Peter W. Draper (p.w.draper@durham.ac.uk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+
+/**
+ *  @file memuse.c
+ *  @brief file of routines to report about memory use in SWIFT.
+ *  Note reports are in KB.
+ */
+
+/* Config parameters. */
+#include "../config.h"
+
+/* Standard includes. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+/* Local defines. */
+#include "memuse.h"
+
+/* Local includes. */
+#include "atomic.h"
+#include "clocks.h"
+#include "engine.h"
+
+#ifdef SWIFT_MEMUSE_REPORTS
+
+/* Also recorded in logger. */
+extern int engine_rank;
+extern int engine_current_step;
+
+/* Entry for logger of memory allocations and deallocations in a step. */
+#define MEMUSE_MAXLAB 64
+struct memuse_log_entry {
+
+  /* Rank in action. */
+  int rank;
+
+  /* Step of action. */
+  int step;
+
+  /* Whether allocated or deallocated. */
+  int allocated;
+
+  /* Memory allocated in bytes. */
+  size_t size;
+
+  /* Address of memory. */
+  void *ptr;
+
+  /* Relative time of this action. */
+  ticks dtic;
+
+  /* Label associated with the memory. */
+  char label[MEMUSE_MAXLAB + 1];
+};
+
+/* The log of allocations and frees. */
+static struct memuse_log_entry *memuse_log = NULL;
+static volatile size_t memuse_log_size = 0;
+static volatile size_t memuse_log_count = 0;
+static volatile size_t memuse_log_done = 0;
+
+#define MEMUSE_INITLOG 1000000
+static void memuse_log_reallocate(size_t ind) {
+
+  if (ind == 0) {
+
+    /* Need to perform initialization. Be generous. */
+    if ((memuse_log = (struct memuse_log_entry *)malloc(
+             sizeof(struct memuse_log_entry) * MEMUSE_INITLOG)) == NULL)
+      error("Failed to allocate memuse log.");
+
+    /* Last action. */
+    memuse_log_size = MEMUSE_INITLOG;
+
+  } else {
+    struct memuse_log_entry *new_log;
+    if ((new_log = (struct memuse_log_entry *)malloc(
+             sizeof(struct memuse_log_entry) * memuse_log_size * 2)) == NULL)
+      error("Failed to re-allocate memuse log.");
+
+    /* Wait for all writes to the old buffer to complete. */
+    while (memuse_log_done < memuse_log_size)
+      ;
+
+    /* Copy to new buffer. */
+    memcpy(new_log, memuse_log,
+           sizeof(struct memuse_log_entry) * memuse_log_count);
+    free(memuse_log);
+    memuse_log = new_log;
+
+    /* Last action. */
+    memuse_log_size *= 2;
+  }
+}
+
+/**
+ * @brief Log an allocation or deallocation of memory.
+ *
+ * @param label the label associated with the memory.
+ * @param ptr the memory pointer.
+ * @param allocated whether this is an allocation or deallocation.
+ * @param size the size in byte of memory allocated, set to 0 when
+ *             deallocating.
+ */
+void memuse_log_allocation(const char *label, void *ptr, int allocated,
+                           size_t size) {
+  size_t ind = atomic_inc(&memuse_log_count);
+
+  /* If we are at the current size we need more space. */
+  if (ind == memuse_log_size) memuse_log_reallocate(ind);
+
+  /* Other threads wait for space. */
+  while (ind > memuse_log_size)
+    ;
+
+  /* Record the log. */
+  memuse_log[ind].rank = engine_rank;
+  memuse_log[ind].step = engine_current_step;
+  memuse_log[ind].allocated = allocated;
+  memuse_log[ind].size = size;
+  memuse_log[ind].ptr = ptr;
+  strncpy(memuse_log[ind].label, label, MEMUSE_MAXLAB);
+  memuse_log[ind].label[MEMUSE_MAXLAB] = '\0';
+  memuse_log[ind].dtic = getticks() - clocks_start_ticks;
+  atomic_inc(&memuse_log_done);
+}
+
+/**
+ * @brief dump the log to a file and reset, if anything to dump.
+ *
+ * @param filename name of file for log dump.
+ */
+void memuse_log_dump(const char *filename) {
+
+  /* Skip if nothing allocated this step. */
+  if (memuse_log_count == 0) return;
+
+  /* Open the output file. */
+  FILE *fd;
+  if ((fd = fopen(filename, "w")) == NULL)
+    error("Failed to create memuse log file '%s'.", filename);
+
+  /* Write a header. */
+  fprintf(fd, "# Current use: %s\n", memuse_process(1));
+  fprintf(fd, "# cpufreq: %lld\n", clocks_get_cpufreq());
+  fprintf(fd, "# dtic adr rank step allocated label size\n");
+
+  for (size_t k = 0; k < memuse_log_count; k++) {
+    fprintf(fd, "%lld %p %d %d %d %s %zd\n", memuse_log[k].dtic,
+            memuse_log[k].ptr, memuse_log[k].rank, memuse_log[k].step,
+            memuse_log[k].allocated, memuse_log[k].label, memuse_log[k].size);
+  }
+
+  /* Clear the log. */
+  memuse_log_count = 0;
+
+  /* Close the file. */
+  fflush(fd);
+  fclose(fd);
+}
+
+/**
+ * @brief dump the log for using the given rank to generate a standard
+ *        name for the output. Used when exiting in error.
+ *
+ * @param rank the rank exiting in error.
+ */
+void memuse_log_dump_error(int rank) {
+  char filename[60];
+  sprintf(filename, "memuse-error-report-rank%d.txt", rank);
+  memuse_log_dump(filename);
+}
+
+#endif /* SWIFT_MEMUSE_REPORTS */
+
+/**
+ * @brief parse the process /proc/self/statm file to get the process
+ *        memory use (in KB). Top field in ().
+ *
+ * @param size     total virtual memory (VIRT/VmSize)
+ * @param resident resident non-swapped memory (RES/VmRSS)
+ * @param shared   shared (mmap'd) memory  (SHR, RssFile+RssShmem)
+ * @param text     text (exe) resident set (CODE, note also includes data
+ *                 segment, so is considered broken for Linux)
+ * @param data     data+stack resident set (DATA, note also includes library,
+ *                 so is considered broken for Linux)
+ * @param library  library resident set (0 for Linux)
+ * @param dirty    dirty pages (nDRT = 0 for Linux)
+ */
+void memuse_use(long *size, long *resident, long *shared, long *text,
+                long *data, long *library, long *dirty) {
+
+  /* Open the file. */
+  FILE *file = fopen("/proc/self/statm", "r");
+  if (file != NULL) {
+    int nscan = fscanf(file, "%ld %ld %ld %ld %ld %ld %ld", size, resident,
+                       shared, text, library, data, dirty);
+
+    if (nscan == 7) {
+      /* Convert pages into bytes. Usually 4096, but could be 512 on some
+       * systems so take care in conversion to KB. */
+      long sz = sysconf(_SC_PAGESIZE);
+      *size *= sz;
+      *resident *= sz;
+      *shared *= sz;
+      *text *= sz;
+      *library *= sz;
+      *data *= sz;
+      *dirty *= sz;
+
+      *size /= 1024;
+      *resident /= 1024;
+      *shared /= 1024;
+      *text /= 1024;
+      *library /= 1024;
+      *data /= 1024;
+      *dirty /= 1024;
+    } else {
+      error("Failed to read sufficient fields from /proc/self/statm");
+    }
+    fclose(file);
+  } else {
+    error("Failed to open /proc/self/statm");
+  }
+}
+
+/**
+ * @brief Return a string with the current memory use of the process described.
+ *
+ * Not thread safe.
+ *
+ * @param inmb if true then report in MB, not KB.
+ *
+ * @result the memory use of the process, note make a copy if not used
+ * immediately.
+ */
+const char *memuse_process(int inmb) {
+  static char buffer[256];
+  long size;
+  long resident;
+  long shared;
+  long text;
+  long library;
+  long data;
+  long dirty;
+  memuse_use(&size, &resident, &shared, &text, &data, &library, &dirty);
+
+  if (inmb) {
+    snprintf(buffer, 256,
+             "VIRT = %.3f SHR = %.3f CODE = %.3f DATA = %.3f "
+             "RES = %.3f (MB)",
+             size / 1024.0, shared / 1024.0, text / 1024.0, data / 1024.0,
+             resident / 1024.0);
+  } else {
+    snprintf(buffer, 256,
+             "VIRT = %ld SHR = %ld CODE = %ld DATA = %ld "
+             "RES = %ld (KB)",
+             size, shared, text, data, resident);
+  }
+  return buffer;
+}
diff --git a/src/memuse.h b/src/memuse.h
new file mode 100644
index 0000000000000000000000000000000000000000..751b7195aa8ad705d03b2490876993331e495c15
--- /dev/null
+++ b/src/memuse.h
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2018 Peter W. Draper (p.w.draper@durham.ac.uk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ ******************************************************************************/
+#ifndef SWIFT_MEMUSE_H
+#define SWIFT_MEMUSE_H
+
+/* Config parameters. */
+#include "../config.h"
+
+/* Includes. */
+#include <stdlib.h>
+
+/* API. */
+void memuse_use(long *size, long *resident, long *shared, long *text,
+                long *data, long *library, long *dirty);
+const char *memuse_process(int inmb);
+
+#ifdef SWIFT_MEMUSE_REPORTS
+void memuse_log_dump(const char *filename);
+void memuse_log_dump_error(int rank);
+void memuse_log_allocation(const char *label, void *ptr, int allocated,
+                           size_t size);
+#else
+
+/* No-op when not reporting. */
+#define memuse_log_allocation(label, ptr, allocated, size)
+#endif
+
+/**
+ * @brief allocate aligned memory. The use and results are the same as the
+ *        posix_memalign function. This function should be used for any
+ *        significant allocations and consistently labelled.
+ *
+ * @param label a symbolic label for the memory, i.e. "parts".
+ * @param memptr pointer to the allocated memory.
+ * @param alignment alignment boundary.
+ * @param size the quantity of bytes to allocate.
+ * @result zero on success, otherwise an error code.
+ */
+__attribute__((always_inline)) inline int swift_memalign(const char *label,
+                                                         void **memptr,
+                                                         size_t alignment,
+                                                         size_t size) {
+  int result = posix_memalign(memptr, alignment, size);
+#ifdef SWIFT_MEMUSE_REPORTS
+  if (result == 0) {
+    memuse_log_allocation(label, *memptr, 1, size);
+  } else {
+    /* Failed allocations are interesting as well. */
+    memuse_log_allocation(label, NULL, -1, size);
+  }
+#endif
+  return result;
+}
+
+/**
+ * @brief allocate memory. The use and results are the same as the
+ *        malloc function. This function should be used for any
+ *        _significant_ allocations and consistently labelled.
+ *        Do not use this function for small or high frequency
+ *        allocations in production code.
+ *
+ * @param label a symbolic label for the memory, i.e. "parts".
+ * @param size the quantity of bytes to allocate.
+ * @result pointer to the allocated memory or NULL on failure.
+ */
+__attribute__((always_inline)) inline void *swift_malloc(const char *label,
+                                                         size_t size) {
+  void *memptr = malloc(size);
+#ifdef SWIFT_MEMUSE_REPORTS
+  if (memptr != NULL) {
+    memuse_log_allocation(label, memptr, 1, size);
+  } else {
+    /* Failed allocations are interesting as well. */
+    memuse_log_allocation(label, NULL, -1, size);
+  }
+#endif
+  return memptr;
+}
+
+/**
+ * @brief allocate zeroed memory. The use and results are the same as the
+ *        calloc function. This function should be used for any
+ *        _significant_ allocations and consistently labelled.
+ *        Do not use this function for small or high frequency
+ *        allocations in production code.
+ *
+ * @param label a symbolic label for the memory, i.e. "parts".
+ * @param nmemb number of element to allocate.
+ * @param size the size of each element in bytes.
+ * @result pointer to the allocated memory or NULL on failure.
+ */
+__attribute__((always_inline)) inline void *swift_calloc(const char *label,
+                                                         size_t nmemb,
+                                                         size_t size) {
+  void *memptr = calloc(nmemb, size);
+#ifdef SWIFT_MEMUSE_REPORTS
+  if (memptr != NULL) {
+    memuse_log_allocation(label, memptr, 1, size * nmemb);
+  } else {
+    /* Failed allocations are interesting as well. */
+    memuse_log_allocation(label, NULL, -1, size * nmemb);
+  }
+#endif
+  return memptr;
+}
+
+/**
+ * @brief free aligned memory. The use and results are the same as the
+ *        free function. The label should match a prior call to swift_memalign
+ *        or swift_malloc.
+ *
+ * @param label a symbolic label for the memory, i.e. "parts".
+ * @param ptr pointer to the allocated memory.
+ */
+__attribute__((always_inline)) inline void swift_free(const char *label,
+                                                      void *ptr) {
+  free(ptr);
+#ifdef SWIFT_MEMUSE_REPORTS
+  memuse_log_allocation(label, ptr, 0, 0);
+#endif
+  return;
+}
+
+#endif /* SWIFT_MEMUSE_H */
diff --git a/src/mesh_gravity.c b/src/mesh_gravity.c
index e7005b083c94e20f5218923e443f71464ab383e1..bf0519842eb620e0ff4d8cd0cda05a9395c9722f 100644
--- a/src/mesh_gravity.c
+++ b/src/mesh_gravity.c
@@ -389,6 +389,8 @@ void pm_mesh_compute_potential(struct pm_mesh* mesh, const struct space* s,
       (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N * N * (N_half + 1));
   if (frho == NULL)
     error("Error allocating memory for transform of density mesh");
+  memuse_log_allocation("fftw_frho", frho, 1,
+                        sizeof(fftw_complex) * N * N * (N_half + 1));
 
   /* Prepare the FFT library */
   fftw_plan forward_plan = fftw_plan_dft_r2c_3d(
@@ -537,6 +539,7 @@ void pm_mesh_compute_potential(struct pm_mesh* mesh, const struct space* s,
   /* Clean-up the mess */
   fftw_destroy_plan(forward_plan);
   fftw_destroy_plan(inverse_plan);
+  memuse_log_allocation("fftw_frho", frho, 0, 0);
   fftw_free(frho);
 
 #else
@@ -636,6 +639,9 @@ void pm_mesh_init(struct pm_mesh* mesh, const struct gravity_props* props,
   mesh->potential = (double*)fftw_malloc(sizeof(double) * N * N * N);
   if (mesh->potential == NULL)
     error("Error allocating memory for the long-range gravity mesh.");
+  memuse_log_allocation("fftw_mesh.potential", mesh->potential, 1,
+                        sizeof(double) * N * N * N);
+
 #else
   error("No FFTW library found. Cannot compute periodic long-range forces.");
 #endif
@@ -674,7 +680,10 @@ void pm_mesh_clean(struct pm_mesh* mesh) {
   fftw_cleanup_threads();
 #endif
 
-  if (mesh->potential) free(mesh->potential);
+  if (mesh->potential) {
+    memuse_log_allocation("fftw_mesh.potential", mesh->potential, 0, 0);
+    free(mesh->potential);
+  }
   mesh->potential = 0;
 }
 
@@ -718,6 +727,8 @@ void pm_mesh_struct_restore(struct pm_mesh* mesh, FILE* stream) {
     mesh->potential = (double*)fftw_malloc(sizeof(double) * N * N * N);
     if (mesh->potential == NULL)
       error("Error allocating memory for the long-range gravity mesh.");
+    memuse_log_allocation("fftw_mesh.potential", mesh->potential, 1,
+                          sizeof(double) * N * N * N);
 #else
     error("No FFTW library found. Cannot compute periodic long-range forces.");
 #endif
diff --git a/src/parallel_io.c b/src/parallel_io.c
index b598d944dfe7c90510b036e7f9d85619ea103c59..0160a53c110c8913e42e0d7cd7c8720a9ed3d331 100644
--- a/src/parallel_io.c
+++ b/src/parallel_io.c
@@ -50,6 +50,7 @@
 #include "hydro_properties.h"
 #include "io_properties.h"
 #include "kernel_hydro.h"
+#include "memuse.h"
 #include "part.h"
 #include "part_type.h"
 #include "star_formation_io.h"
@@ -472,7 +473,7 @@ void writeArray_chunk(struct engine* e, hid_t h_data,
 
   /* Allocate temporary buffer */
   void* temp = NULL;
-  if (posix_memalign((void**)&temp, IO_BUFFER_ALIGNMENT,
+  if (swift_memalign("writebuff", (void**)&temp, IO_BUFFER_ALIGNMENT,
                      num_elements * typeSize) != 0)
     error("Unable to allocate temporary i/o buffer");
 
@@ -556,7 +557,7 @@ void writeArray_chunk(struct engine* e, hid_t h_data,
 #endif
 
   /* Free and close everything */
-  free(temp);
+  swift_free("writebuff", temp);
   H5Sclose(h_memspace);
   H5Sclose(h_filespace);
 }
@@ -815,7 +816,7 @@ void read_ic_parallel(char* fileName, const struct unit_system* internal_units,
   /* Allocate memory to store SPH particles */
   if (with_hydro) {
     *Ngas = N[0];
-    if (posix_memalign((void**)parts, part_align,
+    if (swift_memalign("parts", (void**)parts, part_align,
                        (*Ngas) * sizeof(struct part)) != 0)
       error("Error while allocating memory for particles");
     bzero(*parts, *Ngas * sizeof(struct part));
@@ -824,7 +825,7 @@ void read_ic_parallel(char* fileName, const struct unit_system* internal_units,
   /* Allocate memory to store stars particles */
   if (with_stars) {
     *Nstars = N[swift_type_stars];
-    if (posix_memalign((void**)sparts, spart_align,
+    if (swift_memalign("sparts", (void**)sparts, spart_align,
                        *Nstars * sizeof(struct spart)) != 0)
       error("Error while allocating memory for stars particles");
     bzero(*sparts, *Nstars * sizeof(struct spart));
@@ -836,7 +837,7 @@ void read_ic_parallel(char* fileName, const struct unit_system* internal_units,
     *Ngparts = (with_hydro ? N[swift_type_gas] : 0) +
                N[swift_type_dark_matter] +
                (with_stars ? N[swift_type_stars] : 0);
-    if (posix_memalign((void**)gparts, gpart_align,
+    if (swift_memalign("gparts", (void**)gparts, gpart_align,
                        *Ngparts * sizeof(struct gpart)) != 0)
       error("Error while allocating memory for gravity particles");
     bzero(*gparts, *Ngparts * sizeof(struct gpart));
@@ -1487,10 +1488,12 @@ void write_output_parallel(struct engine* e, const char* baseName,
           Nparticles = Ngas_written;
 
           /* Allocate temporary arrays */
-          if (posix_memalign((void**)&parts_written, part_align,
+          if (swift_memalign("parts_written", (void**)&parts_written,
+                             part_align,
                              Ngas_written * sizeof(struct part)) != 0)
             error("Error while allocating temporart memory for parts");
-          if (posix_memalign((void**)&xparts_written, xpart_align,
+          if (swift_memalign("xparts_written", (void**)&xparts_written,
+                             xpart_align,
                              Ngas_written * sizeof(struct xpart)) != 0)
             error("Error while allocating temporart memory for xparts");
 
@@ -1535,13 +1538,15 @@ void write_output_parallel(struct engine* e, const char* baseName,
           Nparticles = Ndm_written;
 
           /* Allocate temporary array */
-          if (posix_memalign((void**)&gparts_written, gpart_align,
+          if (swift_memalign("gparts_written", (void**)&gparts_written,
+                             gpart_align,
                              Ndm_written * sizeof(struct gpart)) != 0)
             error("Error while allocating temporart memory for gparts");
 
           if (with_stf) {
-            if (posix_memalign(
-                    (void**)&gpart_group_data_written, gpart_align,
+            if (swift_memalign(
+                    "gpart_group_written", (void**)&gpart_group_data_written,
+                    gpart_align,
                     Ndm_written * sizeof(struct velociraptor_gpart_data)) != 0)
               error(
                   "Error while allocating temporart memory for gparts STF "
@@ -1582,7 +1587,8 @@ void write_output_parallel(struct engine* e, const char* baseName,
           Nparticles = Nstars_written;
 
           /* Allocate temporary arrays */
-          if (posix_memalign((void**)&sparts_written, spart_align,
+          if (swift_memalign("sparts_written", (void**)&sparts_written,
+                             spart_align,
                              Nstars_written * sizeof(struct spart)) != 0)
             error("Error while allocating temporart memory for sparts");
 
@@ -1622,11 +1628,12 @@ void write_output_parallel(struct engine* e, const char* baseName,
     }
 
     /* Free temporary array */
-    if (parts_written) free(parts_written);
-    if (xparts_written) free(xparts_written);
-    if (gparts_written) free(gparts_written);
-    if (gpart_group_data_written) free(gpart_group_data_written);
-    if (sparts_written) free(sparts_written);
+    if (parts_written) swift_free("parts_written", parts_written);
+    if (xparts_written) swift_free("xparts_written", xparts_written);
+    if (gparts_written) swift_free("gparts_written", gparts_written);
+    if (gpart_group_data_written)
+      swift_free("gpart_group_written", gpart_group_data_written);
+    if (sparts_written) swift_free("sparts_written", sparts_written);
 
 #ifdef IO_SPEED_MEASUREMENT
     MPI_Barrier(MPI_COMM_WORLD);
diff --git a/src/partition.c b/src/partition.c
index 606f64e4c2f1c057520ed7ff893db10905f5aa8e..e4cfd9dd142739d9508af133617439db7ab6eef9 100644
--- a/src/partition.c
+++ b/src/partition.c
@@ -389,7 +389,8 @@ static void split_metis(struct space *s, int nregions, int *celllist) {
   for (int i = 0; i < s->nr_cells; i++) s->cells_top[i].nodeID = celllist[i];
 
   /* To check or visualise the partition dump all the cells. */
-  /*dumpCellRanks("metis_partition", s->cells_top, s->nr_cells);*/
+  /*if (engine_rank == 0) dumpCellRanks("metis_partition", s->cells_top,
+   * s->nr_cells);*/
 }
 #endif
 
diff --git a/src/proxy.c b/src/proxy.c
index 4a67b4b3584c43b2df63f17303eba9ec5e742cb0..d9f27ad63cc4c888c14048de83a1576000aacac6 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -41,6 +41,7 @@
 #include "cell.h"
 #include "engine.h"
 #include "error.h"
+#include "memuse.h"
 #include "space.h"
 
 #ifdef WITH_MPI
@@ -89,9 +90,9 @@ void proxy_tags_exchange(struct proxy *proxies, int num_proxies,
   /* Allocate the tags. */
   int *tags_in = NULL;
   int *tags_out = NULL;
-  if (posix_memalign((void **)&tags_in, SWIFT_CACHE_ALIGNMENT,
+  if (swift_memalign("tags_in", (void **)&tags_in, SWIFT_CACHE_ALIGNMENT,
                      sizeof(int) * count_in) != 0 ||
-      posix_memalign((void **)&tags_out, SWIFT_CACHE_ALIGNMENT,
+      swift_memalign("tags_out", (void **)&tags_out, SWIFT_CACHE_ALIGNMENT,
                      sizeof(int) * count_out) != 0)
     error("Failed to allocate tags buffers.");
 
@@ -167,8 +168,8 @@ void proxy_tags_exchange(struct proxy *proxies, int num_proxies,
     error("MPI_Waitall on sends failed.");
 
   /* Clean up. */
-  free(tags_in);
-  free(tags_out);
+  swift_free("tags_in", tags_in);
+  swift_free("tags_out", tags_out);
   free(reqs_in);
   free(cids_in);
 
@@ -204,10 +205,12 @@ void proxy_cells_exchange_first(struct proxy *p) {
   // p->size_pcells_out , p->mynodeID , p->nodeID ); fflush(stdout);
 
   /* Allocate and fill the pcell buffer. */
-  if (p->pcells_out != NULL) free(p->pcells_out);
-  if (posix_memalign((void **)&p->pcells_out, SWIFT_STRUCT_ALIGNMENT,
+  if (p->pcells_out != NULL) swift_free("pcells_out", p->pcells_out);
+  if (swift_memalign("pcells_out", (void **)&p->pcells_out,
+                     SWIFT_STRUCT_ALIGNMENT,
                      sizeof(struct pcell) * p->size_pcells_out) != 0)
     error("Failed to allocate pcell_out buffer.");
+
   for (int ind = 0, k = 0; k < p->nr_cells_out; k++) {
     memcpy(&p->pcells_out[ind], p->cells_out[k]->mpi.pcell,
            sizeof(struct pcell) * p->cells_out[k]->mpi.pcell_size);
@@ -250,8 +253,9 @@ void proxy_cells_exchange_second(struct proxy *p) {
 #ifdef WITH_MPI
 
   /* Re-allocate the pcell_in buffer. */
-  if (p->pcells_in != NULL) free(p->pcells_in);
-  if (posix_memalign((void **)&p->pcells_in, SWIFT_STRUCT_ALIGNMENT,
+  if (p->pcells_in != NULL) swift_free("pcells_in", p->pcells_in);
+  if (swift_memalign("pcells_in", (void **)&p->pcells_in,
+                     SWIFT_STRUCT_ALIGNMENT,
                      sizeof(struct pcell) * p->size_pcells_in) != 0)
     error("Failed to allocate pcell_in buffer.");
 
@@ -397,7 +401,7 @@ void proxy_cells_exchange(struct proxy *proxies, int num_proxies,
 
   /* Allocate the pcells. */
   struct pcell *pcells = NULL;
-  if (posix_memalign((void **)&pcells, SWIFT_CACHE_ALIGNMENT,
+  if (swift_memalign("pcells", (void **)&pcells, SWIFT_CACHE_ALIGNMENT,
                      sizeof(struct pcell) * count_out) != 0)
     error("Failed to allocate pcell buffer.");
 
@@ -467,7 +471,7 @@ void proxy_cells_exchange(struct proxy *proxies, int num_proxies,
 
   /* Clean up. */
   free(reqs);
-  free(pcells);
+  swift_free("pcells", pcells);
 
 #else
   error("SWIFT was not compiled with MPI support.");
@@ -646,30 +650,30 @@ void proxy_parts_exchange_second(struct proxy *p) {
     do {
       p->size_parts_in *= proxy_buffgrow;
     } while (p->nr_parts_in > p->size_parts_in);
-    free(p->parts_in);
-    free(p->xparts_in);
-    if ((p->parts_in = (struct part *)malloc(sizeof(struct part) *
-                                             p->size_parts_in)) == NULL ||
-        (p->xparts_in = (struct xpart *)malloc(sizeof(struct xpart) *
-                                               p->size_parts_in)) == NULL)
+    swift_free("parts_in", p->parts_in);
+    swift_free("xparts_in", p->xparts_in);
+    if ((p->parts_in = (struct part *)swift_malloc(
+             "parts_in", sizeof(struct part) * p->size_parts_in)) == NULL ||
+        (p->xparts_in = (struct xpart *)swift_malloc(
+             "xparts_in", sizeof(struct xpart) * p->size_parts_in)) == NULL)
       error("Failed to re-allocate parts_in buffers.");
   }
   if (p->nr_gparts_in > p->size_gparts_in) {
     do {
       p->size_gparts_in *= proxy_buffgrow;
     } while (p->nr_gparts_in > p->size_gparts_in);
-    free(p->gparts_in);
-    if ((p->gparts_in = (struct gpart *)malloc(sizeof(struct gpart) *
-                                               p->size_gparts_in)) == NULL)
+    swift_free("gparts_in", p->gparts_in);
+    if ((p->gparts_in = (struct gpart *)swift_malloc(
+             "gparts_in", sizeof(struct gpart) * p->size_gparts_in)) == NULL)
       error("Failed to re-allocate gparts_in buffers.");
   }
   if (p->nr_sparts_in > p->size_sparts_in) {
     do {
       p->size_sparts_in *= proxy_buffgrow;
     } while (p->nr_sparts_in > p->size_sparts_in);
-    free(p->sparts_in);
-    if ((p->sparts_in = (struct spart *)malloc(sizeof(struct spart) *
-                                               p->size_sparts_in)) == NULL)
+    swift_free("sparts_in", p->sparts_in);
+    if ((p->sparts_in = (struct spart *)swift_malloc(
+             "sparts_in", sizeof(struct spart) * p->size_sparts_in)) == NULL)
       error("Failed to re-allocate sparts_in buffers.");
   }
 
@@ -725,15 +729,15 @@ void proxy_parts_load(struct proxy *p, const struct part *parts,
     } while (p->nr_parts_out + N > p->size_parts_out);
     struct part *tp = NULL;
     struct xpart *txp = NULL;
-    if ((tp = (struct part *)malloc(sizeof(struct part) * p->size_parts_out)) ==
-            NULL ||
-        (txp = (struct xpart *)malloc(sizeof(struct xpart) *
-                                      p->size_parts_out)) == NULL)
+    if ((tp = (struct part *)swift_malloc(
+             "parts_out", sizeof(struct part) * p->size_parts_out)) == NULL ||
+        (txp = (struct xpart *)swift_malloc(
+             "xparts_out", sizeof(struct xpart) * p->size_parts_out)) == NULL)
       error("Failed to re-allocate parts_out buffers.");
     memcpy(tp, p->parts_out, sizeof(struct part) * p->nr_parts_out);
     memcpy(txp, p->xparts_out, sizeof(struct xpart) * p->nr_parts_out);
-    free(p->parts_out);
-    free(p->xparts_out);
+    swift_free("parts_out", p->parts_out);
+    swift_free("xparts_out", p->xparts_out);
     p->parts_out = tp;
     p->xparts_out = txp;
   }
@@ -761,11 +765,11 @@ void proxy_gparts_load(struct proxy *p, const struct gpart *gparts, int N) {
       p->size_gparts_out *= proxy_buffgrow;
     } while (p->nr_gparts_out + N > p->size_gparts_out);
     struct gpart *tp;
-    if ((tp = (struct gpart *)malloc(sizeof(struct gpart) *
-                                     p->size_gparts_out)) == NULL)
+    if ((tp = (struct gpart *)swift_malloc(
+             "gparts_out", sizeof(struct gpart) * p->size_gparts_out)) == NULL)
       error("Failed to re-allocate gparts_out buffers.");
     memcpy(tp, p->gparts_out, sizeof(struct gpart) * p->nr_gparts_out);
-    free(p->gparts_out);
+    swift_free("gparts_out", p->gparts_out);
     p->gparts_out = tp;
   }
 
@@ -791,11 +795,11 @@ void proxy_sparts_load(struct proxy *p, const struct spart *sparts, int N) {
       p->size_sparts_out *= proxy_buffgrow;
     } while (p->nr_sparts_out + N > p->size_sparts_out);
     struct spart *tp;
-    if ((tp = (struct spart *)malloc(sizeof(struct spart) *
-                                     p->size_sparts_out)) == NULL)
+    if ((tp = (struct spart *)swift_malloc(
+             "sparts_out", sizeof(struct spart) * p->size_sparts_out)) == NULL)
       error("Failed to re-allocate sparts_out buffers.");
     memcpy(tp, p->sparts_out, sizeof(struct spart) * p->nr_sparts_out);
-    free(p->sparts_out);
+    swift_free("sparts_out", p->sparts_out);
     p->sparts_out = tp;
   }
 
@@ -844,19 +848,19 @@ void proxy_init(struct proxy *p, int mynodeID, int nodeID) {
   /* Allocate the part send and receive buffers, if needed. */
   if (p->parts_in == NULL) {
     p->size_parts_in = proxy_buffinit;
-    if ((p->parts_in = (struct part *)malloc(sizeof(struct part) *
-                                             p->size_parts_in)) == NULL ||
-        (p->xparts_in = (struct xpart *)malloc(sizeof(struct xpart) *
-                                               p->size_parts_in)) == NULL)
+    if ((p->parts_in = (struct part *)swift_malloc(
+             "parts_in", sizeof(struct part) * p->size_parts_in)) == NULL ||
+        (p->xparts_in = (struct xpart *)swift_malloc(
+             "xparts_in", sizeof(struct xpart) * p->size_parts_in)) == NULL)
       error("Failed to allocate parts_in buffers.");
   }
   p->nr_parts_in = 0;
   if (p->parts_out == NULL) {
     p->size_parts_out = proxy_buffinit;
-    if ((p->parts_out = (struct part *)malloc(sizeof(struct part) *
-                                              p->size_parts_out)) == NULL ||
-        (p->xparts_out = (struct xpart *)malloc(sizeof(struct xpart) *
-                                                p->size_parts_out)) == NULL)
+    if ((p->parts_out = (struct part *)swift_malloc(
+             "parts_out", sizeof(struct part) * p->size_parts_out)) == NULL ||
+        (p->xparts_out = (struct xpart *)swift_malloc(
+             "xparts_out", sizeof(struct xpart) * p->size_parts_out)) == NULL)
       error("Failed to allocate parts_out buffers.");
   }
   p->nr_parts_out = 0;
@@ -864,15 +868,15 @@ void proxy_init(struct proxy *p, int mynodeID, int nodeID) {
   /* Allocate the gpart send and receive buffers, if needed. */
   if (p->gparts_in == NULL) {
     p->size_gparts_in = proxy_buffinit;
-    if ((p->gparts_in = (struct gpart *)malloc(sizeof(struct gpart) *
-                                               p->size_gparts_in)) == NULL)
+    if ((p->gparts_in = (struct gpart *)swift_malloc(
+             "gparts_in", sizeof(struct gpart) * p->size_gparts_in)) == NULL)
       error("Failed to allocate gparts_in buffers.");
   }
   p->nr_gparts_in = 0;
   if (p->gparts_out == NULL) {
     p->size_gparts_out = proxy_buffinit;
-    if ((p->gparts_out = (struct gpart *)malloc(sizeof(struct gpart) *
-                                                p->size_gparts_out)) == NULL)
+    if ((p->gparts_out = (struct gpart *)swift_malloc(
+             "gparts_out", sizeof(struct gpart) * p->size_gparts_out)) == NULL)
       error("Failed to allocate gparts_out buffers.");
   }
   p->nr_gparts_out = 0;
@@ -880,15 +884,15 @@ void proxy_init(struct proxy *p, int mynodeID, int nodeID) {
   /* Allocate the spart send and receive buffers, if needed. */
   if (p->sparts_in == NULL) {
     p->size_sparts_in = proxy_buffinit;
-    if ((p->sparts_in = (struct spart *)malloc(sizeof(struct spart) *
-                                               p->size_sparts_in)) == NULL)
+    if ((p->sparts_in = (struct spart *)swift_malloc(
+             "sparts_in", sizeof(struct spart) * p->size_sparts_in)) == NULL)
       error("Failed to allocate sparts_in buffers.");
   }
   p->nr_sparts_in = 0;
   if (p->sparts_out == NULL) {
     p->size_sparts_out = proxy_buffinit;
-    if ((p->sparts_out = (struct spart *)malloc(sizeof(struct spart) *
-                                                p->size_sparts_out)) == NULL)
+    if ((p->sparts_out = (struct spart *)swift_malloc(
+             "sparts_out", sizeof(struct spart) * p->size_sparts_out)) == NULL)
       error("Failed to allocate sparts_out buffers.");
   }
   p->nr_sparts_out = 0;
diff --git a/src/runner.c b/src/runner.c
index d12605aef2ec90edae1a6c06e175b598d54a1eb1..104a2cfbaad108dec9f5194bae9bcf5fd4d85dff 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -55,6 +55,7 @@
 #include "hydro_properties.h"
 #include "kick.h"
 #include "logger.h"
+#include "memuse.h"
 #include "minmax.h"
 #include "runner_doiact_vec.h"
 #include "scheduler.h"
@@ -149,6 +150,7 @@ void runner_do_stars_ghost(struct runner *r, struct cell *c, int timer) {
   TIMER_TIC;
 
   /* Anything to do here? */
+  if (c->stars.count == 0) return;
   if (!cell_is_active_stars(c, e)) return;
 
   /* Recurse? */
@@ -614,7 +616,13 @@ void runner_do_star_formation(struct runner *r, struct cell *c, int timer) {
 
   TIMER_TIC;
 
+#ifdef SWIFT_DEBUG_CHECKS
+  if (c->nodeID != e->nodeID)
+    error("Running star formation task on a foreign node!");
+#endif
+
   /* Anything to do here? */
+  if (c->hydro.count == 0) return;
   if (!cell_is_active_hydro(c, e)) return;
 
   /* Recurse? */
@@ -663,9 +671,13 @@ void runner_do_star_formation(struct runner *r, struct cell *c, int timer) {
             /* Convert the gas particle to a star particle */
             struct spart *sp = cell_convert_part_to_spart(e, c, p, xp);
 
-            /* Copy the properties of the gas particle to the star particle */
-            star_formation_copy_properties(p, xp, sp, e, sf_props, cosmo,
-                                           with_cosmology);
+            /* Did we get a star? (Or did we run out of spare ones?) */
+            if (sp != NULL) {
+
+              /* Copy the properties of the gas particle to the star particle */
+              star_formation_copy_properties(p, xp, sp, e, sf_props, cosmo,
+                                             with_cosmology);
+            }
           }
 
         } else { /* Are we not star-forming? */
@@ -681,10 +693,11 @@ void runner_do_star_formation(struct runner *r, struct cell *c, int timer) {
 
   /* If we formed any stars, the star sorts are now invalid. We need to
    * re-compute them. */
-  if (with_feedback && (c == c->hydro.super) &&
+  if (with_feedback && (c == c->top) &&
       (current_stars_count != c->stars.count)) {
-    cell_clear_stars_sort_flags(c, /*is_super=*/1);
-    runner_do_stars_sort(r, c, 0x1FFF, /*cleanup=*/0, /*timer=*/0);
+
+    cell_clear_stars_sort_flags(c);
+    runner_do_all_stars_sort(r, c);
   }
 
   if (timer) TIMER_TOC(timer_do_star_formation);
@@ -815,6 +828,10 @@ void runner_do_hydro_sort(struct runner *r, struct cell *c, int flags,
 
   TIMER_TIC;
 
+#ifdef SWIFT_DEBUG_CHECKS
+  if (c->hydro.super == NULL) error("Task called above the super level!!!");
+#endif
+
   /* We need to do the local sorts plus whatever was requested further up. */
   flags |= c->hydro.do_sort;
   if (cleanup) {
@@ -844,14 +861,8 @@ void runner_do_hydro_sort(struct runner *r, struct cell *c, int flags,
   if (c->hydro.sorted == 0) c->hydro.ti_sort = r->e->ti_current;
 #endif
 
-  /* start by allocating the entry arrays in the requested dimensions. */
-  for (int j = 0; j < 13; j++) {
-    if ((flags & (1 << j)) && c->hydro.sort[j] == NULL) {
-      if ((c->hydro.sort[j] = (struct entry *)malloc(sizeof(struct entry) *
-                                                     (count + 1))) == NULL)
-        error("Failed to allocate sort memory.");
-    }
-  }
+  /* Allocate memory for sorting. */
+  cell_malloc_hydro_sorts(c, flags);
 
   /* Does this cell have any progeny? */
   if (c->split) {
@@ -1039,6 +1050,10 @@ void runner_do_stars_sort(struct runner *r, struct cell *c, int flags,
 
   TIMER_TIC;
 
+#ifdef SWIFT_DEBUG_CHECKS
+  if (c->hydro.super == NULL) error("Task called above the super level!!!");
+#endif
+
   /* We need to do the local sorts plus whatever was requested further up. */
   flags |= c->stars.do_sort;
   if (cleanup) {
@@ -1070,13 +1085,7 @@ void runner_do_stars_sort(struct runner *r, struct cell *c, int flags,
 #endif
 
   /* start by allocating the entry arrays in the requested dimensions. */
-  for (int j = 0; j < 13; j++) {
-    if ((flags & (1 << j)) && c->stars.sort[j] == NULL) {
-      if ((c->stars.sort[j] = (struct entry *)malloc(sizeof(struct entry) *
-                                                     (count + 1))) == NULL)
-        error("Failed to allocate sort memory.");
-    }
-  }
+  cell_malloc_stars_sorts(c, flags);
 
   /* Does this cell have any progeny? */
   if (c->split) {
@@ -1236,6 +1245,90 @@ void runner_do_stars_sort(struct runner *r, struct cell *c, int flags,
   if (clock) TIMER_TOC(timer_do_stars_sort);
 }
 
+/**
+ * @brief Recurse into a cell until reaching the super level and call
+ * the hydro sorting function there.
+ *
+ * This function must be called at or above the super level!
+ *
+ * This function will sort the particles in all 13 directions.
+ *
+ * @param r the #runner.
+ * @param c the #cell.
+ */
+void runner_do_all_hydro_sort(struct runner *r, struct cell *c) {
+
+#ifdef SWIFT_DEBUG_CHECKS
+  if (c->nodeID != engine_rank) error("Function called on a foreign cell!");
+#endif
+
+  /* Shall we sort at this level? */
+  if (c->hydro.super == c) {
+
+    /* Sort everything */
+    runner_do_hydro_sort(r, c, 0x1FFF, /*cleanup=*/0, /*timer=*/0);
+
+  } else {
+
+#ifdef SWIFT_DEBUG_CHECKS
+    if (c->hydro.super != NULL) error("Function called below the super level!");
+#endif
+
+    /* Ok, then, let's try lower */
+    if (c->split) {
+      for (int k = 0; k < 8; ++k) {
+        if (c->progeny[k] != NULL) runner_do_all_hydro_sort(r, c->progeny[k]);
+      }
+    } else {
+#ifdef SWIFT_DEBUG_CHECKS
+      error("Reached a leaf without encountering a hydro super cell!");
+#endif
+    }
+  }
+}
+
+/**
+ * @brief Recurse into a cell until reaching the super level and call
+ * the star sorting function there.
+ *
+ * This function must be called at or above the super level!
+ *
+ * This function will sort the particles in all 13 directions.
+ *
+ * @param r the #runner.
+ * @param c the #cell.
+ */
+void runner_do_all_stars_sort(struct runner *r, struct cell *c) {
+
+#ifdef SWIFT_DEBUG_CHECKS
+  if (c->nodeID != engine_rank) error("Function called on a foreign cell!");
+#endif
+
+  /* Shall we sort at this level? */
+  if (c->hydro.super == c) {
+
+    /* Sort everything */
+    runner_do_stars_sort(r, c, 0x1FFF, /*cleanup=*/0, /*timer=*/0);
+
+  } else {
+
+#ifdef SWIFT_DEBUG_CHECKS
+    if (c->hydro.super != NULL) error("Function called below the super level!");
+#endif
+
+    /* Ok, then, let's try lower */
+    if (c->split) {
+      for (int k = 0; k < 8; ++k) {
+        if (c->progeny[k] != NULL) runner_do_all_stars_sort(r, c->progeny[k]);
+      }
+    } else {
+#ifdef SWIFT_DEBUG_CHECKS
+      error("Reached a leaf without encountering a hydro super cell!");
+#endif
+    }
+  }
+}
+
 /**
  * @brief Initialize the multipoles before the gravity calculation.
  *
@@ -1932,6 +2025,7 @@ void runner_do_drift_spart(struct runner *r, struct cell *c, int timer) {
 
   if (timer) TIMER_TOC(timer_drift_spart);
 }
+
 /**
  * @brief Perform the first half-kick on all the active particles in a cell.
  *
@@ -3374,13 +3468,25 @@ void *runner_main(void *data) {
           break;
 #ifdef WITH_MPI
         case task_type_send:
-          if (t->subtype == task_subtype_tend) {
+          if (t->subtype == task_subtype_tend_part) {
+            free(t->buff);
+          }
+          if (t->subtype == task_subtype_tend_gpart) {
+            free(t->buff);
+          }
+          if (t->subtype == task_subtype_tend_spart) {
             free(t->buff);
           }
           break;
         case task_type_recv:
-          if (t->subtype == task_subtype_tend) {
-            cell_unpack_end_step(ci, (struct pcell_step *)t->buff);
+          if (t->subtype == task_subtype_tend_part) {
+            cell_unpack_end_step_hydro(ci, (struct pcell_step_hydro *)t->buff);
+            free(t->buff);
+          } else if (t->subtype == task_subtype_tend_gpart) {
+            cell_unpack_end_step_grav(ci, (struct pcell_step_grav *)t->buff);
+            free(t->buff);
+          } else if (t->subtype == task_subtype_tend_spart) {
+            cell_unpack_end_step_stars(ci, (struct pcell_step_stars *)t->buff);
             free(t->buff);
           } else if (t->subtype == task_subtype_xv) {
             runner_do_recv_part(r, ci, 1, 1);
diff --git a/src/runner.h b/src/runner.h
index b15dd001d928121ed5a60f0e9a601adb706b2191..fa32befc4f01fd5e39e21d5e907ed8f71ccb55e2 100644
--- a/src/runner.h
+++ b/src/runner.h
@@ -73,6 +73,8 @@ void runner_do_hydro_sort(struct runner *r, struct cell *c, int flag,
                           int cleanup, int clock);
 void runner_do_stars_sort(struct runner *r, struct cell *c, int flag,
                           int cleanup, int clock);
+void runner_do_all_hydro_sort(struct runner *r, struct cell *c);
+void runner_do_all_stars_sort(struct runner *r, struct cell *c);
 void runner_do_drift_part(struct runner *r, struct cell *c, int timer);
 void runner_do_drift_gpart(struct runner *r, struct cell *c, int timer);
 void runner_do_drift_spart(struct runner *r, struct cell *c, int timer);
diff --git a/src/runner_doiact_stars.h b/src/runner_doiact_stars.h
index 1ce0c370f31d860dd36e5af54020c8feb0da6c4f..6b8b12ad966d6ee1271ae8e5d48a0e2b5d9166c4 100644
--- a/src/runner_doiact_stars.h
+++ b/src/runner_doiact_stars.h
@@ -300,7 +300,7 @@ void DO_SYM_PAIR1_STARS(struct runner *r, struct cell *ci, struct cell *cj,
          pid >= 0 && sort_i[pid].d + hi_max + dx_max > dj_min; pid--) {
 
       /* Get a hold of the ith part in ci. */
-      struct spart *restrict spi = &sparts_i[pid];
+      struct spart *restrict spi = &sparts_i[sort_i[pid].i];
       const float hi = spi->h;
 
       /* Skip inactive particles */
@@ -416,7 +416,7 @@ void DO_SYM_PAIR1_STARS(struct runner *r, struct cell *ci, struct cell *cj,
          pjd++) {
 
       /* Get a hold of the jth part in cj. */
-      struct spart *spj = &sparts_j[pjd];
+      struct spart *spj = &sparts_j[sort_j[pjd].i];
       const float hj = spj->h;
 
       /* Skip inactive particles */
@@ -1444,7 +1444,7 @@ void DOSUB_SUBSET_STARS(struct runner *r, struct cell *ci, struct spart *sparts,
     }
 
     /* Otherwise, compute the pair directly. */
-    else if (cell_is_active_stars(ci, e)) {
+    else if (cell_is_active_stars(ci, e) && cj->hydro.count > 0) {
 
       /* Do any of the cells need to be drifted first? */
       if (cell_is_active_stars(ci, e)) {
diff --git a/src/scheduler.c b/src/scheduler.c
index 729b566e3be7d20bc5a73fc1692b0911885b0efe..80ce572002b06991e1720db36e4f1b2fe90daa62 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -46,6 +46,7 @@
 #include "error.h"
 #include "intrinsics.h"
 #include "kernel_hydro.h"
+#include "memuse.h"
 #include "queue.h"
 #include "sort_part.h"
 #include "space.h"
@@ -67,9 +68,10 @@ static void scheduler_extend_unlocks(struct scheduler *s) {
 
   /* Allocate the new buffer. */
   const int size_unlocks_new = s->size_unlocks * 2;
-  struct task **unlocks_new =
-      (struct task **)malloc(sizeof(struct task *) * size_unlocks_new);
-  int *unlock_ind_new = (int *)malloc(sizeof(int) * size_unlocks_new);
+  struct task **unlocks_new = (struct task **)swift_malloc(
+      "unlocks", sizeof(struct task *) * size_unlocks_new);
+  int *unlock_ind_new =
+      (int *)swift_malloc("unlock_ind", sizeof(int) * size_unlocks_new);
   if (unlocks_new == NULL || unlock_ind_new == NULL)
     error("Failed to re-allocate unlocks.");
 
@@ -80,8 +82,8 @@ static void scheduler_extend_unlocks(struct scheduler *s) {
   /* Copy the buffers. */
   memcpy(unlocks_new, s->unlocks, sizeof(struct task *) * s->size_unlocks);
   memcpy(unlock_ind_new, s->unlock_ind, sizeof(int) * s->size_unlocks);
-  free(s->unlocks);
-  free(s->unlock_ind);
+  swift_free("unlocks", s->unlocks);
+  swift_free("unlock_ind", s->unlock_ind);
   s->unlocks = unlocks_new;
   s->unlock_ind = unlock_ind_new;
 
@@ -545,6 +547,7 @@ static void scheduler_splittask_hydro(struct task *t, struct scheduler *s) {
   /* Note this is not very clean as the scheduler should not really
      access the engine... */
   const int with_feedback = (s->space->e->policy & engine_policy_feedback);
+  const int with_stars = (s->space->e->policy & engine_policy_stars);
 
   /* Iterate on this task until we're done with it. */
   int redo = 1;
@@ -556,7 +559,7 @@ static void scheduler_splittask_hydro(struct task *t, struct scheduler *s) {
     /* Is this a non-empty self-task? */
     const int is_self =
         (t->type == task_type_self) && (t->ci != NULL) &&
-        ((t->ci->hydro.count > 0) || (with_feedback && t->ci->stars.count > 0));
+        ((t->ci->hydro.count > 0) || (with_stars && t->ci->stars.count > 0));
 
     /* Is this a non-empty pair-task? */
     const int is_pair =
@@ -1321,7 +1324,8 @@ void scheduler_set_unlocks(struct scheduler *s) {
 
   /* Store the counts for each task. */
   short int *counts;
-  if ((counts = (short int *)malloc(sizeof(short int) * s->nr_tasks)) == NULL)
+  if ((counts = (short int *)swift_malloc(
+           "counts", sizeof(short int) * s->nr_tasks)) == NULL)
     error("Failed to allocate temporary counts array.");
   bzero(counts, sizeof(short int) * s->nr_tasks);
   for (int k = 0; k < s->nr_unlocks; k++) {
@@ -1339,7 +1343,8 @@ void scheduler_set_unlocks(struct scheduler *s) {
 
   /* Compute the offset for each unlock block. */
   int *offsets;
-  if ((offsets = (int *)malloc(sizeof(int) * (s->nr_tasks + 1))) == NULL)
+  if ((offsets = (int *)swift_malloc("offsets",
+                                     sizeof(int) * (s->nr_tasks + 1))) == NULL)
     error("Failed to allocate temporary offsets array.");
   offsets[0] = 0;
   for (int k = 0; k < s->nr_tasks; k++) {
@@ -1353,8 +1358,8 @@ void scheduler_set_unlocks(struct scheduler *s) {
 
   /* Create and fill a temporary array with the sorted unlocks. */
   struct task **unlocks;
-  if ((unlocks = (struct task **)malloc(sizeof(struct task *) *
-                                        s->size_unlocks)) == NULL)
+  if ((unlocks = (struct task **)swift_malloc(
+           "unlocks", sizeof(struct task *) * s->size_unlocks)) == NULL)
     error("Failed to allocate temporary unlocks array.");
   for (int k = 0; k < s->nr_unlocks; k++) {
     const int ind = s->unlock_ind[k];
@@ -1363,7 +1368,7 @@ void scheduler_set_unlocks(struct scheduler *s) {
   }
 
   /* Swap the unlocks. */
-  free(s->unlocks);
+  swift_free("unlocks", s->unlocks);
   s->unlocks = unlocks;
 
   /* Re-set the offsets. */
@@ -1395,8 +1400,8 @@ void scheduler_set_unlocks(struct scheduler *s) {
 #endif
 
   /* Clean up. */
-  free(counts);
-  free(offsets);
+  swift_free("counts", counts);
+  swift_free("offsets", offsets);
 }
 
 /**
@@ -1478,14 +1483,16 @@ void scheduler_reset(struct scheduler *s, int size) {
     scheduler_free_tasks(s);
 
     /* Allocate the new lists. */
-    if (posix_memalign((void **)&s->tasks, task_align,
+    if (swift_memalign("tasks", (void **)&s->tasks, task_align,
                        size * sizeof(struct task)) != 0)
       error("Failed to allocate task array.");
 
-    if ((s->tasks_ind = (int *)malloc(sizeof(int) * size)) == NULL)
+    if ((s->tasks_ind = (int *)swift_malloc("tasks_ind", sizeof(int) * size)) ==
+        NULL)
       error("Failed to allocate task lists.");
 
-    if ((s->tid_active = (int *)malloc(sizeof(int) * size)) == NULL)
+    if ((s->tid_active =
+             (int *)swift_malloc("tid_active", sizeof(int) * size)) == NULL)
       error("Failed to allocate aactive task lists.");
   }
 
@@ -1623,6 +1630,9 @@ void scheduler_reweight(struct scheduler *s, int verbose) {
       case task_type_drift_gpart:
         cost = wscale * gcount_i;
         break;
+      case task_type_drift_spart:
+        cost = wscale * scount_i;
+        break;
       case task_type_init_grav:
         cost = wscale * gcount_i;
         break;
@@ -1641,6 +1651,12 @@ void scheduler_reweight(struct scheduler *s, int verbose) {
       case task_type_end_grav_force:
         cost = wscale * gcount_i;
         break;
+      case task_type_cooling:
+        cost = wscale * count_i;
+        break;
+      case task_type_star_formation:
+        cost = wscale * (count_i + scount_i);
+        break;
       case task_type_kick1:
         cost = wscale * count_i + wscale * gcount_i;
         break;
@@ -1840,13 +1856,27 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
         break;
       case task_type_recv:
 #ifdef WITH_MPI
-        if (t->subtype == task_subtype_tend) {
-          t->buff = (struct pcell_step *)malloc(sizeof(struct pcell_step) *
-                                                t->ci->mpi.pcell_size);
-          err = MPI_Irecv(t->buff,
-                          t->ci->mpi.pcell_size * sizeof(struct pcell_step),
-                          MPI_BYTE, t->ci->nodeID, t->flags,
-                          subtaskMPI_comms[t->subtype], &t->req);
+        if (t->subtype == task_subtype_tend_part) {
+          t->buff = (struct pcell_step_hydro *)malloc(
+              sizeof(struct pcell_step_hydro) * t->ci->mpi.pcell_size);
+          err = MPI_Irecv(
+              t->buff, t->ci->mpi.pcell_size * sizeof(struct pcell_step_hydro),
+              MPI_BYTE, t->ci->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+              &t->req);
+        } else if (t->subtype == task_subtype_tend_gpart) {
+          t->buff = (struct pcell_step_grav *)malloc(
+              sizeof(struct pcell_step_grav) * t->ci->mpi.pcell_size);
+          err = MPI_Irecv(
+              t->buff, t->ci->mpi.pcell_size * sizeof(struct pcell_step_grav),
+              MPI_BYTE, t->ci->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+              &t->req);
+        } else if (t->subtype == task_subtype_tend_spart) {
+          t->buff = (struct pcell_step_stars *)malloc(
+              sizeof(struct pcell_step_stars) * t->ci->mpi.pcell_size);
+          err = MPI_Irecv(
+              t->buff, t->ci->mpi.pcell_size * sizeof(struct pcell_step_stars),
+              MPI_BYTE, t->ci->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+              &t->req);
         } else if (t->subtype == task_subtype_xv ||
                    t->subtype == task_subtype_rho ||
                    t->subtype == task_subtype_gradient) {
@@ -1880,21 +1910,61 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
         break;
       case task_type_send:
 #ifdef WITH_MPI
-        if (t->subtype == task_subtype_tend) {
-          t->buff = (struct pcell_step *)malloc(sizeof(struct pcell_step) *
-                                                t->ci->mpi.pcell_size);
-          cell_pack_end_step(t->ci, (struct pcell_step *)t->buff);
-          if ((t->ci->mpi.pcell_size * sizeof(struct pcell_step)) >
-              s->mpi_message_limit)
-            err = MPI_Isend(t->buff,
-                            t->ci->mpi.pcell_size * sizeof(struct pcell_step),
-                            MPI_BYTE, t->cj->nodeID, t->flags,
-                            subtaskMPI_comms[t->subtype], &t->req);
-          else
-            err = MPI_Issend(t->buff,
-                             t->ci->mpi.pcell_size * sizeof(struct pcell_step),
-                             MPI_BYTE, t->cj->nodeID, t->flags,
-                             subtaskMPI_comms[t->subtype], &t->req);
+        if (t->subtype == task_subtype_tend_part) {
+          t->buff = (struct pcell_step_hydro *)malloc(
+              sizeof(struct pcell_step_hydro) * t->ci->mpi.pcell_size);
+          cell_pack_end_step_hydro(t->ci, (struct pcell_step_hydro *)t->buff);
+
+          if ((t->ci->mpi.pcell_size * sizeof(struct pcell_step_hydro)) >
+              s->mpi_message_limit) {
+            err = MPI_Isend(
+                t->buff,
+                t->ci->mpi.pcell_size * sizeof(struct pcell_step_hydro),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          } else {
+            err = MPI_Issend(
+                t->buff,
+                t->ci->mpi.pcell_size * sizeof(struct pcell_step_hydro),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          }
+        } else if (t->subtype == task_subtype_tend_gpart) {
+          t->buff = (struct pcell_step_grav *)malloc(
+              sizeof(struct pcell_step_grav) * t->ci->mpi.pcell_size);
+          cell_pack_end_step_grav(t->ci, (struct pcell_step_grav *)t->buff);
+
+          if ((t->ci->mpi.pcell_size * sizeof(struct pcell_step_grav)) >
+              s->mpi_message_limit) {
+            err = MPI_Isend(
+                t->buff, t->ci->mpi.pcell_size * sizeof(struct pcell_step_grav),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          } else {
+            err = MPI_Issend(
+                t->buff, t->ci->mpi.pcell_size * sizeof(struct pcell_step_grav),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          }
+        } else if (t->subtype == task_subtype_tend_spart) {
+          t->buff = (struct pcell_step_stars *)malloc(
+              sizeof(struct pcell_step_stars) * t->ci->mpi.pcell_size);
+          cell_pack_end_step_stars(t->ci, (struct pcell_step_stars *)t->buff);
+
+          if ((t->ci->mpi.pcell_size * sizeof(struct pcell_step_stars)) >
+              s->mpi_message_limit) {
+            err = MPI_Isend(
+                t->buff,
+                t->ci->mpi.pcell_size * sizeof(struct pcell_step_stars),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          } else {
+            err = MPI_Issend(
+                t->buff,
+                t->ci->mpi.pcell_size * sizeof(struct pcell_step_stars),
+                MPI_BYTE, t->cj->nodeID, t->flags, subtaskMPI_comms[t->subtype],
+                &t->req);
+          }
         } else if (t->subtype == task_subtype_xv ||
                    t->subtype == task_subtype_rho ||
                    t->subtype == task_subtype_gradient) {
@@ -2147,7 +2217,7 @@ void scheduler_init(struct scheduler *s, struct space *space, int nr_tasks,
   lock_init(&s->lock);
 
   /* Allocate the queues. */
-  if (posix_memalign((void **)&s->queues, queue_struct_align,
+  if (swift_memalign("queues", (void **)&s->queues, queue_struct_align,
                      sizeof(struct queue) * nr_queues) != 0)
     error("Failed to allocate queues.");
 
@@ -2160,10 +2230,11 @@ void scheduler_init(struct scheduler *s, struct space *space, int nr_tasks,
     error("Failed to initialize sleep barrier.");
 
   /* Init the unlocks. */
-  if ((s->unlocks = (struct task **)malloc(
-           sizeof(struct task *) * scheduler_init_nr_unlocks)) == NULL ||
-      (s->unlock_ind =
-           (int *)malloc(sizeof(int) * scheduler_init_nr_unlocks)) == NULL)
+  if ((s->unlocks = (struct task **)swift_malloc(
+           "unlocks", sizeof(struct task *) * scheduler_init_nr_unlocks)) ==
+          NULL ||
+      (s->unlock_ind = (int *)swift_malloc(
+           "unlock_ind", sizeof(int) * scheduler_init_nr_unlocks)) == NULL)
     error("Failed to allocate unlocks.");
   s->nr_unlocks = 0;
   s->size_unlocks = scheduler_init_nr_unlocks;
@@ -2214,10 +2285,10 @@ void scheduler_print_tasks(const struct scheduler *s, const char *fileName) {
 void scheduler_clean(struct scheduler *s) {
 
   scheduler_free_tasks(s);
-  free(s->unlocks);
-  free(s->unlock_ind);
+  swift_free("unlocks", s->unlocks);
+  swift_free("unlock_ind", s->unlock_ind);
   for (int i = 0; i < s->nr_queues; ++i) queue_clean(&s->queues[i]);
-  free(s->queues);
+  swift_free("queues", s->queues);
 }
 
 /**
@@ -2226,15 +2297,15 @@ void scheduler_clean(struct scheduler *s) {
 void scheduler_free_tasks(struct scheduler *s) {
 
   if (s->tasks != NULL) {
-    free(s->tasks);
+    swift_free("tasks", s->tasks);
     s->tasks = NULL;
   }
   if (s->tasks_ind != NULL) {
-    free(s->tasks_ind);
+    swift_free("tasks_ind", s->tasks_ind);
     s->tasks_ind = NULL;
   }
   if (s->tid_active != NULL) {
-    free(s->tid_active);
+    swift_free("tid_active", s->tid_active);
     s->tid_active = NULL;
   }
   s->size = 0;
diff --git a/src/serial_io.c b/src/serial_io.c
index b55f4780814fe45544a5680e95e67f55194fc5e8..55a468411b7b9f84d4e05b8f388a5de7873f7f59 100644
--- a/src/serial_io.c
+++ b/src/serial_io.c
@@ -50,6 +50,7 @@
 #include "hydro_properties.h"
 #include "io_properties.h"
 #include "kernel_hydro.h"
+#include "memuse.h"
 #include "part.h"
 #include "part_type.h"
 #include "star_formation_io.h"
@@ -364,7 +365,7 @@ void writeArray(const struct engine* e, hid_t grp, char* fileName,
 
   /* Allocate temporary buffer */
   void* temp = NULL;
-  if (posix_memalign((void**)&temp, IO_BUFFER_ALIGNMENT,
+  if (swift_memalign("writebuff", (void**)&temp, IO_BUFFER_ALIGNMENT,
                      num_elements * typeSize) != 0)
     error("Unable to allocate temporary i/o buffer");
 
@@ -415,7 +416,7 @@ void writeArray(const struct engine* e, hid_t grp, char* fileName,
   if (h_err < 0) error("Error while writing data array '%s'.", props.name);
 
   /* Free and close everything */
-  free(temp);
+  swift_free("writebuff", temp);
   H5Dclose(h_data);
   H5Sclose(h_memspace);
   H5Sclose(h_filespace);
@@ -614,7 +615,7 @@ void read_ic_serial(char* fileName, const struct unit_system* internal_units,
   /* Allocate memory to store SPH particles */
   if (with_hydro) {
     *Ngas = N[0];
-    if (posix_memalign((void**)parts, part_align,
+    if (swift_memalign("parts", (void**)parts, part_align,
                        *Ngas * sizeof(struct part)) != 0)
       error("Error while allocating memory for SPH particles");
     bzero(*parts, *Ngas * sizeof(struct part));
@@ -623,7 +624,7 @@ void read_ic_serial(char* fileName, const struct unit_system* internal_units,
   /* Allocate memory to store stars particles */
   if (with_stars) {
     *Nstars = N[swift_type_stars];
-    if (posix_memalign((void**)sparts, spart_align,
+    if (swift_memalign("sparts", (void**)sparts, spart_align,
                        *Nstars * sizeof(struct spart)) != 0)
       error("Error while allocating memory for stars particles");
     bzero(*sparts, *Nstars * sizeof(struct spart));
@@ -635,7 +636,7 @@ void read_ic_serial(char* fileName, const struct unit_system* internal_units,
     *Ngparts = (with_hydro ? N[swift_type_gas] : 0) +
                N[swift_type_dark_matter] +
                (with_stars ? N[swift_type_stars] : 0);
-    if (posix_memalign((void**)gparts, gpart_align,
+    if (swift_memalign("gparts", (void**)gparts, gpart_align,
                        *Ngparts * sizeof(struct gpart)) != 0)
       error("Error while allocating memory for gravity particles");
     bzero(*gparts, *Ngparts * sizeof(struct gpart));
@@ -1132,10 +1133,12 @@ void write_output_serial(struct engine* e, const char* baseName,
               Nparticles = Ngas_written;
 
               /* Allocate temporary arrays */
-              if (posix_memalign((void**)&parts_written, part_align,
+              if (swift_memalign("parts_written", (void**)&parts_written,
+                                 part_align,
                                  Ngas_written * sizeof(struct part)) != 0)
                 error("Error while allocating temporart memory for parts");
-              if (posix_memalign((void**)&xparts_written, xpart_align,
+              if (swift_memalign("xparts_written", (void**)&xparts_written,
+                                 xpart_align,
                                  Ngas_written * sizeof(struct xpart)) != 0)
                 error("Error while allocating temporart memory for xparts");
 
@@ -1181,12 +1184,14 @@ void write_output_serial(struct engine* e, const char* baseName,
               Nparticles = Ndm_written;
 
               /* Allocate temporary array */
-              if (posix_memalign((void**)&gparts_written, gpart_align,
+              if (swift_memalign("gparts_written", (void**)&gparts_written,
+                                 gpart_align,
                                  Ndm_written * sizeof(struct gpart)) != 0)
                 error("Error while allocating temporart memory for gparts");
 
               if (with_stf) {
-                if (posix_memalign(
+                if (swift_memalign(
+                        "gpart_group_written",
                         (void**)&gpart_group_data_written, gpart_align,
                         Ndm_written * sizeof(struct velociraptor_gpart_data)) !=
                     0)
@@ -1229,7 +1234,8 @@ void write_output_serial(struct engine* e, const char* baseName,
               Nparticles = Nstars_written;
 
               /* Allocate temporary arrays */
-              if (posix_memalign((void**)&sparts_written, spart_align,
+              if (swift_memalign("sparts_written", (void**)&sparts_written,
+                                 spart_align,
                                  Nstars_written * sizeof(struct spart)) != 0)
                 error("Error while allocating temporart memory for sparts");
 
@@ -1270,11 +1276,12 @@ void write_output_serial(struct engine* e, const char* baseName,
         }
 
         /* Free temporary array */
-        if (parts_written) free(parts_written);
-        if (xparts_written) free(xparts_written);
-        if (gparts_written) free(gparts_written);
-        if (gpart_group_data_written) free(gpart_group_data_written);
-        if (sparts_written) free(sparts_written);
+        if (parts_written) swift_free("parts_written", parts_written);
+        if (xparts_written) swift_free("xparts_written", xparts_written);
+        if (gparts_written) swift_free("gparts_written", gparts_written);
+        if (gpart_group_data_written)
+          swift_free("gpart_group_written", gpart_group_data_written);
+        if (sparts_written) swift_free("sparts_written", sparts_written);
 
         /* Close particle group */
         H5Gclose(h_grp);
diff --git a/src/single_io.c b/src/single_io.c
index 4b23310ee02f3b485eff1a0358de850f497a3478..917dd880495300cea8f5d16df85513c6386b53f2 100644
--- a/src/single_io.c
+++ b/src/single_io.c
@@ -49,6 +49,7 @@
 #include "hydro_properties.h"
 #include "io_properties.h"
 #include "kernel_hydro.h"
+#include "memuse.h"
 #include "part.h"
 #include "part_type.h"
 #include "star_formation_io.h"
@@ -240,7 +241,7 @@ void writeArray(const struct engine* e, hid_t grp, char* fileName,
 
   /* Allocate temporary buffer */
   void* temp = NULL;
-  if (posix_memalign((void**)&temp, IO_BUFFER_ALIGNMENT,
+  if (swift_memalign("writebuff", (void**)&temp, IO_BUFFER_ALIGNMENT,
                      num_elements * typeSize) != 0)
     error("Unable to allocate temporary i/o buffer");
 
@@ -332,7 +333,7 @@ void writeArray(const struct engine* e, hid_t grp, char* fileName,
   io_write_attribute_s(h_data, "Conversion factor", buffer);
 
   /* Free and close everything */
-  free(temp);
+  swift_free("writebuff", temp);
   H5Pclose(h_prop);
   H5Dclose(h_data);
   H5Sclose(h_space);
@@ -502,7 +503,7 @@ void read_ic_single(const char* fileName,
   /* Allocate memory to store SPH particles */
   if (with_hydro) {
     *Ngas = N[swift_type_gas];
-    if (posix_memalign((void**)parts, part_align,
+    if (swift_memalign("parts", (void**)parts, part_align,
                        *Ngas * sizeof(struct part)) != 0)
       error("Error while allocating memory for SPH particles");
     bzero(*parts, *Ngas * sizeof(struct part));
@@ -511,7 +512,7 @@ void read_ic_single(const char* fileName,
   /* Allocate memory to store star particles */
   if (with_stars) {
     *Nstars = N[swift_type_stars];
-    if (posix_memalign((void**)sparts, spart_align,
+    if (swift_memalign("sparts", (void**)sparts, spart_align,
                        *Nstars * sizeof(struct spart)) != 0)
       error("Error while allocating memory for stars particles");
     bzero(*sparts, *Nstars * sizeof(struct spart));
@@ -523,7 +524,7 @@ void read_ic_single(const char* fileName,
     *Ngparts = (with_hydro ? N[swift_type_gas] : 0) +
                N[swift_type_dark_matter] +
                (with_stars ? N[swift_type_stars] : 0);
-    if (posix_memalign((void**)gparts, gpart_align,
+    if (swift_memalign("gparts", (void**)gparts, gpart_align,
                        *Ngparts * sizeof(struct gpart)) != 0)
       error("Error while allocating memory for gravity particles");
     bzero(*gparts, *Ngparts * sizeof(struct gpart));
@@ -935,10 +936,12 @@ void write_output_single(struct engine* e, const char* baseName,
           N = Ngas_written;
 
           /* Allocate temporary arrays */
-          if (posix_memalign((void**)&parts_written, part_align,
+          if (swift_memalign("parts_written", (void**)&parts_written,
+                             part_align,
                              Ngas_written * sizeof(struct part)) != 0)
             error("Error while allocating temporart memory for parts");
-          if (posix_memalign((void**)&xparts_written, xpart_align,
+          if (swift_memalign("xparts_written", (void**)&xparts_written,
+                             xpart_align,
                              Ngas_written * sizeof(struct xpart)) != 0)
             error("Error while allocating temporart memory for xparts");
 
@@ -983,13 +986,15 @@ void write_output_single(struct engine* e, const char* baseName,
           N = Ndm_written;
 
           /* Allocate temporary array */
-          if (posix_memalign((void**)&gparts_written, gpart_align,
+          if (swift_memalign("gparts_written", (void**)&gparts_written,
+                             gpart_align,
                              Ndm_written * sizeof(struct gpart)) != 0)
             error("Error while allocating temporart memory for gparts");
 
           if (with_stf) {
-            if (posix_memalign(
-                    (void**)&gpart_group_data_written, gpart_align,
+            if (swift_memalign(
+                    "gpart_group_written", (void**)&gpart_group_data_written,
+                    gpart_align,
                     Ndm_written * sizeof(struct velociraptor_gpart_data)) != 0)
               error(
                   "Error while allocating temporart memory for gparts STF "
@@ -1028,7 +1033,8 @@ void write_output_single(struct engine* e, const char* baseName,
           N = Nstars_written;
 
           /* Allocate temporary arrays */
-          if (posix_memalign((void**)&sparts_written, spart_align,
+          if (swift_memalign("sparts_written", (void**)&sparts_written,
+                             spart_align,
                              Nstars_written * sizeof(struct spart)) != 0)
             error("Error while allocating temporart memory for sparts");
 
@@ -1068,11 +1074,12 @@ void write_output_single(struct engine* e, const char* baseName,
     }
 
     /* Free temporary arrays */
-    if (parts_written) free(parts_written);
-    if (xparts_written) free(xparts_written);
-    if (gparts_written) free(gparts_written);
-    if (gpart_group_data_written) free(gpart_group_data_written);
-    if (sparts_written) free(sparts_written);
+    if (parts_written) swift_free("parts_written", parts_written);
+    if (xparts_written) swift_free("xparts_written", xparts_written);
+    if (gparts_written) swift_free("gparts_written", gparts_written);
+    if (gpart_group_data_written)
+      swift_free("gpart_group_written", gpart_group_data_written);
+    if (sparts_written) swift_free("sparts_written", sparts_written);
 
     /* Close particle group */
     H5Gclose(h_grp);
diff --git a/src/space.c b/src/space.c
index 9161e578d0afca018caf28e4d5118ccbce08cd01..a2a08be232bb8b8a439e23efb6d143d0c069771b 100644
--- a/src/space.c
+++ b/src/space.c
@@ -52,6 +52,7 @@
 #include "kernel_hydro.h"
 #include "lock.h"
 #include "memswap.h"
+#include "memuse.h"
 #include "minmax.h"
 #include "multipole.h"
 #include "restart.h"
@@ -235,6 +236,7 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
     c->grav.down = NULL;
     c->grav.mesh = NULL;
     c->grav.end_force = NULL;
+    c->top = c;
     c->super = c;
     c->hydro.super = c;
     c->grav.super = c;
@@ -260,33 +262,30 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
 #endif
     if (s->with_self_gravity)
       bzero(c->grav.multipole, sizeof(struct gravity_tensors));
-    for (int i = 0; i < 13; i++) {
-      if (c->hydro.sort[i] != NULL) {
-        free(c->hydro.sort[i]);
-        c->hydro.sort[i] = NULL;
-      }
-      if (c->stars.sort[i] != NULL) {
-        free(c->stars.sort[i]);
-        c->stars.sort[i] = NULL;
-      }
-    }
+
+    cell_free_hydro_sorts(c);
+    cell_free_stars_sorts(c);
 #if WITH_MPI
     c->mpi.tag = -1;
 
     c->mpi.hydro.recv_xv = NULL;
     c->mpi.hydro.recv_rho = NULL;
     c->mpi.hydro.recv_gradient = NULL;
+    c->mpi.hydro.recv_ti = NULL;
     c->mpi.grav.recv = NULL;
+    c->mpi.grav.recv_ti = NULL;
     c->mpi.stars.recv = NULL;
-    c->mpi.recv_ti = NULL;
+    c->mpi.stars.recv_ti = NULL;
     c->mpi.limiter.recv = NULL;
 
     c->mpi.hydro.send_xv = NULL;
     c->mpi.hydro.send_rho = NULL;
     c->mpi.hydro.send_gradient = NULL;
+    c->mpi.hydro.send_ti = NULL;
     c->mpi.grav.send = NULL;
+    c->mpi.grav.send_ti = NULL;
     c->mpi.stars.send = NULL;
-    c->mpi.send_ti = NULL;
+    c->mpi.stars.send_ti = NULL;
     c->mpi.limiter.send = NULL;
 #endif
   }
@@ -294,6 +293,8 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
 
 /**
  * @brief Free up any allocated cells.
+ *
+ * @param s The #space.
  */
 void space_free_cells(struct space *s) {
 
@@ -308,6 +309,32 @@ void space_free_cells(struct space *s) {
             clocks_getunit());
 }
 
+/**
+ * @brief Free any memory in use for foreign particles.
+ *
+ * @param s The #space.
+ */
+void space_free_foreign_parts(struct space *s) {
+
+#ifdef WITH_MPI
+  if (s->parts_foreign != NULL) {
+    swift_free("parts_foreign", s->parts_foreign);
+    s->size_parts_foreign = 0;
+    s->parts_foreign = NULL;
+  }
+  if (s->gparts_foreign != NULL) {
+    swift_free("gparts_foreign", s->gparts_foreign);
+    s->size_gparts_foreign = 0;
+    s->gparts_foreign = NULL;
+  }
+  if (s->sparts_foreign != NULL) {
+    swift_free("sparts_foreign", s->sparts_foreign);
+    s->size_sparts_foreign = 0;
+    s->sparts_foreign = NULL;
+  }
+#endif
+}
+
 /**
  * @brief Re-build the top-level cell grid.
  *
@@ -415,7 +442,8 @@ void space_regrid(struct space *s, int verbose) {
     oldwidth[1] = s->width[1];
     oldwidth[2] = s->width[2];
 
-    if ((oldnodeIDs = (int *)malloc(sizeof(int) * s->nr_cells)) == NULL)
+    if ((oldnodeIDs =
+             (int *)swift_malloc("nodeIDs", sizeof(int) * s->nr_cells)) == NULL)
       error("Failed to allocate temporary nodeIDs.");
 
     int cid = 0;
@@ -448,12 +476,13 @@ void space_regrid(struct space *s, int verbose) {
     /* Free the old cells, if they were allocated. */
     if (s->cells_top != NULL) {
       space_free_cells(s);
-      free(s->local_cells_with_tasks_top);
-      free(s->local_cells_top);
-      free(s->cells_with_particles_top);
-      free(s->local_cells_with_particles_top);
-      free(s->cells_top);
-      free(s->multipoles_top);
+      swift_free("local_cells_with_tasks_top", s->local_cells_with_tasks_top);
+      swift_free("local_cells_top", s->local_cells_top);
+      swift_free("cells_with_particles_top", s->cells_with_particles_top);
+      swift_free("local_cells_with_particles_top",
+                 s->local_cells_with_particles_top);
+      swift_free("cells_top", s->cells_top);
+      swift_free("multipoles_top", s->multipoles_top);
     }
 
     /* Also free the task arrays, these will be regenerated and we can use the
@@ -470,39 +499,44 @@ void space_regrid(struct space *s, int verbose) {
 
     /* Allocate the highest level of cells. */
     s->tot_cells = s->nr_cells = cdim[0] * cdim[1] * cdim[2];
-    if (posix_memalign((void **)&s->cells_top, cell_align,
+
+    if (swift_memalign("cells_top", (void **)&s->cells_top, cell_align,
                        s->nr_cells * sizeof(struct cell)) != 0)
       error("Failed to allocate top-level cells.");
     bzero(s->cells_top, s->nr_cells * sizeof(struct cell));
 
     /* Allocate the multipoles for the top-level cells. */
     if (s->with_self_gravity) {
-      if (posix_memalign((void **)&s->multipoles_top, multipole_align,
+      if (swift_memalign("multipoles_top", (void **)&s->multipoles_top,
+                         multipole_align,
                          s->nr_cells * sizeof(struct gravity_tensors)) != 0)
         error("Failed to allocate top-level multipoles.");
       bzero(s->multipoles_top, s->nr_cells * sizeof(struct gravity_tensors));
     }
 
     /* Allocate the indices of local cells */
-    if (posix_memalign((void **)&s->local_cells_top, SWIFT_STRUCT_ALIGNMENT,
-                       s->nr_cells * sizeof(int)) != 0)
+    if (swift_memalign("local_cells_top", (void **)&s->local_cells_top,
+                       SWIFT_STRUCT_ALIGNMENT, s->nr_cells * sizeof(int)) != 0)
       error("Failed to allocate indices of local top-level cells.");
     bzero(s->local_cells_top, s->nr_cells * sizeof(int));
 
     /* Allocate the indices of local cells with tasks */
-    if (posix_memalign((void **)&s->local_cells_with_tasks_top,
+    if (swift_memalign("local_cells_with_tasks_top",
+                       (void **)&s->local_cells_with_tasks_top,
                        SWIFT_STRUCT_ALIGNMENT, s->nr_cells * sizeof(int)) != 0)
       error("Failed to allocate indices of local top-level cells with tasks.");
     bzero(s->local_cells_with_tasks_top, s->nr_cells * sizeof(int));
 
     /* Allocate the indices of cells with particles */
-    if (posix_memalign((void **)&s->cells_with_particles_top,
+    if (swift_memalign("cells_with_particles_top",
+                       (void **)&s->cells_with_particles_top,
                        SWIFT_STRUCT_ALIGNMENT, s->nr_cells * sizeof(int)) != 0)
       error("Failed to allocate indices of top-level cells with particles.");
     bzero(s->cells_with_particles_top, s->nr_cells * sizeof(int));
 
     /* Allocate the indices of local cells with particles */
-    if (posix_memalign((void **)&s->local_cells_with_particles_top,
+    if (swift_memalign("local_cells_with_particles_top",
+                       (void **)&s->local_cells_with_particles_top,
                        SWIFT_STRUCT_ALIGNMENT, s->nr_cells * sizeof(int)) != 0)
       error(
           "Failed to allocate indices of local top-level cells with "
@@ -519,6 +553,8 @@ void space_regrid(struct space *s, int verbose) {
         error("Failed to init spinlock for multipoles.");
       if (lock_init(&s->cells_top[k].stars.lock) != 0)
         error("Failed to init spinlock for stars.");
+      if (lock_init(&s->cells_top[k].stars.star_formation_lock) != 0)
+        error("Failed to init spinlock for star formation.");
     }
 
     /* Set the cell location and sizes. */
@@ -539,6 +575,7 @@ void space_regrid(struct space *s, int verbose) {
           c->hydro.count = 0;
           c->grav.count = 0;
           c->stars.count = 0;
+          c->top = c;
           c->super = c;
           c->hydro.super = c;
           c->grav.super = c;
@@ -602,7 +639,7 @@ void space_regrid(struct space *s, int verbose) {
       engine_makeproxies(s->e);
 
       /* Finished with these. */
-      free(oldnodeIDs);
+      swift_free("nodeIDs", oldnodeIDs);
 
     } else if (no_regrid && s->e != NULL) {
       /* If we have created the top-levels cells and not done an initial
@@ -678,14 +715,23 @@ void space_allocate_extras(struct space *s, int verbose) {
   size_t size_gparts = s->size_gparts;
   size_t size_sparts = s->size_sparts;
 
-  int local_cells = 0;
-  for (int i = 0; i < s->nr_cells; ++i)
-    if (s->cells_top[i].nodeID == local_nodeID) local_cells++;
+  int *local_cells = (int *)malloc(sizeof(int) * s->nr_cells);
+  if (local_cells == NULL)
+    error("Failed to allocate list of local top-level cells");
+
+  /* List the local cells */
+  int nr_local_cells = 0;
+  for (int i = 0; i < s->nr_cells; ++i) {
+    if (s->cells_top[i].nodeID == local_nodeID) {
+      local_cells[nr_local_cells] = i;
+      ++nr_local_cells;
+    }
+  }
 
   /* Number of extra particles we want for each type */
-  const size_t expected_num_extra_parts = local_cells * space_extra_parts;
-  const size_t expected_num_extra_gparts = local_cells * space_extra_gparts;
-  const size_t expected_num_extra_sparts = local_cells * space_extra_sparts;
+  const size_t expected_num_extra_parts = nr_local_cells * space_extra_parts;
+  const size_t expected_num_extra_gparts = nr_local_cells * space_extra_gparts;
+  const size_t expected_num_extra_sparts = nr_local_cells * space_extra_sparts;
 
   if (verbose) {
     message("Currently have %zd/%zd/%zd real particles.", nr_actual_parts,
@@ -722,12 +768,12 @@ void space_allocate_extras(struct space *s, int verbose) {
 
       /* Create more space for parts */
       struct gpart *gparts_new = NULL;
-      if (posix_memalign((void **)&gparts_new, gpart_align,
+      if (swift_memalign("gparts", (void **)&gparts_new, gpart_align,
                          sizeof(struct gpart) * size_gparts) != 0)
         error("Failed to allocate new gpart data");
       const ptrdiff_t delta = gparts_new - s->gparts;
       memcpy(gparts_new, s->gparts, sizeof(struct gpart) * s->size_gparts);
-      free(s->gparts);
+      swift_free("gparts", s->gparts);
       s->gparts = gparts_new;
 
       /* Update the counter */
@@ -753,11 +799,10 @@ void space_allocate_extras(struct space *s, int verbose) {
       s->gparts[i].id_or_neg_offset = -1;
     }
 
-      /* Put the spare particles in their correct cell */
-#ifdef WITH_MPI
-    error("Need to do this correctly over MPI for only the local cells.");
-#endif
-    int count_in_cell = 0, current_cell = 0;
+    /* Put the spare particles in their correct cell */
+    int local_cell_id = 0;
+    int current_cell = local_cells[local_cell_id];
+    int count_in_cell = 0;
     size_t count_extra_gparts = 0;
     for (size_t i = 0; i < nr_actual_gparts + expected_num_extra_gparts; ++i) {
 
@@ -779,7 +824,11 @@ void space_allocate_extras(struct space *s, int verbose) {
       /* Once we have reached the number of extra gpart per cell, we move to the
        * next */
       if (count_in_cell == space_extra_gparts) {
-        ++current_cell;
+        ++local_cell_id;
+
+        if (local_cell_id == nr_local_cells) break;
+
+        current_cell = local_cells[local_cell_id];
         count_in_cell = 0;
       }
     }
@@ -813,20 +862,20 @@ void space_allocate_extras(struct space *s, int verbose) {
 
       /* Create more space for parts */
       struct part *parts_new = NULL;
-      if (posix_memalign((void **)&parts_new, part_align,
+      if (swift_memalign("parts", (void **)&parts_new, part_align,
                          sizeof(struct part) * size_parts) != 0)
         error("Failed to allocate new part data");
       memcpy(parts_new, s->parts, sizeof(struct part) * s->size_parts);
-      free(s->parts);
+      swift_free("parts", s->parts);
       s->parts = parts_new;
 
       /* Same for xparts */
       struct xpart *xparts_new = NULL;
-      if (posix_memalign((void **)&xparts_new, xpart_align,
+      if (swift_memalign("xparts", (void **)&xparts_new, xpart_align,
                          sizeof(struct xpart) * size_parts) != 0)
         error("Failed to allocate new xpart data");
       memcpy(xparts_new, s->xparts, sizeof(struct xpart) * s->size_parts);
-      free(s->xparts);
+      swift_free("xparts", s->xparts);
       s->xparts = xparts_new;
 
       /* Update the counter */
@@ -842,11 +891,10 @@ void space_allocate_extras(struct space *s, int verbose) {
       s->parts[i].id = -1;
     }
 
-      /* Put the spare particles in their correct cell */
-#ifdef WITH_MPI
-    error("Need to do this correctly over MPI for only the local cells.");
-#endif
-    int count_in_cell = 0, current_cell = 0;
+    /* Put the spare particles in their correct cell */
+    int local_cell_id = 0;
+    int current_cell = local_cells[local_cell_id];
+    int count_in_cell = 0;
     size_t count_extra_parts = 0;
     for (size_t i = 0; i < nr_actual_parts + expected_num_extra_parts; ++i) {
 
@@ -868,7 +916,11 @@ void space_allocate_extras(struct space *s, int verbose) {
       /* Once we have reached the number of extra part per cell, we move to the
        * next */
       if (count_in_cell == space_extra_parts) {
-        ++current_cell;
+        ++local_cell_id;
+
+        if (local_cell_id == nr_local_cells) break;
+
+        current_cell = local_cells[local_cell_id];
         count_in_cell = 0;
       }
     }
@@ -902,11 +954,11 @@ void space_allocate_extras(struct space *s, int verbose) {
 
       /* Create more space for parts */
       struct spart *sparts_new = NULL;
-      if (posix_memalign((void **)&sparts_new, spart_align,
+      if (swift_memalign("sparts", (void **)&sparts_new, spart_align,
                          sizeof(struct spart) * size_sparts) != 0)
         error("Failed to allocate new spart data");
       memcpy(sparts_new, s->sparts, sizeof(struct spart) * s->size_sparts);
-      free(s->sparts);
+      swift_free("sparts", s->sparts);
       s->sparts = sparts_new;
 
       /* Update the counter */
@@ -921,11 +973,10 @@ void space_allocate_extras(struct space *s, int verbose) {
       s->sparts[i].id = -42;
     }
 
-      /* Put the spare particles in their correct cell */
-#ifdef WITH_MPI
-    error("Need to do this correctly over MPI for only the local cells.");
-#endif
-    int count_in_cell = 0, current_cell = 0;
+    /* Put the spare particles in their correct cell */
+    int local_cell_id = 0;
+    int current_cell = local_cells[local_cell_id];
+    int count_in_cell = 0;
     size_t count_extra_sparts = 0;
     for (size_t i = 0; i < nr_actual_sparts + expected_num_extra_sparts; ++i) {
 
@@ -947,7 +998,11 @@ void space_allocate_extras(struct space *s, int verbose) {
       /* Once we have reached the number of extra spart per cell, we move to the
        * next */
       if (count_in_cell == space_extra_sparts) {
-        ++current_cell;
+        ++local_cell_id;
+
+        if (local_cell_id == nr_local_cells) break;
+
+        current_cell = local_cells[local_cell_id];
         count_in_cell = 0;
       }
     }
@@ -969,6 +1024,9 @@ void space_allocate_extras(struct space *s, int verbose) {
     part_verify_links(s->parts, s->gparts, s->sparts, nr_parts, nr_gparts,
                       nr_sparts, verbose);
 #endif
+
+  /* Free the list of local cells */
+  free(local_cells);
 }
 
 /**
@@ -986,6 +1044,9 @@ void space_rebuild(struct space *s, int repartitioned, int verbose) {
 #ifdef SWIFT_DEBUG_CHECKS
   if (s->e->nodeID == 0 || verbose) message("(re)building space");
   fflush(stdout);
+
+  /* Reset the cell counter */
+  last_cell_id = 1;
 #endif
 
   /* Re-grid if necessary, or just re-set the cell data. */
@@ -1026,16 +1087,19 @@ void space_rebuild(struct space *s, int repartitioned, int verbose) {
   /* Allocate arrays to store the indices of the cells where particles
      belong. We allocate extra space to allow for particles we may
      receive from other nodes */
-  int *h_index = (int *)malloc(sizeof(int) * h_index_size);
-  int *g_index = (int *)malloc(sizeof(int) * g_index_size);
-  int *s_index = (int *)malloc(sizeof(int) * s_index_size);
+  int *h_index = (int *)swift_malloc("h_index", sizeof(int) * h_index_size);
+  int *g_index = (int *)swift_malloc("g_index", sizeof(int) * g_index_size);
+  int *s_index = (int *)swift_malloc("s_index", sizeof(int) * s_index_size);
   if (h_index == NULL || g_index == NULL || s_index == NULL)
     error("Failed to allocate temporary particle indices.");
 
   /* Allocate counters of particles that will land in each cell */
-  int *cell_part_counts = (int *)malloc(sizeof(int) * s->nr_cells);
-  int *cell_gpart_counts = (int *)malloc(sizeof(int) * s->nr_cells);
-  int *cell_spart_counts = (int *)malloc(sizeof(int) * s->nr_cells);
+  int *cell_part_counts =
+      (int *)swift_malloc("cell_part_counts", sizeof(int) * s->nr_cells);
+  int *cell_gpart_counts =
+      (int *)swift_malloc("cell_gpart_counts", sizeof(int) * s->nr_cells);
+  int *cell_spart_counts =
+      (int *)swift_malloc("cell_spart_counts", sizeof(int) * s->nr_cells);
   if (cell_part_counts == NULL || cell_gpart_counts == NULL ||
       cell_spart_counts == NULL)
     error("Failed to allocate cell particle count buffer.");
@@ -1281,20 +1345,22 @@ void space_rebuild(struct space *s, int repartitioned, int verbose) {
   /* Re-allocate the index array for the parts if needed.. */
   if (s->nr_parts + 1 > h_index_size) {
     int *ind_new;
-    if ((ind_new = (int *)malloc(sizeof(int) * (s->nr_parts + 1))) == NULL)
+    if ((ind_new = (int *)swift_malloc(
+             "h_index", sizeof(int) * (s->nr_parts + 1))) == NULL)
       error("Failed to allocate temporary particle indices.");
     memcpy(ind_new, h_index, sizeof(int) * nr_parts);
-    free(h_index);
+    swift_free("h_index", h_index);
     h_index = ind_new;
   }
 
   /* Re-allocate the index array for the sparts if needed.. */
   if (s->nr_sparts + 1 > s_index_size) {
     int *sind_new;
-    if ((sind_new = (int *)malloc(sizeof(int) * (s->nr_sparts + 1))) == NULL)
+    if ((sind_new = (int *)swift_malloc(
+             "s_index", sizeof(int) * (s->nr_sparts + 1))) == NULL)
       error("Failed to allocate temporary s-particle indices.");
     memcpy(sind_new, s_index, sizeof(int) * nr_sparts);
-    free(s_index);
+    swift_free("s_index", s_index);
     s_index = sind_new;
   }
 
@@ -1423,20 +1489,21 @@ void space_rebuild(struct space *s, int repartitioned, int verbose) {
   }
 
   /* We no longer need the indices as of here. */
-  free(h_index);
-  free(cell_part_counts);
-  free(s_index);
-  free(cell_spart_counts);
+  swift_free("h_index", h_index);
+  swift_free("cell_part_counts", cell_part_counts);
+  swift_free("s_index", s_index);
+  swift_free("cell_spart_counts", cell_spart_counts);
 
 #ifdef WITH_MPI
 
   /* Re-allocate the index array for the gparts if needed.. */
   if (s->nr_gparts + 1 > g_index_size) {
     int *gind_new;
-    if ((gind_new = (int *)malloc(sizeof(int) * (s->nr_gparts + 1))) == NULL)
+    if ((gind_new = (int *)swift_malloc(
+             "g_index", sizeof(int) * (s->nr_gparts + 1))) == NULL)
       error("Failed to allocate temporary g-particle indices.");
     memcpy(gind_new, g_index, sizeof(int) * nr_gparts);
-    free(g_index);
+    swift_free("g_index", g_index);
     g_index = gind_new;
   }
 
@@ -1510,8 +1577,8 @@ void space_rebuild(struct space *s, int repartitioned, int verbose) {
   }
 
   /* We no longer need the indices as of here. */
-  free(g_index);
-  free(cell_gpart_counts);
+  swift_free("g_index", g_index);
+  swift_free("cell_gpart_counts", cell_gpart_counts);
 
 #ifdef SWIFT_DEBUG_CHECKS
   /* Verify that the links are correct */
@@ -1628,12 +1695,12 @@ void space_split(struct space *s, int verbose) {
 
 void space_reorder_extra_parts_mapper(void *map_data, int num_cells,
                                       void *extra_data) {
-
-  struct cell *cells_top = (struct cell *)map_data;
+  int *local_cells = (int *)map_data;
   struct space *s = (struct space *)extra_data;
+  struct cell *cells_top = s->cells_top;
 
   for (int ind = 0; ind < num_cells; ind++) {
-    struct cell *c = &cells_top[ind];
+    struct cell *c = &cells_top[local_cells[ind]];
     cell_reorder_extra_parts(c, c->hydro.parts - s->parts);
   }
 }
@@ -1641,11 +1708,12 @@ void space_reorder_extra_parts_mapper(void *map_data, int num_cells,
 void space_reorder_extra_gparts_mapper(void *map_data, int num_cells,
                                        void *extra_data) {
 
-  struct cell *cells_top = (struct cell *)map_data;
+  int *local_cells = (int *)map_data;
   struct space *s = (struct space *)extra_data;
+  struct cell *cells_top = s->cells_top;
 
   for (int ind = 0; ind < num_cells; ind++) {
-    struct cell *c = &cells_top[ind];
+    struct cell *c = &cells_top[local_cells[ind]];
     cell_reorder_extra_gparts(c, s->parts, s->sparts);
   }
 }
@@ -1653,11 +1721,12 @@ void space_reorder_extra_gparts_mapper(void *map_data, int num_cells,
 void space_reorder_extra_sparts_mapper(void *map_data, int num_cells,
                                        void *extra_data) {
 
-  struct cell *cells_top = (struct cell *)map_data;
+  int *local_cells = (int *)map_data;
   struct space *s = (struct space *)extra_data;
+  struct cell *cells_top = s->cells_top;
 
   for (int ind = 0; ind < num_cells; ind++) {
-    struct cell *c = &cells_top[ind];
+    struct cell *c = &cells_top[local_cells[ind]];
     cell_reorder_extra_sparts(c, c->stars.parts - s->sparts);
   }
 }
@@ -1674,25 +1743,20 @@ void space_reorder_extra_sparts_mapper(void *map_data, int num_cells,
  */
 void space_reorder_extras(struct space *s, int verbose) {
 
-#ifdef WITH_MPI
-  if (space_extra_parts || space_extra_gparts || space_extra_sparts)
-    error("Need an MPI-proof version of this.");
-#endif
-
   /* Re-order the gas particles */
   if (space_extra_parts)
     threadpool_map(&s->e->threadpool, space_reorder_extra_parts_mapper,
-                   s->cells_top, s->nr_cells, sizeof(struct cell), 0, s);
+                   s->local_cells_top, s->nr_local_cells, sizeof(int), 0, s);
 
   /* Re-order the gravity particles */
   if (space_extra_gparts)
     threadpool_map(&s->e->threadpool, space_reorder_extra_gparts_mapper,
-                   s->cells_top, s->nr_cells, sizeof(struct cell), 0, s);
+                   s->local_cells_top, s->nr_local_cells, sizeof(int), 0, s);
 
   /* Re-order the star particles */
   if (space_extra_sparts)
     threadpool_map(&s->e->threadpool, space_reorder_extra_sparts_mapper,
-                   s->cells_top, s->nr_cells, sizeof(struct cell), 0, s);
+                   s->local_cells_top, s->nr_local_cells, sizeof(int), 0, s);
 }
 
 /**
@@ -2242,7 +2306,7 @@ void space_parts_sort(struct part *parts, struct xpart *xparts,
                       ptrdiff_t parts_offset) {
   /* Create the offsets array. */
   size_t *offsets = NULL;
-  if (posix_memalign((void **)&offsets, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("parts_offsets", (void **)&offsets, SWIFT_STRUCT_ALIGNMENT,
                      sizeof(size_t) * (num_bins + 1)) != 0)
     error("Failed to allocate temporary cell offsets array.");
 
@@ -2287,7 +2351,7 @@ void space_parts_sort(struct part *parts, struct xpart *xparts,
       error("Bad offsets after shuffle.");
 #endif /* SWIFT_DEBUG_CHECKS */
 
-  free(offsets);
+  swift_free("parts_offsets", offsets);
 }
 
 /**
@@ -2305,7 +2369,8 @@ void space_sparts_sort(struct spart *sparts, int *restrict ind,
                        ptrdiff_t sparts_offset) {
   /* Create the offsets array. */
   size_t *offsets = NULL;
-  if (posix_memalign((void **)&offsets, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("sparts_offsets", (void **)&offsets,
+                     SWIFT_STRUCT_ALIGNMENT,
                      sizeof(size_t) * (num_bins + 1)) != 0)
     error("Failed to allocate temporary cell offsets array.");
 
@@ -2347,7 +2412,7 @@ void space_sparts_sort(struct spart *sparts, int *restrict ind,
       error("Bad offsets after shuffle.");
 #endif /* SWIFT_DEBUG_CHECKS */
 
-  free(offsets);
+  swift_free("sparts_offsets", offsets);
 }
 
 /**
@@ -2365,7 +2430,8 @@ void space_gparts_sort(struct gpart *gparts, struct part *parts,
                        int *restrict counts, int num_bins) {
   /* Create the offsets array. */
   size_t *offsets = NULL;
-  if (posix_memalign((void **)&offsets, SWIFT_STRUCT_ALIGNMENT,
+  if (swift_memalign("gparts_offsets", (void **)&offsets,
+                     SWIFT_STRUCT_ALIGNMENT,
                      sizeof(size_t) * (num_bins + 1)) != 0)
     error("Failed to allocate temporary cell offsets array.");
 
@@ -2413,7 +2479,7 @@ void space_gparts_sort(struct gpart *gparts, struct part *parts,
       error("Bad offsets after shuffle.");
 #endif /* SWIFT_DEBUG_CHECKS */
 
-  free(offsets);
+  swift_free("gparts_offsets", offsets);
 }
 
 /**
@@ -2421,16 +2487,8 @@ void space_gparts_sort(struct gpart *gparts, struct part *parts,
  */
 void space_map_clearsort(struct cell *c, void *data) {
 
-  for (int i = 0; i < 13; i++) {
-    if (c->hydro.sort[i] != NULL) {
-      free(c->hydro.sort[i]);
-      c->hydro.sort[i] = NULL;
-    }
-    if (c->stars.sort[i] != NULL) {
-      free(c->stars.sort[i]);
-      c->stars.sort[i] = NULL;
-    }
-  }
+  cell_free_hydro_sorts(c);
+  cell_free_stars_sorts(c);
 }
 
 /**
@@ -2614,7 +2672,7 @@ void space_split_recursive(struct space *s, struct cell *c,
   const int allocate_buffer = (buff == NULL && gbuff == NULL && sbuff == NULL);
   if (allocate_buffer) {
     if (count > 0) {
-      if (posix_memalign((void **)&buff, SWIFT_STRUCT_ALIGNMENT,
+      if (swift_memalign("tempbuff", (void **)&buff, SWIFT_STRUCT_ALIGNMENT,
                          sizeof(struct cell_buff) * count) != 0)
         error("Failed to allocate temporary indices.");
       for (int k = 0; k < count; k++) {
@@ -2630,7 +2688,7 @@ void space_split_recursive(struct space *s, struct cell *c,
       }
     }
     if (gcount > 0) {
-      if (posix_memalign((void **)&gbuff, SWIFT_STRUCT_ALIGNMENT,
+      if (swift_memalign("tempgbuff", (void **)&gbuff, SWIFT_STRUCT_ALIGNMENT,
                          sizeof(struct cell_buff) * gcount) != 0)
         error("Failed to allocate temporary indices.");
       for (int k = 0; k < gcount; k++) {
@@ -2646,7 +2704,7 @@ void space_split_recursive(struct space *s, struct cell *c,
       }
     }
     if (scount > 0) {
-      if (posix_memalign((void **)&sbuff, SWIFT_STRUCT_ALIGNMENT,
+      if (swift_memalign("tempsbuff", (void **)&sbuff, SWIFT_STRUCT_ALIGNMENT,
                          sizeof(struct cell_buff) * scount) != 0)
         error("Failed to allocate temporary indices.");
       for (int k = 0; k < scount; k++) {
@@ -2716,6 +2774,7 @@ void space_split_recursive(struct space *s, struct cell *c,
       cp->stars.dx_max_sort = 0.f;
       cp->nodeID = c->nodeID;
       cp->parent = c;
+      cp->top = c->top;
       cp->super = NULL;
       cp->hydro.super = NULL;
       cp->grav.super = NULL;
@@ -3024,9 +3083,9 @@ void space_split_recursive(struct space *s, struct cell *c,
 
   /* Clean up. */
   if (allocate_buffer) {
-    if (buff != NULL) free(buff);
-    if (gbuff != NULL) free(gbuff);
-    if (sbuff != NULL) free(sbuff);
+    if (buff != NULL) swift_free("tempbuff", buff);
+    if (gbuff != NULL) swift_free("tempgbuff", gbuff);
+    if (sbuff != NULL) swift_free("tempsbuff", sbuff);
   }
 }
 
@@ -3071,7 +3130,8 @@ void space_recycle(struct space *s, struct cell *c) {
 
   /* Clear the cell. */
   if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 ||
-      lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0)
+      lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 ||
+      lock_destroy(&c->stars.star_formation_lock))
     error("Failed to destroy spinlocks.");
 
   /* Lock the space. */
@@ -3120,7 +3180,8 @@ void space_recycle_list(struct space *s, struct cell *cell_list_begin,
   for (struct cell *c = cell_list_begin; c != NULL; c = c->next) {
     /* Clear the cell. */
     if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 ||
-        lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0)
+        lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 ||
+        lock_destroy(&c->stars.star_formation_lock))
       error("Failed to destroy spinlocks.");
 
     /* Count this cell. */
@@ -3166,7 +3227,7 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
 
     /* Is the cell buffer empty? */
     if (s->cells_sub == NULL) {
-      if (posix_memalign((void **)&s->cells_sub, cell_align,
+      if (swift_memalign("cells_sub", (void **)&s->cells_sub, cell_align,
                          space_cellallocchunk * sizeof(struct cell)) != 0)
         error("Failed to allocate more cells.");
 
@@ -3181,8 +3242,8 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
 
     /* Is the multipole buffer empty? */
     if (s->with_self_gravity && s->multipoles_sub == NULL) {
-      if (posix_memalign(
-              (void **)&s->multipoles_sub, multipole_align,
+      if (swift_memalign(
+              "multipoles_sub", (void **)&s->multipoles_sub, multipole_align,
               space_cellallocchunk * sizeof(struct gravity_tensors)) != 0)
         error("Failed to allocate more multipoles.");
 
@@ -3209,10 +3270,9 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
 
   /* Init some things in the cell we just got. */
   for (int j = 0; j < nr_cells; j++) {
-    for (int k = 0; k < 13; k++) {
-      if (cells[j]->hydro.sort[k] != NULL) free(cells[j]->hydro.sort[k]);
-      if (cells[j]->stars.sort[k] != NULL) free(cells[j]->stars.sort[k]);
-    }
+    cell_free_hydro_sorts(cells[j]);
+    cell_free_stars_sorts(cells[j]);
+
     struct gravity_tensors *temp = cells[j]->grav.multipole;
     bzero(cells[j], sizeof(struct cell));
     cells[j]->grav.multipole = temp;
@@ -3220,7 +3280,8 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
     if (lock_init(&cells[j]->hydro.lock) != 0 ||
         lock_init(&cells[j]->grav.plock) != 0 ||
         lock_init(&cells[j]->grav.mlock) != 0 ||
-        lock_init(&cells[j]->stars.lock) != 0)
+        lock_init(&cells[j]->stars.lock) != 0 ||
+        lock_init(&cells[j]->stars.star_formation_lock) != 0)
       error("Failed to initialize cell spinlocks.");
   }
 }
@@ -3233,16 +3294,8 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
 void space_free_buff_sort_indices(struct space *s) {
   for (struct cell *finger = s->cells_sub; finger != NULL;
        finger = finger->next) {
-    for (int k = 0; k < 13; k++) {
-      if (finger->hydro.sort[k] != NULL) {
-        free(finger->hydro.sort[k]);
-        finger->hydro.sort[k] = NULL;
-      }
-      if (finger->stars.sort[k] != NULL) {
-        free(finger->stars.sort[k]);
-        finger->stars.sort[k] = NULL;
-      }
-    }
+    cell_free_hydro_sorts(finger);
+    cell_free_stars_sorts(finger);
   }
 }
 
@@ -3951,7 +4004,7 @@ void space_init(struct space *s, struct swift_params *params,
 
   /* Allocate the extra parts array for the gas particles. */
   if (Npart > 0) {
-    if (posix_memalign((void **)&s->xparts, xpart_align,
+    if (swift_memalign("xparts", (void **)&s->xparts, xpart_align,
                        Npart * sizeof(struct xpart)) != 0)
       error("Failed to allocate xparts.");
     bzero(s->xparts, Npart * sizeof(struct xpart));
@@ -4006,15 +4059,15 @@ void space_replicate(struct space *s, int replicate, int verbose) {
   struct gpart *gparts = NULL;
   struct spart *sparts = NULL;
 
-  if (posix_memalign((void **)&parts, part_align,
+  if (swift_memalign("parts", (void **)&parts, part_align,
                      s->nr_parts * sizeof(struct part)) != 0)
     error("Failed to allocate new part array.");
 
-  if (posix_memalign((void **)&gparts, gpart_align,
+  if (swift_memalign("gparts", (void **)&gparts, gpart_align,
                      s->nr_gparts * sizeof(struct gpart)) != 0)
     error("Failed to allocate new gpart array.");
 
-  if (posix_memalign((void **)&sparts, spart_align,
+  if (swift_memalign("sparts", (void **)&sparts, spart_align,
                      s->nr_sparts * sizeof(struct spart)) != 0)
     error("Failed to allocate new spart array.");
 
@@ -4076,9 +4129,9 @@ void space_replicate(struct space *s, int replicate, int verbose) {
   }
 
   /* Replace the content of the space */
-  free(s->parts);
-  free(s->gparts);
-  free(s->sparts);
+  swift_free("parts", s->parts);
+  swift_free("gparts", s->gparts);
+  swift_free("sparts", s->sparts);
   s->parts = parts;
   s->gparts = gparts;
   s->sparts = sparts;
@@ -4136,11 +4189,11 @@ void space_generate_gas(struct space *s, const struct cosmology *cosmo,
   struct part *parts = NULL;
   struct gpart *gparts = NULL;
 
-  if (posix_memalign((void **)&parts, part_align,
+  if (swift_memalign("parts", (void **)&parts, part_align,
                      s->nr_parts * sizeof(struct part)) != 0)
     error("Failed to allocate new part array.");
 
-  if (posix_memalign((void **)&gparts, gpart_align,
+  if (swift_memalign("gparts", (void **)&gparts, gpart_align,
                      s->nr_gparts * sizeof(struct gpart)) != 0)
     error("Failed to allocate new gpart array.");
 
@@ -4226,7 +4279,7 @@ void space_generate_gas(struct space *s, const struct cosmology *cosmo,
   }
 
   /* Replace the content of the space */
-  free(s->gparts);
+  swift_free("gparts", s->gparts);
   s->parts = parts;
   s->gparts = gparts;
 }
@@ -4412,16 +4465,17 @@ void space_reset_task_counters(struct space *s) {
 void space_clean(struct space *s) {
 
   for (int i = 0; i < s->nr_cells; ++i) cell_clean(&s->cells_top[i]);
-  free(s->cells_top);
-  free(s->multipoles_top);
-  free(s->local_cells_top);
-  free(s->local_cells_with_tasks_top);
-  free(s->cells_with_particles_top);
-  free(s->local_cells_with_particles_top);
-  free(s->parts);
-  free(s->xparts);
-  free(s->gparts);
-  free(s->sparts);
+  swift_free("cells_top", s->cells_top);
+  swift_free("multipoles_top", s->multipoles_top);
+  swift_free("local_cells_top", s->local_cells_top);
+  swift_free("local_cells_with_tasks_top", s->local_cells_with_tasks_top);
+  swift_free("cells_with_particles_top", s->cells_with_particles_top);
+  swift_free("local_cells_with_particles_top",
+             s->local_cells_with_particles_top);
+  swift_free("parts", s->parts);
+  swift_free("xparts", s->xparts);
+  swift_free("gparts", s->gparts);
+  swift_free("sparts", s->sparts);
 }
 
 /**
@@ -4489,10 +4543,11 @@ void space_struct_restore(struct space *s, FILE *stream) {
   if (s->nr_parts > 0) {
 
     /* Need the memory for these. */
-    if (posix_memalign((void **)&s->parts, part_align,
+    if (swift_memalign("parts", (void **)&s->parts, part_align,
                        s->size_parts * sizeof(struct part)) != 0)
       error("Failed to allocate restore part array.");
-    if (posix_memalign((void **)&s->xparts, xpart_align,
+
+    if (swift_memalign("xparts", (void **)&s->xparts, xpart_align,
                        s->size_parts * sizeof(struct xpart)) != 0)
       error("Failed to allocate restore xpart array.");
 
@@ -4503,7 +4558,7 @@ void space_struct_restore(struct space *s, FILE *stream) {
   }
   s->gparts = NULL;
   if (s->nr_gparts > 0) {
-    if (posix_memalign((void **)&s->gparts, gpart_align,
+    if (swift_memalign("gparts", (void **)&s->gparts, gpart_align,
                        s->size_gparts * sizeof(struct gpart)) != 0)
       error("Failed to allocate restore gpart array.");
 
@@ -4513,7 +4568,7 @@ void space_struct_restore(struct space *s, FILE *stream) {
 
   s->sparts = NULL;
   if (s->nr_sparts > 0) {
-    if (posix_memalign((void **)&s->sparts, spart_align,
+    if (swift_memalign("sparts", (void **)&s->sparts, spart_align,
                        s->size_sparts * sizeof(struct spart)) != 0)
       error("Failed to allocate restore spart array.");
 
diff --git a/src/space.h b/src/space.h
index 924c3efaf81f88cb82a8c23707d42883832aa071..272ee41c3569cf3580678c0de885a41075f0e1b4 100644
--- a/src/space.h
+++ b/src/space.h
@@ -329,6 +329,8 @@ void space_reset_task_counters(struct space *s);
 void space_clean(struct space *s);
 void space_free_cells(struct space *s);
 
+void space_free_foreign_parts(struct space *s);
+
 void space_struct_dump(struct space *s, FILE *stream);
 void space_struct_restore(struct space *s, FILE *stream);
 void space_write_cell_hierarchy(const struct space *s);
diff --git a/src/star_formation/EAGLE/star_formation.h b/src/star_formation/EAGLE/star_formation.h
index 93bbd062eea0ac02023342adb85cca6d488ad0bb..43cc820189a117669aba30c36323a2aab840eadf 100644
--- a/src/star_formation/EAGLE/star_formation.h
+++ b/src/star_formation/EAGLE/star_formation.h
@@ -201,7 +201,7 @@ INLINE static double EOS_pressure(const double n_H,
  * @param hydro_props The properties of the hydro scheme.
  * @param us The internal system of units.
  * @param cooling The cooling data struct.
- *
+ * @param entropy_floor The entropy floor assumed in this run.
  */
 INLINE static int star_formation_is_star_forming(
     const struct part* restrict p, const struct xpart* restrict xp,
diff --git a/src/stars/Default/stars.h b/src/stars/Default/stars.h
index 586a87f75600a08acfd84b0f7ecc57fc4573281f..1ff4936284c4d8913417c502db69a372fc83bc06 100644
--- a/src/stars/Default/stars.h
+++ b/src/stars/Default/stars.h
@@ -72,18 +72,7 @@ __attribute__((always_inline)) INLINE static void stars_init_spart(
  * @param dt_drift The drift time-step for positions.
  */
 __attribute__((always_inline)) INLINE static void stars_predict_extra(
-    struct spart* restrict sp, float dt_drift) {
-
-  // MATTHIEU
-  /* const float h_inv = 1.f / sp->h; */
-
-  /* /\* Predict smoothing length *\/ */
-  /* const float w1 = sp->feedback.h_dt * h_inv * dt_drift; */
-  /* if (fabsf(w1) < 0.2f) */
-  /*   sp->h *= approx_expf(w1); /\* 4th order expansion of exp(w) *\/ */
-  /* else */
-  /*   sp->h *= expf(w1); */
-}
+    struct spart* restrict sp, float dt_drift) {}
 
 /**
  * @brief Sets the values to be predicted in the drifts to their values at a
diff --git a/src/swift.h b/src/swift.h
index e166dde5dd3baed07fb5c081c64ce941d6c6ce6d..0b5eda65e73cd6600eb69c25bc6a3f0a2e6e675f 100644
--- a/src/swift.h
+++ b/src/swift.h
@@ -49,6 +49,7 @@
 #include "logger.h"
 #include "logger_io.h"
 #include "map.h"
+#include "memuse.h"
 #include "mesh_gravity.h"
 #include "multipole.h"
 #include "outputlist.h"
diff --git a/src/task.c b/src/task.c
index 34c636b48ed6ff3fefdf1e7847a67ca56ea79c89..a123809bca797b812d6acd94bce3fd8b7a05c1f5 100644
--- a/src/task.c
+++ b/src/task.c
@@ -79,6 +79,8 @@ const char *taskID_names[task_type_count] = {"none",
                                              "grav_end_force",
                                              "cooling",
                                              "star_formation",
+                                             "star_formation_in",
+                                             "star_formation_out",
                                              "logger",
                                              "stars_in",
                                              "stars_out",
@@ -88,11 +90,23 @@ const char *taskID_names[task_type_count] = {"none",
                                              "stars_sort"};
 
 /* Sub-task type names. */
-const char *subtaskID_names[task_subtype_count] = {
-    "none",    "density",       "gradient",      "force",
-    "limiter", "grav",          "external_grav", "tend",
-    "xv",      "rho",           "gpart",         "multipole",
-    "spart",   "stars_density", "stars_feedback"};
+const char *subtaskID_names[task_subtype_count] = {"none",
+                                                   "density",
+                                                   "gradient",
+                                                   "force",
+                                                   "limiter",
+                                                   "grav",
+                                                   "external_grav",
+                                                   "tend_part",
+                                                   "tend_gpart",
+                                                   "tend_spart",
+                                                   "xv",
+                                                   "rho",
+                                                   "gpart",
+                                                   "multipole",
+                                                   "spart",
+                                                   "stars_density",
+                                                   "stars_feedback"};
 
 #ifdef WITH_MPI
 /* MPI communicators for the subtypes. */
diff --git a/src/task.h b/src/task.h
index 704d1a5ef80f1208bce69d0acf7625fb36fa19e1..7bfd49a79904b73a87f3f5a6f0b0176e596d3707 100644
--- a/src/task.h
+++ b/src/task.h
@@ -70,6 +70,8 @@ enum task_types {
   task_type_end_grav_force,
   task_type_cooling,
   task_type_star_formation,
+  task_type_star_formation_in,  /* Implicit */
+  task_type_star_formation_out, /* Implicit */
   task_type_logger,
   task_type_stars_in,       /* Implicit */
   task_type_stars_out,      /* Implicit */
@@ -91,7 +93,9 @@ enum task_subtypes {
   task_subtype_limiter,
   task_subtype_grav,
   task_subtype_external_grav,
-  task_subtype_tend,
+  task_subtype_tend_part,
+  task_subtype_tend_gpart,
+  task_subtype_tend_spart,
   task_subtype_xv,
   task_subtype_rho,
   task_subtype_gpart,
diff --git a/src/tools.c b/src/tools.c
index 43ac0177daef171850ea325f9fa23770fb82ae13..a29408449600ad4b46bd73ba17e20adefdbcb613 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -442,6 +442,9 @@ void pairs_all_stars_density(struct runner *r, struct cell *ci,
 
       struct part *pj = &cj->hydro.parts[j];
 
+      /* Early abort? */
+      if (part_is_inhibited(pj, e)) continue;
+
       /* Pairwise distance */
       r2 = 0.0f;
       for (int k = 0; k < 3; k++) {
@@ -472,6 +475,9 @@ void pairs_all_stars_density(struct runner *r, struct cell *ci,
 
       struct part *pi = &ci->hydro.parts[i];
 
+      /* Early abort? */
+      if (part_is_inhibited(pi, e)) continue;
+
       /* Pairwise distance */
       r2 = 0.0f;
       for (int k = 0; k < 3; k++) {
@@ -660,6 +666,9 @@ void self_all_stars_density(struct runner *r, struct cell *ci) {
       pj = &ci->hydro.parts[j];
       hj = pj->h;
 
+      /* Early abort? */
+      if (part_is_inhibited(pj, e)) continue;
+
       /* Pairwise distance */
       r2 = 0.0f;
       for (int k = 0; k < 3; k++) {
@@ -668,7 +677,7 @@ void self_all_stars_density(struct runner *r, struct cell *ci) {
       }
 
       /* Hit or miss? */
-      if (r2 > 0.f && r2 < hig2) {
+      if (r2 < hig2) {
         /* Interact */
         runner_iact_nonsym_stars_density(r2, dxi, hi, hj, spi, pj, a, H);
       }
diff --git a/tests/test27cellsStars.c b/tests/test27cellsStars.c
index e7e1b64b1cc99d8a51cf380fde1560bdd634ae20..e97aee278e4b34d7cb1904826aba7a5ff3ed5d67 100644
--- a/tests/test27cellsStars.c
+++ b/tests/test27cellsStars.c
@@ -70,6 +70,7 @@ struct cell *make_cell(size_t n, size_t n_stars, double *offset, double size,
   const size_t count = n * n * n;
   const size_t scount = n_stars * n_stars * n_stars;
   float h_max = 0.f;
+  float stars_h_max = 0.f;
   struct cell *cell = (struct cell *)malloc(sizeof(struct cell));
   bzero(cell, sizeof(struct cell));
 
@@ -143,7 +144,7 @@ struct cell *make_cell(size_t n, size_t n_stars, double *offset, double size,
           spart->h = size * h * random_uniform(1.f, h_pert) / (float)n_stars;
         else
           spart->h = size * h / (float)n_stars;
-        h_max = fmaxf(h_max, spart->h);
+        stars_h_max = fmaxf(stars_h_max, spart->h);
         spart->id = ++(*spartId);
 
         spart->time_bin = 1;
@@ -161,6 +162,7 @@ struct cell *make_cell(size_t n, size_t n_stars, double *offset, double size,
   cell->split = 0;
   cell->hydro.h_max = h_max;
   cell->hydro.count = count;
+  cell->stars.h_max = stars_h_max;
   cell->stars.count = scount;
   cell->hydro.dx_max_part = 0.;
   cell->hydro.dx_max_sort = 0.;
diff --git a/tests/testActivePair.c b/tests/testActivePair.c
index 54a3189b89d9de757bf340bf759db5b40f947174..cbafd325f22b4e47c9c3ffcfaa5086c18196f39a 100644
--- a/tests/testActivePair.c
+++ b/tests/testActivePair.c
@@ -162,9 +162,7 @@ struct cell *make_cell(size_t n, double *offset, double size, double h,
 }
 
 void clean_up(struct cell *ci) {
-  free(ci->hydro.parts);
-  for (int k = 0; k < 13; k++)
-    if (ci->hydro.sort[k] != NULL) free(ci->hydro.sort[k]);
+  cell_free_hydro_sorts(ci);
   free(ci);
 }
 
diff --git a/tools/analyse_memuse_logs.py b/tools/analyse_memuse_logs.py
new file mode 100755
index 0000000000000000000000000000000000000000..4026c73d1e13a4484975fe3902e508493dc838cb
--- /dev/null
+++ b/tools/analyse_memuse_logs.py
@@ -0,0 +1,131 @@
+#!/usr/bin/env python
+"""
+Usage:
+    process_memuse.py [options] memuse_report1.dat [memuse_report2.dat] ...
+
+Parse the output of a run of SWIFT to convert the memuse output dumps into a
+timeseries of memory use. Also outputs use in memory per labelled type.
+
+This file is part of SWIFT.
+Copyright (c) 2019 Peter W. Draper (p.w.draper@durham.ac.uk)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+"""
+
+from collections import OrderedDict
+import argparse
+import sys
+
+#  Command-line arguments.
+parser = argparse.ArgumentParser(description="Analyse memory usage reports")
+
+parser.add_argument("memuse_report", nargs='+',
+                    help="Memory usage reports (order by step if using more than one)")
+parser.add_argument(
+    "-b",
+    "--blacklist",
+    dest="blacklist",
+    help="substring of allocations to ignore (maybe be repeated)",
+    default=None,
+    action='append'
+)
+args = parser.parse_args()
+
+memuse = OrderedDict()
+labels = {}
+totalmem = 0
+process_use = ""
+peak = 0.0
+
+for filename in args.memuse_report:
+    sys.stderr.write("## Processing: " + filename + "\n")
+    with open(filename) as infile:
+        print '# {:<18s} {:>30s} {:>9s} {:>9s} {:s}'.format("tic", "label", "allocated", "step", "MB")
+        for line in infile:
+            if line[0] == "#":
+                if "# Current use:" in line:
+                    process_use = line[14:-1]
+            else:
+                tic, adr, rank, step, allocated, label, size = line.split()
+
+                #  Skip blacklisted allocations, these can swamp the signal...
+                if args.blacklist != None:
+                    skip = False
+                    for item in args.blacklist:
+                        if item in label:
+                            skip = True
+                            break
+                    if skip:
+                        continue
+
+                rank = int(rank)
+                step = int(step)
+                allocated = int(allocated)
+                size = int(size)
+
+                doprint = True
+                if allocated == 1:
+                    #  Allocation.
+                    totalmem = totalmem + size
+                    if not adr in memuse:
+                        memuse[adr] = [size]
+                        labels[adr] = label
+                    else:
+                        memuse[adr].append(size)
+                else:
+                    #  Free, locate allocation.
+                    if adr in memuse:
+                        allocs = memuse[adr]
+                        totalmem = totalmem - allocs[0]
+                        if len(allocs) > 1:
+                            memuse[adr] = allocs[1:]
+                        else:
+                            del memuse[adr]
+                    else:
+                        #  Unmatched free, complain and skip.
+                        #print "### unmatched free: ", label, adr
+                        doprint = False
+                if doprint:
+                    if totalmem > peak:
+                        peak = totalmem
+                    print '{:<20s} {:>30s} {:9d} {:9d} {:.3f}'.format(tic, label, allocated, step, totalmem/(1048576.0))
+    sys.stderr.write("## Finished ingestion of: " + filename + "\n")
+
+totals = {}
+numactive = {}
+for adr in labels:
+    #  If any remaining allocations.
+    if adr in memuse:
+        if labels[adr] in totals:
+            totals[labels[adr]] = totals[labels[adr]] + memuse[adr][0]
+            numactive[labels[adr]] = numactive[labels[adr]] + 1
+        else:
+            totals[labels[adr]] = memuse[adr][0]
+            numactive[labels[adr]] = 1
+
+print "# Memory use by label:"
+print "## ", '{:<30s} {:>16s} {:>16s}'.format("label", "MB", "numactive")
+print "## "
+total = 0.0
+for label in sorted(totals):
+    mem = totals[label]/(1048576.0)
+    total = total + mem
+    print "## ", '{:<30s} {:16.3f} {:16d}'.format(label, mem, numactive[label])
+print "## "
+print "# Total memory still in use : ", '{:.3f}'.format(total), " (MB)"
+print "# Peak memory usage         : ", '{:.3f}'.format(peak/1048576.0), " (MB)"
+if process_use != "":
+    print "#"
+    print "# Memory use by process (all/system):", process_use
+sys.exit(0)
diff --git a/tools/combine_ics.py b/tools/combine_ics.py
index 64f255a61934bc3667fdb5934f74a206013e4872..d864c67d7d44fb6550e3cd858c50bb660d6126ca 100755
--- a/tools/combine_ics.py
+++ b/tools/combine_ics.py
@@ -41,7 +41,7 @@ import numpy as np
 # Store the compression level
 gzip_level = 4
 if len(sys.argv) > 3:
-    gzip_level = sys.argv[3]
+    gzip_level = int(sys.argv[3])
 
 # First, we need to collect some information from the master file
 main_file_name = str(sys.argv[1])[:-7]
diff --git a/tools/process_memuse_logs.sh b/tools/process_memuse_logs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c86efe9ceca388afcb8d7236c0a2a4e403a66083
--- /dev/null
+++ b/tools/process_memuse_logs.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+#
+# Usage:
+#  process_memuse_logs nprocess
+#
+# Description:
+#  Process all the memuse report files in the current directory.
+#  Creating an analysis for step step and one for all the steps.
+#
+#  The input files are created by a run configured for memuse reporting
+#  (--enable-memuse-reports) should be named "memuse_report-step<n>.dat"
+#  in the current directory.
+#
+#  All located files will be processed using "nprocess" concurrent
+#  processes. The output for each step will be named memuse_report_step<n>.log
+#  and the overall analysis will be called memuse_report_all.log.
+#
+# This file is part of SWIFT:
+#
+#  Copyright (C) 2019 Peter W. Draper (p.w.draper@durham.ac.uk)
+#  All Rights Reserved.
+#
+#  This program is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU Lesser General Public License as published
+#  by the Free Software Foundation, either version 3 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#  Handle command-line
+if test "$1" == ""; then
+    echo "Usage: $0 nprocess"
+    exit 1
+fi
+NPROCS=$1
+
+#  Locate script.
+SCRIPTHOME=$(dirname "$0")
+
+#  Find all report files. Use version sort to get into correct order.
+files=$(ls -v memuse_report-step*.dat)
+if test $? != 0; then
+    echo "Failed to find any memuse report files"
+    exit 1
+fi
+
+#  Construct list of input and output names.
+list=""
+for f in $files; do
+    output=$(echo $f| sed 's,.dat,.log,')
+    list="$list $f $output"
+done
+
+#  And process them.
+echo "Processing memuse report files..."
+echo $list | xargs -P $NPROCS -n 2 /bin/bash -c "${SCRIPTHOME}/analyse_memuse_logs.py \$0 > \$1"
+
+#  Now process the overall file, if more than one file given. 
+n=$(echo $list| wc -w)
+if test $n -gt 2; then
+    echo "Processing _all_ memuse report files..."
+    ${SCRIPTHOME}/analyse_memuse_logs.py $files > memuse_report-all.log
+fi
+
+echo "Finished"
+
+exit
diff --git a/tools/process_memuse_logs_MPI.sh b/tools/process_memuse_logs_MPI.sh
new file mode 100755
index 0000000000000000000000000000000000000000..77a949d18432690fcb93f883eca5edff2ea19d92
--- /dev/null
+++ b/tools/process_memuse_logs_MPI.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#
+# Usage:
+#  process_memuse_logs_MPI rank nprocess
+#
+# Description:
+#  Process all the memuse report files in the current directory that
+#  are output from the given rank.
+#  Creating an analysis for each step and one for all the steps.
+#
+#  The input files are created by a run configured for memuse reporting
+#  (--enable-memuse-reports) should be named "memuse_report-rank<n>-step<m>.dat"
+#  in the current directory.
+#
+#  All located files will be processed using "nprocess" concurrent
+#  processes. The output for each step will be named memuse_report-rank<n>-step<m>.log
+#  and the overall analysis will be called memuse_report-all-rank<n>.log.
+#
+# This file is part of SWIFT:
+#
+#  Copyright (C) 2019 Peter W. Draper (p.w.draper@durham.ac.uk)
+#  All Rights Reserved.
+#
+#  This program is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU Lesser General Public License as published
+#  by the Free Software Foundation, either version 3 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+#  Handle command-line
+if test "$2" == ""; then
+    echo "Usage: $0 rank nprocess"
+    exit 1
+fi
+RANK=$1
+NPROCS=$2
+
+#  Locate script.
+SCRIPTHOME=$(dirname "$0")
+
+#  Find all report files. Use version sort to get into correct order.
+files=$(ls -v memuse_report-rank${RANK}-step*.dat)
+if test $? != 0; then
+    echo "Failed to find any memuse report files"
+    exit 1
+fi
+
+#  Construct list of input and output names.
+list=""
+for f in $files; do
+    output=$(echo $f| sed 's,.dat,.log,')
+    list="$list $f $output"
+done
+
+#  And process them.
+echo "Processing memuse report files..."
+echo $list | xargs -P $NPROCS -n 2 /bin/bash -c "${SCRIPTHOME}/analyse_memuse_logs.py \$0 > \$1"
+
+#  Now process the overall file, if more than one file given. 
+n=$(echo $list| wc -w)
+if test $n -gt 2; then
+    echo "Processing _all_ memuse report files..."
+    ${SCRIPTHOME}/analyse_memuse_logs.py $files > memuse_report-all-rank${RANK}.log
+fi
+
+echo "Finished"
+
+exit
diff --git a/tools/task_plots/analyse_tasks.py b/tools/task_plots/analyse_tasks.py
index fc9df0e4797cfb16e883df551af30dc0d3244edc..e938d0610ab878efbd6463909bbf75fe2ec60bc2 100755
--- a/tools/task_plots/analyse_tasks.py
+++ b/tools/task_plots/analyse_tasks.py
@@ -94,6 +94,8 @@ TASKTYPES = [
     "grav_end_force",
     "cooling",
     "star_formation",
+    "star_formation_in",
+    "star_formation_out",
     "logger",
     "stars_in",
     "stars_out",
@@ -112,7 +114,9 @@ SUBTYPES = [
     "limiter",
     "grav",
     "external_grav",
-    "tend",
+    "tend_part",
+    "tend_gpart",
+    "tend_spart",
     "xv",
     "rho",
     "gpart",
diff --git a/tools/task_plots/plot_tasks.py b/tools/task_plots/plot_tasks.py
index 54f34b2f828895d894b84253e366173827c03158..b692ee963784b9487f5e19ca7274c0ecaa9b7a89 100755
--- a/tools/task_plots/plot_tasks.py
+++ b/tools/task_plots/plot_tasks.py
@@ -179,6 +179,8 @@ TASKTYPES = [
     "grav_end_force",
     "cooling",
     "star_formation",
+    "star_formation_in",
+    "star_formation_out",
     "logger",
     "stars_in",
     "stars_out",
@@ -197,7 +199,9 @@ SUBTYPES = [
     "limiter",
     "grav",
     "external_grav",
-    "tend",
+    "tend_part",
+    "tend_gpart",
+    "tend_spart",
     "xv",
     "rho",
     "gpart",
@@ -232,8 +236,12 @@ FULLTYPES = [
     "send/xv",
     "recv/rho",
     "send/rho",
-    "recv/tend",
-    "send/tend",
+    "recv/tend_part",
+    "send/tend_part",
+    "recv/tend_gpart",
+    "send/tend_gpart",
+    "recv/tend_spart",
+    "send/tend_spart",
     "recv/gpart",
     "send/gpart",
     "recv/spart",