create more general reactive class, use super