Use events instead of remote code