implement ScriptEvent