make sure observation is deregistered on deactivation
add unit tests