cleanup weird 'activation_level' logic in activate().

(If any of these functions fail, then calling activate again is unlikely
to fix things).