Decouple ViewEvent; use per view component event interface instead.