should all these notification classes be `@api private` so users don't instantiate them? Just make their instance methods public.