changed way of publishing events, refactoring
Merge remote-tracking branch 'origin/structure_update' into structure_update