rename NoOpEndpoint -> EndpointDelegate