code refactor
new public events