implementing perform event