use weak blocks if BubbleWrap.use_weak_callbacks?
use private methods