.on returns subscription object for easy canceling