change to explicit registration system since we can't rely on observing native property changes