must use deletion because we can't do nested transactions