refactor to use exec