Added Event interface and implementation