Switched `states` stream to use the new `StreamController.broadcast`