add the ability to specify a function to run before execute()