better functions for long running jobs; todo: table for purl log