implemented perform event