@callback register_name(name :: term(), pid :: pid()) :: :yes | :no
@callback send(name :: term(), message :: term()) :: term()
@callback unregister_name(name :: term()) :: :ok
@callback whereis_name(name :: term()) :: pid()