Destroying an automation object.

A couple of questions...

I can happily call either of the two create functions :

class function CoGusto.Create: IGusto;
begin
  Result := CreateComObject(CLASS_Gusto) as IGusto;
end;

class function CoGusto.CreateRemote(const MachineName: string): IGusto;
begin
  Result := CreateRemoteComObject(MachineName, CLASS_Gusto) as IGusto;
end;

However what do I do when I want to disconnect from a remote server and
connect to a new one.

Var
MyEngine : IGusto ;

How can I free/destroy MyEngine.....

1) MyEngine := nil.
2) CoUnInitialize
3) _Release // Delphi help sayes do not call _Release directly - so what
should I do? Should the server implement _Release?

When Delphi close it presumably tidies up and frees everything but what does
it do?

FYI
The server is ciMultiInstance and tmApartment. The client is single
threaded.

Any help or code examples much appreciated.
David H.