change observer to subscriber