Commit mostly for portability.

Includes the initial parts for the notification system.