event driven and rpc