diff --git a/src/Persefone.jl b/src/Persefone.jl
index 12e1fafe252c2bfa96b1d79bf06cd3978f4d97a9..615fd88c231c7d61fb7761c6a8f723879e5e4806 100644
--- a/src/Persefone.jl
+++ b/src/Persefone.jl
@@ -149,8 +149,12 @@ include("nature/species/wyvern.jl")
 
 include("core/simulation.jl") #this must be last
 
-# precompile important functions - TODO use PrecompileTools.jl
-precompile(initialise, (String,Int))
-precompile(stepsimulation!, (SimulationModel,))
-
+function _precompile()
+    precompile(initialise, (String,Int))
+    precompile(stepsimulation!, (SimulationModel,))
+end
+if ccall(:jl_generating_output, Cint, ()) == 1
+    # only run this during precompilation
+    _precompile()
+end
 end