diff --git a/exercises/exercise-coupling-ff-pm/README.md b/exercises/exercise-coupling-ff-pm/README.md
index 249f198ace51ddc93ce3da884d2ac74ab2e32429..13dc47c7ea40c366e8eff5ca59112f93a7295569 100644
--- a/exercises/exercise-coupling-ff-pm/README.md
+++ b/exercises/exercise-coupling-ff-pm/README.md
@@ -212,7 +212,7 @@ Hint: A relation between velocity and position is used for the vertical velocity
 ### 2. Changing the porous medium model
 
 In this part of the exercise, the coupled system will be extended such that the transport of components
-in both parts is included and the presence of a second phase in the porous medium is considered.
+in both domains is included and the presence of a second phase in the porous medium domain is considered.
 This enables the simulation of the drying of a porous medium (however no energy balance is included yet).
 
 This part of the exercise consists of the following steps:
@@ -260,30 +260,41 @@ In this case, the chosen formulation will set the given value as the mole fracti
 
 __Task B: Add output__:
 
-In the next step, we want to add some output to the simulation.
-First we want to know the water mass in the (porous-medium) system.
-Therefore, we evaluate the storage term of the water component.
+In the next step, we want to add some output to the simulation. The standard method for providing simulation output for visualization is via a VtkWriter. These tools take the grid geometries of each domain, as well as the solutions and write spatial output that one can view in visualization tools such as paraview.
+
+Although this Vtk output is very useful, some output is more suited for other forms of visualization.
+Two examples of data ouput formats are `.csv` files and `.json` files.
+From these files, data can be visualized using many different tools.
+In this exercise, data exported to a `.csv` file will be plotted using gnuplot, and data exported to a `.json` output will be plotted using the matplotlib python library.
+
+First as example output data, we want to investigate the water mass in the (porous-medium) system.
+There are two ways to evaluate this: (1) the total storage of water mass in the porous medium domain, and (2) the water vapor flux along the interface.
+The total storage can be plotted over time, whereas the water vapor flux will vary spatially along the interface as well as over time.
+
+First, we evaluate the storage term of the water component.
 * Have a look at the function `evaluateWaterMassStorageTerm()` in the `porousmediumsubproblem.hh`.
   Then implement a calculation of the total water mass:
   $`\sum_{\alpha \in \textrm{g,l}} \left( \phi S_\alpha X^\text{w}_\alpha \varrho_\alpha V_\textrm{scv} \right)`$.
-  Afterwards, adapt the method `init()` such that the variable `initialWaterContent_` is initialized correctly using the `evaluateWaterMassStorageTerm()` method and assign that value also to the variable `lastWaterMass_`.
-
-We also want to investigate the temporal evolution of the water mass.
-The following steps need to be done to do so.
-Check if all instructions are implemented accordingly:
-* Calculate the initial water mass at the beginning of the simulation and add the water mass loss to the output.
-  Based on the water mass loss you can derive the evaporation rate. Because despite at the interface, all
-  boundaries have Neumann no-flow conditions and no sources are present, the water can only leave the system
-  via the porous-medium free-flow interface. The evaporation in [mm/d] can be calculated by:
+  Afterwards, adapt the method `startStorageEvaluation()` such that the variable `initialWaterContent_` is initialized correctly using the `evaluateWaterMassStorageTerm()` method and assign that value also to the variable `lastWaterMass_`.
+
+In order to evaluate how the stored water mass evolves over time, we should make sure the following is implemented:
+* Calculate the initial water mass at the beginning of the simulation.
+* For each time step, add the water mass loss to the output.
+* Based on the water mass loss you can derive the evaporation rate. The evaporation in [mm/d] can be calculated by:
   $`e = \frac{\textrm{d}\, M^\text{w}}{\textrm{d}\, t} / A_\textrm{interface}`$.
+  (all boundaries have Neumann no-flow conditions and no sources are present, meaning the water can only leave the system
+  via the porous-medium free-flow interface.)
+
+During the simulation a `.csv` file is created (enable by setting `[Problem.ExportStorage] = true` in the `params.input` file). In addition, a gnuplot script `StorageOverTime.gp` is written and the mass loss and cumulative mass are plotted over time (`StorageOverTime.png`), when plotting is enabled with `[Problem.PlotStorage] = true`.
 
-Finally we want to know the distribution of the water mass fluxes across the interface.
+Second, we want to know the distribution of the water mass fluxes across the interface.
 * Have a look at the function `evaluateInterfaceFluxes()` in the porous medium problem.
   Use the facilities therein to return the values of ...massCouplingCondition... from the `couplingManager`
-  for each coupling scvf. Then the fluxes are visualized with gnuplot, when setting `Problem.PlotFluxes = true`.
-  If the simulation is too fast, you can have a look at the flux*.png files after the simulation.
-* You can use the parameter `Problem.PlotStorage = true` to see the temporal evolution of the evaporation rate
-  and the cumulative water mass loss.
+  for each coupling scvf. Multiply this with the relevant face sizes, extrusion factor, massfraction and seconds per day to get the [mm/d] units as seen in the storage evaluation.
+* When the `[Problem.ExportFluxes] = true` parameter is enabled, simulation data will be exported for this simulation to a `.json` file.
+  This file can flexibly handle data of different types, which in this case is helpful as we have both temporal and spatial data.
+* Use the python plotting script `plotFluxes.py` to visualize the flux distribution across the surface at different times.
+  This script uses `matplotlib`, a very popular python based visualization library.
 
 Compile and run the simulation and take a look at the results.