first step towards event framework