moving exec into its own thing, it's going to have to be fleshed out anyway