refactor Exec methods so they share similar structure