abstract away actual exec implementation to faciliate testing