what prompted these changes?  why no compact?  why send_if?