added event paradigm