Remove abstract and implements macros - prefer to avoid macros if possible.
Move logger from Events to Core as it is pretty essential for most other components.