Is creating an execution engine expensive, so should we keep a shared one?