subscription object and allowing multiple subscriptions and unsubscribe semantics etc