connections point problem

I think I posted this to the wrong group earlier...

I've created the following unit to expose and event 'EVENT' in an automation
server. The server needs to fire events in multiple clients.
For some reason I cannot trace, when the event is fired, the server throws
an exception at

if Assigned(FSinkList[I]) then
        (IUnknown(FSinkList[I]) as INewServerEvents).Event;

Can anyone help me work out why?

TIA
Brett

<Code below>

unit Unit2;

interface

uses
  ComObj, ActiveX, AxCtrls, Classes, NewServ_TLB, StdVcl;

type
  TNewServer = class(TAutoObject, IConnectionPointContainer, INewServer)
  private
    { Private declarations }
    FConnectionPoints: TConnectionPoints;
    FConnectionPoint: TConnectionPoint;
    FSinkList: TList;
    FEvents: INewServerEvents;
  public
    procedure Initialize; override;
  protected
    { Protected declarations }
    property ConnectionPoints: TConnectionPoints read FConnectionPoints
      implements IConnectionPointContainer;
    procedure EventSinkChanged(const EventSink: IUnknown); override;
    procedure CallEvent; safecall;
    procedure SendEvent;
  end;

implementation

uses ComServ;

procedure TNewServer.EventSinkChanged(const EventSink: IUnknown);
begin
  FEvents := EventSink as INewServerEvents;
  if FConnectionPoint <> nil then
     FSinkList := FConnectionPoint.SinkList;
end;

procedure TNewServer.Initialize;
begin
  inherited Initialize;
  FConnectionPoints := TConnectionPoints.Create(Self);
  if AutoFactory.EventTypeInfo <> nil then
    FConnectionPoint := FConnectionPoints.CreateConnectionPoint(
      AutoFactory.EventIID, ckSingle, EventConnect)
  else FConnectionPoint := nil;
end;

procedure TNewServer.CallEvent;
begin
     SendEvent;
end;

procedure TNewServer.SendEvent;
var
  I: Integer;
begin
    if Assigned(FSinkList) then
    for I := 0 to FSinkList.Count - 1 do
      if Assigned(FSinkList[I]) then
        (IUnknown(FSinkList[I]) as INewServerEvents).Event;
end;

initialization
  TAutoObjectFactory.Create(ComServer, TNewServer, Class_NewServer,
    ciMultiInstance, tmApartment);
end.