reinstate recursion
add provenance metadata, **and simple merging of GEP provenance**