put some guards around execute