diff --git a/examples/IsolatedGalaxy_starformation/ks_plotter.py b/examples/IsolatedGalaxy_starformation/plotSolution.py
similarity index 61%
rename from examples/IsolatedGalaxy_starformation/ks_plotter.py
rename to examples/IsolatedGalaxy_starformation/plotSolution.py
index c046629c7069761f821b9b6a6ae87bfbb8b987bd..4a0ad38f2aa310a6cc5d8e377e61487eeb9257d9 100644
--- a/examples/IsolatedGalaxy_starformation/ks_plotter.py
+++ b/examples/IsolatedGalaxy_starformation/plotSolution.py
@@ -1,4 +1,5 @@
 import matplotlib
+
 matplotlib.use("Agg")
 from pylab import *
 from scipy import stats
@@ -36,12 +37,12 @@ f = h5.File(filename, "r")
 # Physical constants
 k_in_cgs = 1.38064852e-16
 mH_in_cgs = 1.6737236e-24
-year_in_cgs = 3600. * 24 * 365.
+year_in_cgs = 3600.0 * 24 * 365.0
 Msun_in_cgs = 1.98848e33
 
 # Gemoetry info
 boxsize = f["/Header"].attrs["BoxSize"]
-centre = boxsize / 2.
+centre = boxsize / 2.0
 
 # Read units
 unit_length_in_cgs = f["/Units"].attrs["Unit length in cgs (U_L)"]
@@ -56,31 +57,33 @@ KS_thresh_slope = float(f["/Parameters"].attrs["SchayeSF:MetDep_SFthresh_Slope"]
 KS_thresh_norm = float(f["/Parameters"].attrs["SchayeSF:thresh_norm_HpCM3"])
 KS_gas_fraction = float(f["/Parameters"].attrs["SchayeSF:fg"])
 KS_thresh_max_norm = float(f["/Parameters"].attrs["SchayeSF:thresh_max_norm_HpCM3"])
-KS_gamma_effective = float(f["/Parameters"].attrs["EAGLEEntropyFloor:Jeans_gamma_effective"])
+KS_gamma_effective = float(
+    f["/Parameters"].attrs["EAGLEEntropyFloor:Jeans_gamma_effective"]
+)
 EAGLE_Z = float(f["/Parameters"].attrs["EAGLEChemistry:init_abundance_metal"])
 
 # Read gas properties
-gas_pos = f["/PartType0/Coordinates"][:,:]
+gas_pos = f["/PartType0/Coordinates"][:, :]
 gas_mass = f["/PartType0/Masses"][:]
 gas_rho = f["/PartType0/Density"][:]
 gas_T = f["/PartType0/Temperature"][:]
 gas_SFR = f["/PartType0/SFR"][:]
-gas_XH = f["/PartType0/ElementAbundance"][:,0]
+gas_XH = f["/PartType0/ElementAbundance"][:, 0]
 gas_Z = f["/PartType0/Metallicity"][:]
 gas_hsml = f["/PartType0/SmoothingLength"][:]
 
 # Centre the box
-gas_pos[:,0] -= centre[0]
-gas_pos[:,1] -= centre[1]
-gas_pos[:,2] -= centre[2]
+gas_pos[:, 0] -= centre[0]
+gas_pos[:, 1] -= centre[1]
+gas_pos[:, 2] -= centre[2]
 
 # Turn the mass into better units
-gas_mass *= (unit_mass_in_cgs / Msun_in_cgs)
+gas_mass *= unit_mass_in_cgs / Msun_in_cgs
 
 # Turn the SFR into better units
 gas_SFR = np.maximum(gas_SFR, np.zeros(np.size(gas_SFR)))
-gas_SFR /= (unit_time_in_cgs / year_in_cgs)
-gas_SFR *= (unit_mass_in_cgs / Msun_in_cgs)
+gas_SFR /= unit_time_in_cgs / year_in_cgs
+gas_SFR *= unit_mass_in_cgs / Msun_in_cgs
 
 # Make it a Hydrogen number density
 gas_nH = gas_rho * unit_mass_in_cgs / unit_length_in_cgs ** 3
@@ -89,32 +92,32 @@ gas_nH *= gas_XH
 
 # 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.) * 8000.
+eos_Jeans_T = (eos_Jeans_rho / 10 ** (-1)) ** (1.0 / 3.0) * 8000.0
 
 # Plot the phase space diagram
 figure()
 subplot(111, xscale="log", yscale="log")
-plot(eos_cool_rho, eos_cool_T, 'k--', lw=0.6)
-plot(eos_Jeans_rho, eos_Jeans_T, 'k--', lw=0.6)
+plot(eos_cool_rho, eos_cool_T, "k--", lw=0.6)
+plot(eos_Jeans_rho, eos_Jeans_T, "k--", lw=0.6)
 scatter(gas_nH, gas_T, s=0.2)
 xlabel("${\\rm Density}~n_{\\rm H}~[{\\rm cm^{-3}}]$", labelpad=0)
 ylabel("${\\rm Temperature}~T~[{\\rm K}]$", labelpad=2)
 xlim(1e-4, 3e3)
-ylim(500., 2e5)
+ylim(500.0, 2e5)
 savefig("rhoT.png", dpi=200)
 
 # Plot the phase space diagram for SF gas
 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)
-scatter(gas_nH[gas_SFR > 0.], gas_T[gas_SFR > 0.], s=0.2)
+plot(eos_cool_rho, eos_cool_T, "k--", lw=1)
+plot(eos_Jeans_rho, eos_Jeans_T, "k--", lw=1)
+scatter(gas_nH[gas_SFR > 0.0], gas_T[gas_SFR > 0.0], s=0.2)
 xlabel("${\\rm Density}~n_{\\rm H}~[{\\rm cm^{-3}}]$", labelpad=0)
 ylabel("${\\rm Temperature}~T~[{\\rm K}]$", labelpad=2)
 xlim(1e-4, 3e3)
-ylim(500., 2e5)
+ylim(500.0, 2e5)
 savefig("rhoT_SF.png", dpi=200)
 
 ########################################################################3
@@ -123,7 +126,7 @@ savefig("rhoT_SF.png", dpi=200)
 figure()
 subplot(111, xscale="log", yscale="log")
 scatter(gas_nH, gas_SFR, s=0.2)
-plot([1, 100], 2e-5 * np.array([1, 100])**0.266667, 'k--', lw=1)
+plot([1, 100], 2e-5 * np.array([1, 100]) ** 0.266667, "k--", lw=1)
 xlabel("${\\rm Density}~n_{\\rm H}~[{\\rm cm^{-3}}]$", labelpad=0)
 ylabel("${\\rm SFR}~[{\\rm M_\\odot~\\cdot~yr^{-1}}]$", labelpad=-7)
 xlim(1e-4, 3e3)
@@ -133,7 +136,14 @@ savefig("rho_SFR.png", dpi=200)
 ########################################################################3
 
 # Select gas in a pillow box around the galaxy
-mask = (gas_pos[:, 0] > -15) & (gas_pos[:, 0] < 15) & (gas_pos[:, 1] > -15) & (gas_pos[:, 1] < 15) & (gas_pos[:, 2] < 1.) & (gas_pos[:, 2] > -1.)
+mask = (
+    (gas_pos[:, 0] > -15)
+    & (gas_pos[:, 0] < 15)
+    & (gas_pos[:, 1] > -15)
+    & (gas_pos[:, 1] < 15)
+    & (gas_pos[:, 2] < 1.0)
+    & (gas_pos[:, 2] > -1.0)
+)
 gas_pos = gas_pos[mask, :]
 gas_SFR = gas_SFR[mask]
 gas_nH = gas_nH[mask]
@@ -163,7 +173,7 @@ ylim(-12, 12)
 savefig("edge_on.png", dpi=200)
 
 # Now a SF map
-rcParams.update({    "figure.figsize": (4.15, 3.15)})
+rcParams.update({"figure.figsize": (4.15, 3.15)})
 figure()
 subplot(111)
 scatter(gas_pos[:, 0], gas_pos[:, 1], s=0.1, c=gas_SFR)
@@ -182,38 +192,42 @@ savefig("SF_face_on.png", dpi=200)
 x_edges = np.linspace(-15, 15, 31)
 y_edges = np.linspace(-15, 15, 31)
 
-map_mass,_,_,_ = stats.binned_statistic_2d(gas_pos[:,0], gas_pos[:,1], gas_mass, statistic='sum', bins=(x_edges, y_edges))
-map_SFR,_,_,_  = stats.binned_statistic_2d(gas_pos[:,0], gas_pos[:,1], gas_SFR, statistic='sum', bins=(x_edges, y_edges))
+map_mass, _, _, _ = stats.binned_statistic_2d(
+    gas_pos[:, 0], gas_pos[:, 1], gas_mass, statistic="sum", bins=(x_edges, y_edges)
+)
+map_SFR, _, _, _ = stats.binned_statistic_2d(
+    gas_pos[:, 0], gas_pos[:, 1], gas_SFR, statistic="sum", bins=(x_edges, y_edges)
+)
 
 qv = QuickView(
     gas_pos,
     mass=gas_mass,
     r="infinity",
-    xsize=len(x_edges)-1,
-    ysize=len(y_edges)-1,
+    xsize=len(x_edges) - 1,
+    ysize=len(y_edges) - 1,
     p=0,  # Viewing angle theta
     roll=0,  # Viewing angle phi
     plot=False,
     logscale=False,
-    hsml=gas_hsml
+    hsml=gas_hsml,
 )
 
 map_mass2 = qv.get_image()
 extent_mass = qv.get_extent()
 
-gas_SFR[gas_SFR<=0] = 1e-10
+gas_SFR[gas_SFR <= 0] = 1e-10
 
 qv = QuickView(
     gas_pos,
     mass=gas_SFR,
     r="infinity",
-    xsize=len(x_edges)-1,
-    ysize=len(y_edges)-1,
+    xsize=len(x_edges) - 1,
+    ysize=len(y_edges) - 1,
     p=0,  # Viewing angle theta
     roll=0,  # Viewing angle phi
     plot=False,
     logscale=False,
-    hsml=gas_hsml
+    hsml=gas_hsml,
 )
 
 map_SFR2 = qv.get_image()
@@ -234,7 +248,7 @@ savefig("Map_mass.png", dpi=200)
 # Mass map 2
 figure()
 subplot(111)
-imshow(np.log10(map_mass2),extent=extent_mass)
+imshow(np.log10(map_mass2), extent=extent_mass)
 colorbar()
 xlim(-12, 12)
 ylim(-12, 12)
@@ -245,7 +259,7 @@ savefig("Map_mass_SPHVIEWER.png", dpi=200)
 # SF map
 figure()
 subplot(111)
-pcolormesh(x_edges, y_edges, np.log10(map_SFR), vmax = -.5, vmin=-4.5)
+pcolormesh(x_edges, y_edges, np.log10(map_SFR), vmax=-0.5, vmin=-4.5)
 colorbar()
 xlim(-12, 12)
 ylim(-12, 12)
@@ -254,11 +268,11 @@ ylabel("${\\rm Pos}~y~[{\\rm kpc}]$", labelpad=-3)
 savefig("Map_SFR.png", dpi=200)
 
 plot_map_SFR2 = np.zeros(np.shape(map_SFR2))
-plot_map_SFR2[map_SFR2>1e-6] = map_SFR2[map_SFR2>1e-6]
+plot_map_SFR2[map_SFR2 > 1e-6] = map_SFR2[map_SFR2 > 1e-6]
 # SF map 2
 figure()
 subplot(111)
-imshow(np.log10(plot_map_SFR2),extent=extent_SFR, vmax = -.5, vmin=-4.5)
+imshow(np.log10(plot_map_SFR2), extent=extent_SFR, vmax=-0.5, vmin=-4.5)
 colorbar()
 xlim(-12, 12)
 ylim(-12, 12)
@@ -272,45 +286,89 @@ savefig("Map_SFR_SPHVIEWER.png", dpi=200)
 map_SFR[map_SFR < 1e-6] = 1e-6
 
 # Theoretical threshold (assumes all gas has the same Z)
-KS_n_thresh = KS_thresh_norm * (gas_Z[0] / KS_thresh_Z0)**KS_thresh_slope
-if np.isfinite(KS_n_thresh)==False:
+KS_n_thresh = KS_thresh_norm * (gas_Z[0] / KS_thresh_Z0) ** KS_thresh_slope
+if np.isfinite(KS_n_thresh) == False:
     KS_n_thresh = KS_thresh_max_norm
-KS_sigma_thresh = 29. * np.sqrt(KS_gas_fraction) * np.sqrt(KS_n_thresh)
+KS_sigma_thresh = 29.0 * np.sqrt(KS_gas_fraction) * np.sqrt(KS_n_thresh)
 
 # Theoretical KS law
 KS_sigma_mass = np.logspace(-1, 3, 100)
-KS_sigma_SFR = KS_law_norm * KS_sigma_mass**KS_law_slope
+KS_sigma_SFR = KS_law_norm * KS_sigma_mass ** KS_law_slope
 
 # KS relation
-rcParams.update({    "figure.figsize": (3.15, 3.15),     "figure.subplot.left": 0.18,})
+rcParams.update({"figure.figsize": (3.15, 3.15), "figure.subplot.left": 0.18})
 figure()
 subplot(111, xscale="log", yscale="log")
-plot(KS_sigma_mass, KS_sigma_SFR, 'k--', lw=0.6)
-plot([KS_sigma_thresh, KS_sigma_thresh], [1e-8, 1e8], 'k--', lw=0.6)
-text(KS_sigma_thresh*0.95, 2.2, "$\\Sigma_{\\rm c} = %.2f~{\\rm M_\\odot\\cdot pc^{-2}}$"%KS_sigma_thresh, va="top", ha="right", rotation=90, fontsize=7)
-text(16, 10**(-3.5), "$n_{\\rm H,c} = %.3f~{\\rm cm^{-3}}$"%KS_n_thresh, fontsize=7)
-text(16, 2e-6, "${\\rm K\\textendash S~law}$:\n$\\Sigma_{\\rm SFR} = A \\times \\Sigma_g^n$\n$n=%.1f$\n$A=%.3f\\times10^{-4}~{\\rm M_\\odot / yr^{1} / kpc^{2}}$\n$f_{\\rm g} = %.1f$\n$\gamma_{\\rm eos} = %.3f$\n$Z=%1.4f$"%(KS_law_slope, KS_law_norm*10**4, KS_gas_fraction, KS_gamma_effective, EAGLE_Z), fontsize=7)
+plot(KS_sigma_mass, KS_sigma_SFR, "k--", lw=0.6)
+plot([KS_sigma_thresh, KS_sigma_thresh], [1e-8, 1e8], "k--", lw=0.6)
+text(
+    KS_sigma_thresh * 0.95,
+    2.2,
+    "$\\Sigma_{\\rm c} = %.2f~{\\rm M_\\odot\\cdot pc^{-2}}$" % KS_sigma_thresh,
+    va="top",
+    ha="right",
+    rotation=90,
+    fontsize=7,
+)
+text(16, 10 ** (-3.5), "$n_{\\rm H,c} = %.3f~{\\rm cm^{-3}}$" % KS_n_thresh, fontsize=7)
+text(
+    16,
+    2e-6,
+    "${\\rm K\\textendash S~law}$:\n$\\Sigma_{\\rm SFR} = A \\times \\Sigma_g^n$\n$n=%.1f$\n$A=%.3f\\times10^{-4}~{\\rm M_\\odot / yr^{1} / kpc^{2}}$\n$f_{\\rm g} = %.1f$\n$\gamma_{\\rm eos} = %.3f$\n$Z=%1.4f$"
+    % (
+        KS_law_slope,
+        KS_law_norm * 10 ** 4,
+        KS_gas_fraction,
+        KS_gamma_effective,
+        EAGLE_Z,
+    ),
+    fontsize=7,
+)
 scatter(map_mass.flatten() / 1e6, map_SFR.flatten(), s=0.4)
 xlim(0.3, 900)
 ylim(3e-7, 3)
 xlabel("$\\Sigma_g~[{\\rm M_\\odot\\cdot pc^{-2}}]$", labelpad=0)
-ylabel("$\\Sigma_{\\rm SFR}~[{\\rm M_\\odot \\cdot yr^{-1} \\cdot kpc^{-2}}]$", labelpad=0)
+ylabel(
+    "$\\Sigma_{\\rm SFR}~[{\\rm M_\\odot \\cdot yr^{-1} \\cdot kpc^{-2}}]$", labelpad=0
+)
 savefig("KS_law.png", dpi=200)
 close()
 
-plot_map_SFR2[plot_map_SFR2<=0] = 1e-6
+plot_map_SFR2[plot_map_SFR2 <= 0] = 1e-6
 
-rcParams.update({    "figure.figsize": (3.15, 3.15),     "figure.subplot.left": 0.18,})
+rcParams.update({"figure.figsize": (3.15, 3.15), "figure.subplot.left": 0.18})
 figure()
 subplot(111, xscale="log", yscale="log")
-plot(KS_sigma_mass, KS_sigma_SFR, 'k--', lw=0.6)
-plot([KS_sigma_thresh, KS_sigma_thresh], [1e-8, 1e8], 'k--', lw=0.6)
-text(KS_sigma_thresh*0.95, 2.2, "$\\Sigma_{\\rm c} = %.2f~{\\rm M_\\odot\\cdot pc^{-2}}$"%KS_sigma_thresh, va="top", ha="right", rotation=90, fontsize=7)
-text(16, 10**(-3.5), "$n_{\\rm H,c} = %.3f~{\\rm cm^{-3}}$"%KS_n_thresh, fontsize=7)
-text(16, 2e-6, "${\\rm K\\textendash S~law}$:\n$\\Sigma_{\\rm SFR} = A \\times \\Sigma_g^n$\n$n=%.1f$\n$A=%.3f\\times10^{-4}~{\\rm M_\\odot / yr^{1} / kpc^{2}}$\n$f_{\\rm g} = %.1f$\n$\gamma_{\\rm eos} = %.3f$\n$Z=%1.4f$"%(KS_law_slope, KS_law_norm*10**4, KS_gas_fraction, KS_gamma_effective, EAGLE_Z), fontsize=7)
+plot(KS_sigma_mass, KS_sigma_SFR, "k--", lw=0.6)
+plot([KS_sigma_thresh, KS_sigma_thresh], [1e-8, 1e8], "k--", lw=0.6)
+text(
+    KS_sigma_thresh * 0.95,
+    2.2,
+    "$\\Sigma_{\\rm c} = %.2f~{\\rm M_\\odot\\cdot pc^{-2}}$" % KS_sigma_thresh,
+    va="top",
+    ha="right",
+    rotation=90,
+    fontsize=7,
+)
+text(16, 10 ** (-3.5), "$n_{\\rm H,c} = %.3f~{\\rm cm^{-3}}$" % KS_n_thresh, fontsize=7)
+text(
+    16,
+    2e-6,
+    "${\\rm K\\textendash S~law}$:\n$\\Sigma_{\\rm SFR} = A \\times \\Sigma_g^n$\n$n=%.1f$\n$A=%.3f\\times10^{-4}~{\\rm M_\\odot / yr^{1} / kpc^{2}}$\n$f_{\\rm g} = %.1f$\n$\gamma_{\\rm eos} = %.3f$\n$Z=%1.4f$"
+    % (
+        KS_law_slope,
+        KS_law_norm * 10 ** 4,
+        KS_gas_fraction,
+        KS_gamma_effective,
+        EAGLE_Z,
+    ),
+    fontsize=7,
+)
 scatter(map_mass2.flatten() / 1e6, plot_map_SFR2.flatten(), s=0.4)
 xlim(0.3, 900)
 ylim(3e-7, 3)
 xlabel("$\\Sigma_g~[{\\rm M_\\odot\\cdot pc^{-2}}]$", labelpad=0)
-ylabel("$\\Sigma_{\\rm SFR}~[{\\rm M_\\odot \\cdot yr^{-1} \\cdot kpc^{-2}}]$", labelpad=0)
+ylabel(
+    "$\\Sigma_{\\rm SFR}~[{\\rm M_\\odot \\cdot yr^{-1} \\cdot kpc^{-2}}]$", labelpad=0
+)
 savefig("KS_law_SPHVIEWER.png", dpi=200)