some refactoring, start of 'event source' implementation