Hello Ju@ncho, There are two ways you can achieve your design : 1. By declaring the object properties "FramesOfReference" and "Series" as of their individual interface types (e.g. IFramesOfReference, ISeries, respectively) : interface IStudy : IDispatch { [propget, id(1), helpstring("property FramesOfReference")] HRESULT FramesOfReference([out, retval] IFramesOfReference** pVal); [propput, id(1), helpstring("property FramesOfReference")] HRESULT FramesOfReference([in] IFramesOfReference* newVal); } interface IFramesOfReference : IDispatch { [propget, id(1), helpstring("property Series")] HRESULT Series([out, retval] ISeries** pVal); [propput, id(1), helpstring("property Series")] HRESULT Series([in] ISeries* newVal); } 2. By delaring the object properties as of type VARIANT : interface IStudy : IDispatch { [propget, id(1), helpstring("property FramesOfReference")] HRESULT FramesOfReference([out, retval] VARIANT *pVal); [propput, id(1), helpstring("property FramesOfReference")] HRESULT FramesOfReference([in] VARIANT newVal); }; interface IFramesOfReference : IDispatch { [propget, id(1), helpstring("property Series")] HRESULT Series([out, retval] VARIANT *pVal); [propput, id(1), helpstring("property Series")] HRESULT Series([in] VARIANT newVal); }; I have written a set of sample codes. Email me : bio_lim_2004@yahoo.com and I will send it to you. Best Regards, - Bio.