by slashrsm: Move events into separate namespace.
by slashrsm: Create EventBase.