Index: /trunk/src/VBox/Main/include/AudioAdapterImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/AudioAdapterImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/AudioAdapterImpl.h	(revision 49871)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -21,6 +21,5 @@
 #define ____H_AUDIOADAPTER
 
-#include "VirtualBoxBase.h"
-
+#include "AudioAdapterWrap.h"
 namespace settings
 {
@@ -29,27 +28,7 @@
 
 class ATL_NO_VTABLE AudioAdapter :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IAudioAdapter)
+    public AudioAdapterWrap
 {
 public:
-
-    struct Data
-    {
-        Data();
-
-        BOOL mEnabled;
-        AudioDriverType_T mAudioDriver;
-        AudioControllerType_T mAudioController;
-    };
-
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(AudioAdapter, IAudioAdapter)
-
-    DECLARE_NOT_AGGREGATABLE(AudioAdapter)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(AudioAdapter)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(IAudioAdapter)
-    END_COM_MAP()
 
     DECLARE_EMPTY_CTOR_DTOR (AudioAdapter)
@@ -64,25 +43,26 @@
     void uninit();
 
-    STDMETHOD(COMGETTER(Enabled))(BOOL *aEnabled);
-    STDMETHOD(COMSETTER(Enabled))(BOOL aEnabled);
-    STDMETHOD(COMGETTER(AudioDriver))(AudioDriverType_T *aAudioDriverType);
-    STDMETHOD(COMSETTER(AudioDriver))(AudioDriverType_T aAudioDriverType);
-    STDMETHOD(COMGETTER(AudioController))(AudioControllerType_T *aAudioControllerType);
-    STDMETHOD(COMSETTER(AudioController))(AudioControllerType_T aAudioControllerType);
 
     // public methods only for internal purposes
+    HRESULT i_loadSettings(const settings::AudioAdapter &data);
+    HRESULT i_saveSettings(settings::AudioAdapter &data);
 
-    HRESULT loadSettings(const settings::AudioAdapter &data);
-    HRESULT saveSettings(settings::AudioAdapter &data);
-
-    void rollback();
-    void commit();
-    void copyFrom(AudioAdapter *aThat);
+    void i_rollback();
+    void i_commit();
+    void i_copyFrom(AudioAdapter *aThat);
 
 private:
 
+    // wrapped IAudioAdapter properties
+    HRESULT getEnabled(BOOL *aEnabled);
+    HRESULT setEnabled(BOOL aEnabled);
+    HRESULT getAudioDriver(AudioDriverType_T *aAudioDriver);
+    HRESULT setAudioDriver(AudioDriverType_T aAudioDriver);
+    HRESULT getAudioController(AudioControllerType_T *aAudioController);
+    HRESULT setAudioController(AudioControllerType_T aAudioController);
+
     Machine * const     mParent;
     const ComObjPtr<AudioAdapter> mPeer;
-
+    struct Data;
     Backupable<Data>    mData;
 };
Index: /trunk/src/VBox/Main/include/BIOSSettingsImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/BIOSSettingsImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/BIOSSettingsImpl.h	(revision 49871)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -21,5 +21,5 @@
 #define ____H_BIOSSETTINGS
 
-#include "VirtualBoxBase.h"
+#include "BIOSSettingsWrap.h"
 
 class GuestOSType;
@@ -31,17 +31,9 @@
 
 class ATL_NO_VTABLE BIOSSettings :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IBIOSSettings)
+    public BIOSSettingsWrap
 {
 public:
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(BIOSSettings, IBIOSSettings)
 
-    DECLARE_NOT_AGGREGATABLE(BIOSSettings)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(BIOSSettings)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(IBIOSSettings)
-    END_COM_MAP()
+    DECLARE_EMPTY_CTOR_DTOR(BIOSSettings)
 
     HRESULT FinalConstruct();
@@ -49,40 +41,41 @@
 
     // public initializer/uninitializer for internal purposes only
-    HRESULT init (Machine *parent);
-    HRESULT init (Machine *parent, BIOSSettings *that);
-    HRESULT initCopy (Machine *parent, BIOSSettings *that);
+    HRESULT init(Machine *parent);
+    HRESULT init(Machine *parent, BIOSSettings *that);
+    HRESULT initCopy(Machine *parent, BIOSSettings *that);
     void uninit();
 
-    STDMETHOD(COMGETTER(LogoFadeIn))(BOOL *enabled);
-    STDMETHOD(COMSETTER(LogoFadeIn))(BOOL enable);
-    STDMETHOD(COMGETTER(LogoFadeOut))(BOOL *enabled);
-    STDMETHOD(COMSETTER(LogoFadeOut))(BOOL enable);
-    STDMETHOD(COMGETTER(LogoDisplayTime))(ULONG *displayTime);
-    STDMETHOD(COMSETTER(LogoDisplayTime))(ULONG displayTime);
-    STDMETHOD(COMGETTER(LogoImagePath))(BSTR *imagePath);
-    STDMETHOD(COMSETTER(LogoImagePath))(IN_BSTR imagePath);
-    STDMETHOD(COMGETTER(BootMenuMode))(BIOSBootMenuMode_T *bootMenuMode);
-    STDMETHOD(COMSETTER(BootMenuMode))(BIOSBootMenuMode_T bootMenuMode);
-    STDMETHOD(COMGETTER(ACPIEnabled))(BOOL *enabled);
-    STDMETHOD(COMSETTER(ACPIEnabled))(BOOL enable);
-    STDMETHOD(COMGETTER(IOAPICEnabled))(BOOL *enabled);
-    STDMETHOD(COMSETTER(IOAPICEnabled))(BOOL enable);
-    STDMETHOD(COMGETTER(PXEDebugEnabled))(BOOL *enabled);
-    STDMETHOD(COMSETTER(PXEDebugEnabled))(BOOL enable);
-    STDMETHOD(COMGETTER)(TimeOffset)(LONG64 *offset);
-    STDMETHOD(COMSETTER)(TimeOffset)(LONG64 offset);
-    STDMETHOD(COMGETTER)(NonVolatileStorageFile)(BSTR *pbstrPath);
+    // public methods only for internal purposes
+    HRESULT i_loadSettings(const settings::BIOSSettings &data);
+    HRESULT i_saveSettings(settings::BIOSSettings &data);
 
-    // public methods only for internal purposes
-
-    HRESULT loadSettings(const settings::BIOSSettings &data);
-    HRESULT saveSettings(settings::BIOSSettings &data);
-
-    void rollback();
-    void commit();
-    void copyFrom (BIOSSettings *aThat);
-    void applyDefaults (GuestOSType *aOsType);
+    void i_rollback();
+    void i_commit();
+    void i_copyFrom(BIOSSettings *aThat);
+    void i_applyDefaults(GuestOSType *aOsType);
 
 private:
+
+    // wrapped IBIOSettings properties
+    HRESULT getLogoFadeIn(BOOL *enabled);
+    HRESULT setLogoFadeIn(BOOL enable);
+    HRESULT getLogoFadeOut(BOOL *enabled);
+    HRESULT setLogoFadeOut(BOOL enable);
+    HRESULT getLogoDisplayTime(ULONG *displayTime);
+    HRESULT setLogoDisplayTime(ULONG displayTime);
+    HRESULT getLogoImagePath(com::Utf8Str &imagePath);
+    HRESULT setLogoImagePath(const com::Utf8Str &imagePath);
+    HRESULT getBootMenuMode(BIOSBootMenuMode_T *bootMenuMode);
+    HRESULT setBootMenuMode(BIOSBootMenuMode_T bootMenuMode);
+    HRESULT getACPIEnabled(BOOL *enabled);
+    HRESULT setACPIEnabled(BOOL enable);
+    HRESULT getIOAPICEnabled(BOOL *aIOAPICEnabled);
+    HRESULT setIOAPICEnabled(BOOL aIOAPICEnabled);
+    HRESULT getTimeOffset(LONG64 *offset);
+    HRESULT setTimeOffset(LONG64 offset);
+    HRESULT getPXEDebugEnabled(BOOL *enabled);
+    HRESULT setPXEDebugEnabled(BOOL enable);
+    HRESULT getNonVolatileStorageFile(com::Utf8Str &aNonVolatileStorageFile);
+
     struct Data;
     Data *m;
Index: /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h	(revision 49871)
@@ -21,28 +21,16 @@
 #define ____H_HOSTNETWORKINTERFACEIMPL
 
-#include "VirtualBoxBase.h"
-#include "VirtualBoxImpl.h"
+#include "HostNetworkInterfaceWrap.h"
 
 #ifdef VBOX_WITH_HOSTNETIF_API
-/* class HostNetworkInterface; */
-/* #include "netif.h" */
 struct NETIFINFO;
 #endif
 
+class PerformanceCollector;
+
 class ATL_NO_VTABLE HostNetworkInterface :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IHostNetworkInterface)
+    public HostNetworkInterfaceWrap
 {
 public:
-
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(HostNetworkInterface, IHostNetworkInterface)
-
-    DECLARE_NOT_AGGREGATABLE(HostNetworkInterface)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(HostNetworkInterface)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(IHostNetworkInterface)
-    END_COM_MAP()
 
     DECLARE_EMPTY_CTOR_DTOR(HostNetworkInterface)
@@ -58,33 +46,38 @@
 #endif
 
-    // IHostNetworkInterface properties
-    STDMETHOD(COMGETTER(Name))(BSTR *aInterfaceName);
-    STDMETHOD(COMGETTER(ShortName))(BSTR *aShortName);
-    STDMETHOD(COMGETTER(Id))(BSTR *aGuid);
-    STDMETHOD(COMGETTER(DHCPEnabled))(BOOL *aDHCPEnabled);
-    STDMETHOD(COMGETTER(IPAddress))(BSTR *aIPAddress);
-    STDMETHOD(COMGETTER(NetworkMask))(BSTR *aNetworkMask);
-    STDMETHOD(COMGETTER(IPV6Supported))(BOOL *aIPV6Supported);
-    STDMETHOD(COMGETTER(IPV6Address))(BSTR *aIPV6Address);
-    STDMETHOD(COMGETTER(IPV6NetworkMaskPrefixLength))(ULONG *aIPV6NetworkMaskPrefixLength);
-    STDMETHOD(COMGETTER(HardwareAddress))(BSTR *aHardwareAddress);
-    STDMETHOD(COMGETTER(MediumType))(HostNetworkInterfaceMediumType_T *aType);
-    STDMETHOD(COMGETTER(Status))(HostNetworkInterfaceStatus_T *aStatus);
-    STDMETHOD(COMGETTER(InterfaceType))(HostNetworkInterfaceType_T *aType);
-    STDMETHOD(COMGETTER(NetworkName))(BSTR *aNetworkName);
+    HRESULT i_setVirtualBox(VirtualBox *pVBox);
 
-    STDMETHOD(EnableStaticIPConfig)(IN_BSTR aIPAddress, IN_BSTR aNetworkMask);
-    STDMETHOD(EnableStaticIPConfigV6)(IN_BSTR aIPV6Address, ULONG aIPV6MaskPrefixLength);
-    STDMETHOD(EnableDynamicIPConfig)();
-    STDMETHOD(DHCPRediscover)();
-
-    HRESULT setVirtualBox(VirtualBox *pVBox);
 #ifdef VBOX_WITH_RESOURCE_USAGE_API
-    void registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
-    void unregisterMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
+    void i_registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
+    void i_unregisterMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
 #endif
 
 private:
-    Bstr composeNetworkName(const Utf8Str szShortName);
+
+    // Wrapped IHostNetworkInterface properties
+    HRESULT getName(com::Utf8Str &aName);
+    HRESULT getShortName(com::Utf8Str &aShortName);
+    HRESULT getId(com::Guid &aGuiId);
+    HRESULT getDHCPEnabled(BOOL *aDHCPEnabled);
+    HRESULT getIPAddress(com::Utf8Str &aIPAddress);
+    HRESULT getNetworkMask(com::Utf8Str &aNetworkMask);
+    HRESULT getIPV6Supported(BOOL *aIPV6Supported);
+    HRESULT getIPV6Address(com::Utf8Str &aIPV6Address);
+    HRESULT getIPV6NetworkMaskPrefixLength(ULONG *aIPV6NetworkMaskPrefixLength);
+    HRESULT getHardwareAddress(com::Utf8Str &aHardwareAddress);
+    HRESULT getMediumType(HostNetworkInterfaceMediumType_T *aType);
+    HRESULT getStatus(HostNetworkInterfaceStatus_T *aStatus);
+    HRESULT getInterfaceType(HostNetworkInterfaceType_T *aType);
+    HRESULT getNetworkName(com::Utf8Str &aNetworkName);
+
+    // Wrapped IHostNetworkInterface methods
+    HRESULT enableStaticIPConfig(const com::Utf8Str &aIPAddress,
+                                 const com::Utf8Str &aNetworkMask);
+    HRESULT enableStaticIPConfigV6(const com::Utf8Str &aIPV6Address,
+                                   ULONG aIPV6NetworkMaskPrefixLength);
+    HRESULT enableDynamicIPConfig();
+    HRESULT dHCPRediscover();
+
+    Bstr i_composeNetworkName(const Utf8Str szShortName);
 
     const Bstr mInterfaceName;
Index: /trunk/src/VBox/Main/include/MediumAttachmentImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MediumAttachmentImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/MediumAttachmentImpl.h	(revision 49871)
@@ -19,24 +19,15 @@
 #define ____H_MEDIUMATTACHMENTIMPL
 
-#include "VirtualBoxBase.h"
-#include "BandwidthGroupImpl.h"
+#include "MediumAttachmentWrap.h"
 
 class ATL_NO_VTABLE MediumAttachment :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IMediumAttachment)
+    public MediumAttachmentWrap
 {
 public:
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(MediumAttachment, IMediumAttachment)
 
-    DECLARE_NOT_AGGREGATABLE(MediumAttachment)
+    DECLARE_EMPTY_CTOR_DTOR(MediumAttachment)
 
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(MediumAttachment)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(IMediumAttachment)
-    END_COM_MAP()
-
-    MediumAttachment() { };
-    ~MediumAttachment() { };
+    HRESULT FinalConstruct();
+    void FinalRelease();
 
     // public initializer/uninitializer for internal purposes only
@@ -57,74 +48,72 @@
     void uninit();
 
-    HRESULT FinalConstruct();
-    void FinalRelease();
-
-    // IMediumAttachment properties
-    STDMETHOD(COMGETTER(Medium))(IMedium **aMedium);
-    STDMETHOD(COMGETTER(Controller))(BSTR *aController);
-    STDMETHOD(COMGETTER(Port))(LONG *aPort);
-    STDMETHOD(COMGETTER(Device))(LONG *aDevice);
-    STDMETHOD(COMGETTER(Type))(DeviceType_T *aType);
-    STDMETHOD(COMGETTER(Passthrough))(BOOL *aPassthrough);
-    STDMETHOD(COMGETTER(TemporaryEject))(BOOL *aTemporaryEject);
-    STDMETHOD(COMGETTER(IsEjected))(BOOL *aIsEjected);
-    STDMETHOD(COMGETTER(NonRotational))(BOOL *aNonRotational);
-    STDMETHOD(COMGETTER(Discard))(BOOL *aDiscard);
-    STDMETHOD(COMGETTER(BandwidthGroup))(IBandwidthGroup **aBwGroup);
-    STDMETHOD(COMGETTER(HotPluggable))(BOOL *aHotPluggable);
-
     // public internal methods
-    void rollback();
-    void commit();
+    void i_rollback();
+    void i_commit();
 
     // unsafe public methods for internal purposes only (ensure there is
     // a caller and a read lock before calling them!)
-    bool isImplicit() const;
-    void setImplicit(bool aImplicit);
+    bool i_isImplicit() const;
+    void i_setImplicit(bool aImplicit);
 
-    const ComObjPtr<Medium>& getMedium() const;
-    Bstr getControllerName() const;
-    LONG getPort() const;
-    LONG getDevice() const;
-    DeviceType_T getType() const;
-    bool getPassthrough() const;
-    bool getTempEject() const;
-    bool getNonRotational() const;
-    bool getDiscard() const;
-    const Utf8Str& getBandwidthGroup() const;
-    bool getHotPluggable() const;
+    const ComObjPtr<Medium>& i_getMedium() const;
+    const Bstr i_getControllerName() const;
+    LONG i_getPort() const;
+    LONG i_getDevice() const;
+    DeviceType_T i_getType() const;
+    bool i_getPassthrough() const;
+    bool i_getTempEject() const;
+    bool i_getNonRotational() const;
+    bool i_getDiscard() const;
+    Utf8Str& i_getBandwidthGroup() const;
+    bool i_getHotPluggable() const;
 
-    bool matches(CBSTR aControllerName, LONG aPort, LONG aDevice);
+    bool i_matches(CBSTR aControllerName, LONG aPort, LONG aDevice);
 
     /** Must be called from under this object's write lock. */
-    void updateMedium(const ComObjPtr<Medium> &aMedium);
+    void i_updateMedium(const ComObjPtr<Medium> &aMedium);
 
     /** Must be called from under this object's write lock. */
-    void updatePassthrough(bool aPassthrough);
+    void i_updatePassthrough(bool aPassthrough);
 
     /** Must be called from under this object's write lock. */
-    void updateTempEject(bool aTempEject);
+    void i_updateTempEject(bool aTempEject);
 
     /** Must be called from under this object's write lock. */
-    void updateNonRotational(bool aNonRotational);
+    void i_updateNonRotational(bool aNonRotational);
 
     /** Must be called from under this object's write lock. */
-    void updateDiscard(bool aDiscard);
+    void i_updateDiscard(bool aDiscard);
 
     /** Must be called from under this object's write lock. */
-    void updateEjected();
+    void i_updateEjected();
 
     /** Must be called from under this object's write lock. */
-    void updateBandwidthGroup(const Utf8Str &aBandwidthGroup);
+    void i_updateBandwidthGroup(const Utf8Str &aBandwidthGroup);
 
-    void updateParentMachine(Machine * const pMachine);
+    void i_updateParentMachine(Machine * const pMachine);
 
     /** Must be called from under this object's write lock. */
-    void updateHotPluggable(bool aHotPluggable);
+    void i_updateHotPluggable(bool aHotPluggable);
 
     /** Get a unique and somewhat descriptive name for logging. */
-    const char* getLogName(void) const { return mLogName.c_str(); }
+    const char* i_getLogName(void) const { return mLogName.c_str(); }
 
 private:
+
+    // Wrapped IMediumAttachment properties
+    HRESULT getMedium(ComPtr<IMedium> &aHardDisk);
+    HRESULT getController(com::Utf8Str &aController);
+    HRESULT getPort(LONG *aPort);
+    HRESULT getDevice(LONG *aDevice);
+    HRESULT getType(DeviceType_T *aType);
+    HRESULT getPassthrough(BOOL *aPassthrough);
+    HRESULT getTemporaryEject(BOOL *aTemporaryEject);
+    HRESULT getIsEjected(BOOL *aEjected);
+    HRESULT getDiscard(BOOL *aDiscard);
+    HRESULT getNonRotational(BOOL *aNonRotational);
+    HRESULT getBandwidthGroup(ComPtr<IBandwidthGroup> &aBandwidthGroup);
+    HRESULT getHotPluggable(BOOL *aHotPluggable);
+
     struct Data;
     Data *m;
Index: /trunk/src/VBox/Main/include/NATEngineImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/NATEngineImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/NATEngineImpl.h	(revision 49871)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2006-2012 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -22,6 +22,6 @@
 
 
-#include "VirtualBoxBase.h"
 #include <VBox/settings.h>
+#include "NATEngineWrap.h"
 
 namespace settings
@@ -30,97 +30,76 @@
 }
 
+
 class ATL_NO_VTABLE NATEngine :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(INATEngine)
+    public NATEngineWrap
 {
     public:
     typedef std::map<Utf8Str, settings::NATRule> NATRuleMap;
-    struct Data
-    {
-        Data() : mMtu(0),
-                 mSockRcv(0),
-                 mSockSnd(0),
-                 mTcpRcv(0),
-                 mTcpSnd(0),
-                 mDNSPassDomain(TRUE),
-                 mDNSProxy(FALSE),
-                 mDNSUseHostResolver(FALSE),
-                 mAliasMode(0)
-        {}
-
-        com::Utf8Str mNetwork;
-        com::Utf8Str mBindIP;
-        uint32_t mMtu;
-        uint32_t mSockRcv;
-        uint32_t mSockSnd;
-        uint32_t mTcpRcv;
-        uint32_t mTcpSnd;
-        /* TFTP service */
-        Utf8Str  mTFTPPrefix;
-        Utf8Str  mTFTPBootFile;
-        Utf8Str  mTFTPNextServer;
-        /* DNS service */
-        BOOL     mDNSPassDomain;
-        BOOL     mDNSProxy;
-        BOOL     mDNSUseHostResolver;
-        /* Alias service */
-        ULONG    mAliasMode;
-    };
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(NATEngine, INATEngine)
-
-    DECLARE_NOT_AGGREGATABLE(NATEngine)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(NATEngine)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(INATEngine)
-    END_COM_MAP()
 
     DECLARE_EMPTY_CTOR_DTOR(NATEngine)
 
     HRESULT FinalConstruct();
+    void FinalRelease();
+
     HRESULT init(Machine *aParent, INetworkAdapter *aAdapter);
     HRESULT init(Machine *aParent, INetworkAdapter *aAdapter, NATEngine *aThat);
     HRESULT initCopy(Machine *aParent, INetworkAdapter *aAdapter, NATEngine *aThat);
-    bool isModified();
-    bool isReallyModified();
-    bool rollback();
-    void commit();
     void uninit();
-    void FinalRelease();
 
-    HRESULT loadSettings(const settings::NAT &data);
-    HRESULT saveSettings(settings::NAT &data);
-
-    STDMETHOD(COMSETTER(Network))(IN_BSTR aNetwork);
-    STDMETHOD(COMGETTER(Network))(BSTR *aNetwork);
-    STDMETHOD(COMSETTER(HostIP))(IN_BSTR aBindIP);
-    STDMETHOD(COMGETTER(HostIP))(BSTR *aBindIP);
-    /* TFTP attributes */
-    STDMETHOD(COMSETTER(TFTPPrefix))(IN_BSTR aTFTPPrefix);
-    STDMETHOD(COMGETTER(TFTPPrefix))(BSTR *aTFTPPrefix);
-    STDMETHOD(COMSETTER(TFTPBootFile))(IN_BSTR aTFTPBootFile);
-    STDMETHOD(COMGETTER(TFTPBootFile))(BSTR *aTFTPBootFile);
-    STDMETHOD(COMSETTER(TFTPNextServer))(IN_BSTR aTFTPNextServer);
-    STDMETHOD(COMGETTER(TFTPNextServer))(BSTR *aTFTPNextServer);
-    /* Alias attributes */
-    STDMETHOD(COMSETTER(AliasMode))(ULONG aAliasLog);
-    STDMETHOD(COMGETTER(AliasMode))(ULONG *aAliasLog);
-    /* DNS attributes */
-    STDMETHOD(COMSETTER(DNSPassDomain))(BOOL aDNSPassDomain);
-    STDMETHOD(COMGETTER(DNSPassDomain))(BOOL *aDNSPassDomain);
-    STDMETHOD(COMSETTER(DNSProxy))(BOOL aDNSProxy);
-    STDMETHOD(COMGETTER(DNSProxy))(BOOL *aDNSProxy);
-    STDMETHOD(COMGETTER(DNSUseHostResolver))(BOOL *aDNSUseHostResolver);
-    STDMETHOD(COMSETTER(DNSUseHostResolver))(BOOL aDNSUseHostResolver);
-
-    STDMETHOD(SetNetworkSettings)(ULONG aMtu, ULONG aSockSnd, ULONG aSockRcv, ULONG aTcpWndSnd, ULONG aTcpWndRcv);
-    STDMETHOD(GetNetworkSettings)(ULONG *aMtu, ULONG *aSockSnd, ULONG *aSockRcv, ULONG *aTcpWndSnd, ULONG *aTcpWndRcv);
-
-    STDMETHOD(COMGETTER(Redirects))(ComSafeArrayOut(BSTR, aNatRules));
-    STDMETHOD(AddRedirect)(IN_BSTR aName, NATProtocol_T aProto, IN_BSTR aBindIp, USHORT aHostPort, IN_BSTR aGuestIP, USHORT aGuestPort);
-    STDMETHOD(RemoveRedirect)(IN_BSTR aName);
+    bool i_isModified();
+    bool i_rollback();
+    void i_commit();
+    HRESULT i_loadSettings(const settings::NAT &data);
+    HRESULT i_saveSettings(settings::NAT &data);
 
 private:
+
+    // wrapped INATEngine properties
+    HRESULT setNetwork(const com::Utf8Str &aNetwork);
+    HRESULT getNetwork(com::Utf8Str &aNetwork);
+    HRESULT setHostIP(const com::Utf8Str &aHostIP);
+    HRESULT getHostIP(com::Utf8Str &aBindIP);
+    /* TFTP properties */
+    HRESULT setTFTPPrefix(const com::Utf8Str &aTFTPPrefix);
+    HRESULT getTFTPPrefix(com::Utf8Str &aTFTPPrefix);
+    HRESULT setTFTPBootFile(const com::Utf8Str &aTFTPBootFile);
+    HRESULT getTFTPBootFile(com::Utf8Str &aTFTPBootFile);
+    HRESULT setTFTPNextServer(const com::Utf8Str &aTFTPNextServer);
+    HRESULT getTFTPNextServer(com::Utf8Str &aTFTPNextServer);
+    /* DNS properties */
+    HRESULT setDNSPassDomain(BOOL aDNSPassDomain);
+    HRESULT getDNSPassDomain(BOOL *aDNSPassDomain);
+    HRESULT setDNSProxy(BOOL aDNSProxy);
+    HRESULT getDNSProxy(BOOL *aDNSProxy);
+    HRESULT getDNSUseHostResolver(BOOL *aDNSUseHostResolver);
+    HRESULT setDNSUseHostResolver(BOOL aDNSUseHostResolver);
+    /* Alias properties */
+    HRESULT setAliasMode(ULONG aAliasMode);
+    HRESULT getAliasMode(ULONG *aAliasMode);
+
+    HRESULT getRedirects(std::vector<com::Utf8Str> &aRedirects);
+
+    HRESULT setNetworkSettings(ULONG aMtu,
+                               ULONG aSockSnd,
+                               ULONG aSockRcv,
+                               ULONG aTcpWndSnd,
+                               ULONG aTcpWndRcv);
+
+    HRESULT getNetworkSettings(ULONG *aMtu,
+                               ULONG *aSockSnd,
+                               ULONG *aSockRcv,
+                               ULONG *aTcpWndSnd,
+                               ULONG *aTcpWndRcv);
+
+    HRESULT addRedirect(const com::Utf8Str  &aName,
+                              NATProtocol_T aProto,
+                        const com::Utf8Str  &aHostIP,
+                              USHORT        aHostPort,
+                        const com::Utf8Str  &aGuestIP,
+                              USHORT        aGuestPort);
+
+    HRESULT removeRedirect(const com::Utf8Str &aName);
+
+    struct  Data;
     Backupable<Data> mData;
     bool m_fModified;
Index: /trunk/src/VBox/Main/include/ParallelPortImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/ParallelPortImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/ParallelPortImpl.h	(revision 49871)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2006-2012 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -20,5 +20,5 @@
 #define ____H_PARALLELPORTIMPL
 
-#include "VirtualBoxBase.h"
+#include "ParallelPortWrap.h"
 
 namespace settings
@@ -28,20 +28,9 @@
 
 class ATL_NO_VTABLE ParallelPort :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IParallelPort)
+    public ParallelPortWrap
 {
 public:
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ParallelPort, IParallelPort)
 
-    DECLARE_NOT_AGGREGATABLE(ParallelPort)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(ParallelPort)
-        VBOX_DEFAULT_INTERFACE_ENTRIES (IParallelPort)
-    END_COM_MAP()
-
-    ParallelPort() {}
-    ~ParallelPort() {}
+    DECLARE_EMPTY_CTOR_DTOR(ParallelPort)
 
     HRESULT FinalConstruct();
@@ -54,30 +43,27 @@
     void uninit();
 
-    // IParallelPort properties
-    STDMETHOD(COMGETTER(Slot))    (ULONG     *aSlot);
-    STDMETHOD(COMGETTER(Enabled)) (BOOL      *aEnabled);
-    STDMETHOD(COMSETTER(Enabled)) (BOOL       aEnabled);
-    STDMETHOD(COMGETTER(IRQ))     (ULONG     *aIRQ);
-    STDMETHOD(COMSETTER(IRQ))     (ULONG      aIRQ);
-    STDMETHOD(COMGETTER(IOBase))  (ULONG     *aIOBase);
-    STDMETHOD(COMSETTER(IOBase))  (ULONG      aIOBase);
-    STDMETHOD(COMGETTER(Path))    (BSTR      *aPath);
-    STDMETHOD(COMSETTER(Path))    (IN_BSTR aPath);
+    HRESULT i_loadSettings(const settings::ParallelPort &data);
+    HRESULT i_saveSettings(settings::ParallelPort &data);
 
     // public methods only for internal purposes
-
-    HRESULT loadSettings(const settings::ParallelPort &data);
-    HRESULT saveSettings(settings::ParallelPort &data);
-
-    bool isModified();
-    void rollback();
-    void commit();
-    void copyFrom(ParallelPort *aThat);
-
-    // public methods for internal purposes only
-    // (ensure there is a caller and a read lock before calling them!)
+    bool i_isModified();
+    void i_rollback();
+    void i_commit();
+    void i_copyFrom(ParallelPort *aThat);
 
 private:
-    HRESULT checkSetPath(const Utf8Str &str);
+
+    // Wrapped IParallelPort properties
+    HRESULT getEnabled(BOOL *aEnabled);
+    HRESULT setEnabled(BOOL aEnabled);
+    HRESULT getSlot(ULONG *aSlot);
+    HRESULT getIRQ(ULONG *aIRQ);
+    HRESULT setIRQ(ULONG aIRQ);
+    HRESULT getIOBase(ULONG *aIOBase);
+    HRESULT setIOBase(ULONG aIOBase);
+    HRESULT getPath(com::Utf8Str &aPath);
+    HRESULT setPath(const com::Utf8Str &aPath);
+
+    HRESULT i_checkSetPath(const Utf8Str &str);
 
     struct Data;
Index: /trunk/src/VBox/Main/include/USBControllerImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/USBControllerImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/USBControllerImpl.h	(revision 49871)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2005-2012 Oracle Corporation
+ * Copyright (C) 2005-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -21,5 +21,5 @@
 #define ____H_USBCONTROLLERIMPL
 
-#include "VirtualBoxBase.h"
+#include "USBControllerWrap.h"
 
 class HostUSBDevice;
@@ -32,17 +32,7 @@
 
 class ATL_NO_VTABLE USBController :
-    public VirtualBoxBase,
-    VBOX_SCRIPTABLE_IMPL(IUSBController)
+    public USBControllerWrap
 {
 public:
-    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(USBController, IUSBController)
-
-    DECLARE_NOT_AGGREGATABLE(USBController)
-
-    DECLARE_PROTECT_FINAL_CONSTRUCT()
-
-    BEGIN_COM_MAP(USBController)
-        VBOX_DEFAULT_INTERFACE_ENTRIES(IUSBController)
-    END_COM_MAP()
 
     DECLARE_EMPTY_CTOR_DTOR(USBController)
@@ -57,22 +47,20 @@
     void uninit();
 
-    // IUSBController properties
-    STDMETHOD(COMGETTER(Name))(BSTR *aName);
-    STDMETHOD(COMGETTER(Type))(USBControllerType_T *enmType);
-    STDMETHOD(COMGETTER(USBStandard))(USHORT *aUSBStandard);
+    // public methods only for internal purposes
+    void i_rollback();
+    void i_commit();
+    void i_copyFrom(USBController *aThat);
+    void i_unshare();
 
-    // public methods only for internal purposes
-
-    void rollback();
-    void commit();
-    void copyFrom(USBController *aThat);
-    void unshare();
-
-    const Utf8Str &getName() const;
-    USBControllerType_T getControllerType() const;
-
-    ComObjPtr<USBController> getPeer();
+    ComObjPtr<USBController> i_getPeer();
+    const Utf8Str &i_getName() const;
+    const USBControllerType_T &i_getControllerType() const;
 
 private:
+
+    // wrapped IUSBController properties
+    HRESULT getName(com::Utf8Str &aName);
+    HRESULT getType(USBControllerType_T *aType);
+    HRESULT getUSBStandard(USHORT *aUSBStandard);
 
     void printList();
Index: /trunk/src/VBox/Main/include/VFSExplorerImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/VFSExplorerImpl.h	(revision 49870)
+++ /trunk/src/VBox/Main/include/VFSExplorerImpl.h	(revision 49871)
@@ -73,29 +73,5 @@
     //
     struct TaskVFSExplorer;  /* Worker thread helper */
-    struct Data
-    {
-        struct DirEntry
-        {
-            DirEntry(Utf8Str strName, VFSFileType_T fileType, uint64_t cbSize, uint32_t fMode)
-               : name(strName)
-               , type(fileType)
-               , size(cbSize)
-               , mode(fMode) {}
-
-             Utf8Str name;
-             VFSFileType_T type;
-             uint64_t size;
-             uint32_t mode;
-        };
-
-        VFSType_T storageType;
-        Utf8Str strUsername;
-        Utf8Str strPassword;
-        Utf8Str strHostname;
-        Utf8Str strPath;
-        Utf8Str strBucket;
-        std::list<DirEntry> entryList;
-    };
-
+    struct Data;
     Data *m;
 
Index: /trunk/src/VBox/Main/src-server/AudioAdapterImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/AudioAdapterImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/AudioAdapterImpl.cpp	(revision 49871)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -26,4 +26,12 @@
 #include "AutoCaller.h"
 #include "Logging.h"
+
+struct AudioAdapter::Data
+{
+    Data();
+        BOOL mEnabled;
+        AudioDriverType_T mAudioDriver;
+        AudioControllerType_T mAudioController;
+};
 
 // constructor / destructor
@@ -180,11 +188,6 @@
 /////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP AudioAdapter::COMGETTER(Enabled)(BOOL *aEnabled)
-{
-    CheckComArgOutPointerValid(aEnabled);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT AudioAdapter::getEnabled(BOOL *aEnabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -194,9 +197,6 @@
 }
 
-STDMETHODIMP AudioAdapter::COMSETTER(Enabled)(BOOL aEnabled)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT AudioAdapter::setEnabled(BOOL aEnabled)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(mParent);
@@ -218,11 +218,6 @@
 }
 
-STDMETHODIMP AudioAdapter::COMGETTER(AudioDriver)(AudioDriverType_T *aAudioDriver)
-{
-    CheckComArgOutPointerValid(aAudioDriver);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT AudioAdapter::getAudioDriver(AudioDriverType_T *aAudioDriver)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -232,8 +227,6 @@
 }
 
-STDMETHODIMP AudioAdapter::COMSETTER(AudioDriver)(AudioDriverType_T aAudioDriver)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+HRESULT AudioAdapter::setAudioDriver(AudioDriverType_T aAudioDriver)
+{
 
     /* the machine needs to be mutable */
@@ -251,5 +244,4 @@
             mData.backup();
             mData->mAudioDriver = aAudioDriver;
-
             alock.release();
             AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS);  // mParent is const, needs no locking
@@ -266,11 +258,6 @@
 }
 
-STDMETHODIMP AudioAdapter::COMGETTER(AudioController)(AudioControllerType_T *aAudioController)
-{
-    CheckComArgOutPointerValid(aAudioController);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT AudioAdapter::getAudioController(AudioControllerType_T *aAudioController)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -280,9 +267,6 @@
 }
 
-STDMETHODIMP AudioAdapter::COMSETTER(AudioController)(AudioControllerType_T aAudioController)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT AudioAdapter::setAudioController(AudioControllerType_T aAudioController)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(mParent);
@@ -306,5 +290,4 @@
                 mData.backup();
                 mData->mAudioController = aAudioController;
-
                 alock.release();
                 AutoWriteLock mlock(mParent COMMA_LOCKVAL_SRC_POS);  // mParent is const, needs no locking
@@ -346,5 +329,5 @@
  *  @note Locks this object for writing.
  */
-HRESULT AudioAdapter::loadSettings(const settings::AudioAdapter &data)
+HRESULT AudioAdapter::i_loadSettings(const settings::AudioAdapter &data)
 {
     AutoCaller autoCaller(this);
@@ -378,5 +361,5 @@
  *  @note Locks this object for reading.
  */
-HRESULT AudioAdapter::saveSettings(settings::AudioAdapter &data)
+HRESULT AudioAdapter::i_saveSettings(settings::AudioAdapter &data)
 {
     AutoCaller autoCaller(this);
@@ -394,5 +377,5 @@
  *  @note Locks this object for writing.
  */
-void AudioAdapter::rollback()
+void AudioAdapter::i_rollback()
 {
     /* sanity */
@@ -409,5 +392,5 @@
  *  for writing) if there is one.
  */
-void AudioAdapter::commit()
+void AudioAdapter::i_commit()
 {
     /* sanity */
@@ -438,5 +421,5 @@
  *  represented by @a aThat (locked for reading).
  */
-void AudioAdapter::copyFrom(AudioAdapter *aThat)
+void AudioAdapter::i_copyFrom(AudioAdapter *aThat)
 {
     AssertReturnVoid (aThat != NULL);
Index: /trunk/src/VBox/Main/src-server/BIOSSettingsImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/BIOSSettingsImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/BIOSSettingsImpl.cpp	(revision 49871)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -49,4 +49,6 @@
 /////////////////////////////////////////////////////////////////////////////
 
+DEFINE_EMPTY_CTOR_DTOR(BIOSSettings)
+
 HRESULT BIOSSettings::FinalConstruct()
 {
@@ -182,12 +184,7 @@
 /////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP BIOSSettings::COMGETTER(LogoFadeIn)(BOOL *enabled)
-{
-    if (!enabled)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::getLogoFadeIn(BOOL *enabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -197,9 +194,6 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(LogoFadeIn)(BOOL enable)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT BIOSSettings::setLogoFadeIn(BOOL enable)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -218,12 +212,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(LogoFadeOut)(BOOL *enabled)
-{
-    if (!enabled)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::getLogoFadeOut(BOOL *enabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -233,9 +222,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(LogoFadeOut)(BOOL enable)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setLogoFadeOut(BOOL enable)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -254,12 +241,10 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(LogoDisplayTime)(ULONG *displayTime)
+
+HRESULT BIOSSettings::getLogoDisplayTime(ULONG *displayTime)
 {
     if (!displayTime)
         return E_POINTER;
 
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -269,9 +254,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(LogoDisplayTime)(ULONG displayTime)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setLogoDisplayTime(ULONG displayTime)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -290,27 +273,16 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(LogoImagePath)(BSTR *imagePath)
-{
-    if (!imagePath)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-
-    m->bd->strLogoImagePath.cloneTo(imagePath);
-    return S_OK;
-}
-
-STDMETHODIMP BIOSSettings::COMSETTER(LogoImagePath)(IN_BSTR imagePath)
-{
-    /* NULL strings are not allowed */
-    if (!imagePath)
-        return E_INVALIDARG;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::getLogoImagePath(com::Utf8Str &imagePath)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    imagePath = m->bd->strLogoImagePath;
+    return S_OK;
+}
+
+
+HRESULT BIOSSettings::setLogoImagePath(const com::Utf8Str &imagePath)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -329,12 +301,6 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(BootMenuMode)(BIOSBootMenuMode_T *bootMenuMode)
-{
-    if (!bootMenuMode)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT BIOSSettings::getBootMenuMode(BIOSBootMenuMode_T *bootMenuMode)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -343,9 +309,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(BootMenuMode)(BIOSBootMenuMode_T bootMenuMode)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setBootMenuMode(BIOSBootMenuMode_T bootMenuMode)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -364,12 +328,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(ACPIEnabled)(BOOL *enabled)
-{
-    if (!enabled)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::getACPIEnabled(BOOL *enabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -379,9 +338,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(ACPIEnabled)(BOOL enable)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setACPIEnabled(BOOL enable)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -400,48 +357,36 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(IOAPICEnabled)(BOOL *enabled)
-{
-    if (!enabled)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-
-    *enabled = m->bd->fIOAPICEnabled;
-
-    return S_OK;
-}
-
-STDMETHODIMP BIOSSettings::COMSETTER(IOAPICEnabled)(BOOL enable)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    /* the machine needs to be mutable */
-    AutoMutableStateDependency adep(m->pMachine);
-    if (FAILED(adep.rc())) return adep.rc();
-
-    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
-
-    m->bd.backup();
-    m->bd->fIOAPICEnabled = !!enable;
-
-    alock.release();
-    AutoWriteLock mlock(m->pMachine COMMA_LOCKVAL_SRC_POS);  // mParent is const, needs no locking
-    m->pMachine->setModified(Machine::IsModified_BIOS);
-
-    return S_OK;
-}
-
-STDMETHODIMP BIOSSettings::COMGETTER(PXEDebugEnabled)(BOOL *enabled)
-{
-    if (!enabled)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::getIOAPICEnabled(BOOL *aIOAPICEnabled)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    *aIOAPICEnabled = m->bd->fIOAPICEnabled;
+
+    return S_OK;
+}
+
+
+HRESULT BIOSSettings::setIOAPICEnabled(BOOL aIOAPICEnabled)
+{
+    /* the machine needs to be mutable */
+    AutoMutableStateDependency adep(m->pMachine);
+    if (FAILED(adep.rc())) return adep.rc();
+
+    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    m->bd.backup();
+
+    m->bd->fIOAPICEnabled = !!aIOAPICEnabled;
+    alock.release();
+    AutoWriteLock mlock(m->pMachine COMMA_LOCKVAL_SRC_POS);  // mParent is const, needs no locking
+    m->pMachine->setModified(Machine::IsModified_BIOS);
+
+    return S_OK;
+}
+
+
+HRESULT BIOSSettings::getPXEDebugEnabled(BOOL *enabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -451,9 +396,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(PXEDebugEnabled)(BOOL enable)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setPXEDebugEnabled(BOOL enable)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -472,12 +415,6 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(TimeOffset)(LONG64 *offset)
-{
-    if (!offset)
-        return E_POINTER;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT BIOSSettings::getTimeOffset(LONG64 *offset)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -487,9 +424,7 @@
 }
 
-STDMETHODIMP BIOSSettings::COMSETTER(TimeOffset)(LONG64 offset)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT BIOSSettings::setTimeOffset(LONG64 offset)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -508,18 +443,11 @@
 }
 
-STDMETHODIMP BIOSSettings::COMGETTER(NonVolatileStorageFile)(BSTR *pbstrPath)
-{
-    CheckComArgOutPointerValid(pbstrPath);
-
-    AutoCaller autoCaller(this);
-    HRESULT hrc = autoCaller.rc();
-    if (SUCCEEDED(hrc))
-    {
-        AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-        Bstr bstrEmpty("");
-        hrc = bstrEmpty.cloneToEx(pbstrPath);
-    }
-
-    return hrc;
+HRESULT BIOSSettings::getNonVolatileStorageFile(com::Utf8Str &aNonVolatileStorageFile)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    aNonVolatileStorageFile = "";
+
+    return S_OK;
 }
 
@@ -540,5 +468,5 @@
  *  @note Locks this object for writing.
  */
-HRESULT BIOSSettings::loadSettings(const settings::BIOSSettings &data)
+HRESULT BIOSSettings::i_loadSettings(const settings::BIOSSettings &data)
 {
     AutoCaller autoCaller(this);
@@ -560,5 +488,5 @@
  *  @note Locks this object for reading.
  */
-HRESULT BIOSSettings::saveSettings(settings::BIOSSettings &data)
+HRESULT BIOSSettings::i_saveSettings(settings::BIOSSettings &data)
 {
     AutoCaller autoCaller(this);
@@ -572,5 +500,5 @@
 }
 
-void BIOSSettings::rollback()
+void BIOSSettings::i_rollback()
 {
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
@@ -578,5 +506,5 @@
 }
 
-void BIOSSettings::commit()
+void BIOSSettings::i_commit()
 {
     /* sanity */
@@ -604,5 +532,5 @@
 }
 
-void BIOSSettings::copyFrom (BIOSSettings *aThat)
+void BIOSSettings::i_copyFrom (BIOSSettings *aThat)
 {
     AssertReturnVoid (aThat != NULL);
@@ -625,5 +553,5 @@
 }
 
-void BIOSSettings::applyDefaults (GuestOSType *aOsType)
+void BIOSSettings::i_applyDefaults (GuestOSType *aOsType)
 {
     AssertReturnVoid (aOsType != NULL);
Index: /trunk/src/VBox/Main/src-server/HostImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 49871)
@@ -2999,5 +2999,5 @@
         {
 # ifdef VBOX_WITH_RESOURCE_USAGE_API
-            (*itOld)->unregisterMetrics(aCollector, this);
+            (*itOld)->i_unregisterMetrics(aCollector, this);
 # endif
         }
@@ -3008,5 +3008,5 @@
      */
     for (itNew = list.begin(); itNew != list.end(); ++itNew)
-        (*itNew)->setVirtualBox(m->pParent);
+        (*itNew)->i_setVirtualBox(m->pParent);
     /* At this point listCopy will contain newly discovered interfaces only. */
     for (itNew = listCopy.begin(); itNew != listCopy.end(); ++itNew)
@@ -3023,5 +3023,5 @@
         {
 # ifdef VBOX_WITH_RESOURCE_USAGE_API
-            (*itNew)->registerMetrics(aCollector, this);
+            (*itNew)->i_registerMetrics(aCollector, this);
 # endif
         }
Index: /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp	(revision 49871)
@@ -17,5 +17,4 @@
  * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
  */
-
 #include "HostNetworkInterfaceImpl.h"
 #include "AutoCaller.h"
@@ -33,4 +32,6 @@
 #endif /* RT_OS_FREEBSD */
 
+#include "VirtualBoxImpl.h"
+
 // constructor / destructor
 /////////////////////////////////////////////////////////////////////////////
@@ -79,5 +80,5 @@
 
     unconst(mInterfaceName) = aInterfaceName;
-    unconst(mNetworkName) = composeNetworkName(aShortName);
+    unconst(mNetworkName) = i_composeNetworkName(aShortName);
     unconst(mShortName) = aShortName;
     unconst(mGuid) = aGuid;
@@ -92,5 +93,5 @@
 #ifdef VBOX_WITH_RESOURCE_USAGE_API
 
-void HostNetworkInterface::registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr)
+void HostNetworkInterface::i_registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr)
 {
     LogFlowThisFunc(("mShortName={%ls}, mInterfaceName={%ls}, mGuid={%s}, mSpeedMbits=%u\n",
@@ -137,5 +138,5 @@
 }
 
-void HostNetworkInterface::unregisterMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr)
+void HostNetworkInterface::i_unregisterMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr)
 {
     LogFlowThisFunc(("mShortName={%ls}, mInterfaceName={%ls}, mGuid={%s}\n",
@@ -175,5 +176,5 @@
 }
 
-Bstr HostNetworkInterface::composeNetworkName(const Utf8Str aShortName)
+Bstr HostNetworkInterface::i_composeNetworkName(const Utf8Str aShortName)
 {
     return Utf8Str("HostInterfaceNetworking-").append(aShortName);
@@ -203,10 +204,10 @@
     if (pIf->szShortName[0])
     {
-        unconst(mNetworkName) = composeNetworkName(pIf->szShortName);
+        unconst(mNetworkName) = i_composeNetworkName(pIf->szShortName);
         unconst(mShortName)   = pIf->szShortName;
     }
     else
     {
-        unconst(mNetworkName) = composeNetworkName(aInterfaceName);
+        unconst(mNetworkName) = i_composeNetworkName(aInterfaceName);
         unconst(mShortName)   = aInterfaceName;
     }
@@ -235,22 +236,16 @@
 #endif
 
-// IHostNetworkInterface properties
+// wrapped IHostNetworkInterface properties
 /////////////////////////////////////////////////////////////////////////////
-
 /**
  * Returns the name of the host network interface.
  *
  * @returns COM status code
- * @param   aInterfaceName address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(Name)(BSTR *aInterfaceName)
-{
-    CheckComArgOutPointerValid(aInterfaceName);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    mInterfaceName.cloneTo(aInterfaceName);
-
+ * @param   aInterfaceName - Interface Name
+ */
+
+HRESULT HostNetworkInterface::getName(com::Utf8Str &aInterfaceName)
+{
+    aInterfaceName = mInterfaceName;
     return S_OK;
 }
@@ -259,15 +254,11 @@
  * Returns the short name of the host network interface.
  *
- * @returns COM status code
- * @param   aShortName address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(ShortName)(BSTR *aShortName)
-{
-    CheckComArgOutPointerValid(aShortName);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    mShortName.cloneTo(aShortName);
+ * @returns  COM status code
+ * @param   aShortName Short Name
+ */
+
+HRESULT HostNetworkInterface::getShortName(com::Utf8Str &aShortName)
+{
+    aShortName = mShortName;
 
     return S_OK;
@@ -278,25 +269,15 @@
  *
  * @returns COM status code
- * @param   aGuid address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(Id)(BSTR *aGuid)
-{
-    CheckComArgOutPointerValid(aGuid);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    mGuid.toUtf16().cloneTo(aGuid);
-
-    return S_OK;
-}
-
-STDMETHODIMP HostNetworkInterface::COMGETTER(DHCPEnabled)(BOOL *aDHCPEnabled)
-{
-    CheckComArgOutPointerValid(aDHCPEnabled);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+ * @param   aGuid GUI Id
+ */
+HRESULT HostNetworkInterface::getId(com::Guid &aGuiId)
+{
+    aGuiId = mGuid;
+
+    return S_OK;
+}
+
+HRESULT HostNetworkInterface::getDHCPEnabled(BOOL *aDHCPEnabled)
+{
     *aDHCPEnabled = m.dhcpEnabled;
 
@@ -309,13 +290,8 @@
  *
  * @returns COM status code
- * @param   aIPAddress address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(IPAddress)(BSTR *aIPAddress)
-{
-    CheckComArgOutPointerValid(aIPAddress);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+ * @param   aIPAddress  Address name
+ */
+HRESULT HostNetworkInterface::getIPAddress(com::Utf8Str &aIPAddress)
+{
     in_addr tmp;
 #if defined(RT_OS_WINDOWS)
@@ -327,5 +303,5 @@
     if (addr)
     {
-        Bstr(addr).detachTo(aIPAddress);
+        aIPAddress = addr;
         return S_OK;
     }
@@ -338,12 +314,8 @@
  *
  * @returns COM status code
- * @param   aNetworkMask address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(NetworkMask)(BSTR *aNetworkMask)
-{
-    CheckComArgOutPointerValid(aNetworkMask);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+ * @param   aNetworkMask name.
+ */
+HRESULT HostNetworkInterface::getNetworkMask(com::Utf8Str &aNetworkMask)
+{
 
     in_addr tmp;
@@ -356,5 +328,5 @@
     if (addr)
     {
-        Bstr(addr).detachTo(aNetworkMask);
+        aNetworkMask = Utf8Str(addr);
         return S_OK;
     }
@@ -363,7 +335,6 @@
 }
 
-STDMETHODIMP HostNetworkInterface::COMGETTER(IPV6Supported)(BOOL *aIPV6Supported)
-{
-    CheckComArgOutPointerValid(aIPV6Supported);
+HRESULT HostNetworkInterface::getIPV6Supported(BOOL *aIPV6Supported)
+{
 #if defined(RT_OS_WINDOWS)
     *aIPV6Supported = FALSE;
@@ -379,15 +350,9 @@
  *
  * @returns COM status code
- * @param   aIPV6Address address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(IPV6Address)(BSTR *aIPV6Address)
-{
-    CheckComArgOutPointerValid(aIPV6Address);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    m.IPV6Address.cloneTo(aIPV6Address);
-
+ * @param   aIPV6Address
+ */
+HRESULT HostNetworkInterface::getIPV6Address(com::Utf8Str &aIPV6Address)
+{
+    aIPV6Address = m.IPV6Address;
     return S_OK;
 }
@@ -399,11 +364,6 @@
  * @param   aIPV6Mask address of result pointer
  */
-STDMETHODIMP HostNetworkInterface::COMGETTER(IPV6NetworkMaskPrefixLength)(ULONG *aIPV6NetworkMaskPrefixLength)
-{
-    CheckComArgOutPointerValid(aIPV6NetworkMaskPrefixLength);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT HostNetworkInterface::getIPV6NetworkMaskPrefixLength(ULONG *aIPV6NetworkMaskPrefixLength)
+{
     *aIPV6NetworkMaskPrefixLength = m.IPV6NetworkMaskPrefixLength;
 
@@ -415,15 +375,9 @@
  *
  * @returns COM status code
- * @param   aHardwareAddress address of result pointer
- */
-STDMETHODIMP HostNetworkInterface::COMGETTER(HardwareAddress)(BSTR *aHardwareAddress)
-{
-    CheckComArgOutPointerValid(aHardwareAddress);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    m.hardwareAddress.cloneTo(aHardwareAddress);
-
+ * @param   aHardwareAddress hardware address
+ */
+HRESULT HostNetworkInterface::getHardwareAddress(com::Utf8Str &aHardwareAddress)
+{
+    aHardwareAddress = m.hardwareAddress;
     return S_OK;
 }
@@ -435,11 +389,6 @@
  * @param   aType address of result pointer
  */
-STDMETHODIMP HostNetworkInterface::COMGETTER(MediumType)(HostNetworkInterfaceMediumType_T *aType)
-{
-    CheckComArgOutPointerValid(aType);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT HostNetworkInterface::getMediumType(HostNetworkInterfaceMediumType_T *aType)
+{
     *aType = m.mediumType;
 
@@ -453,11 +402,6 @@
  * @param   aStatus address of result pointer
  */
-STDMETHODIMP HostNetworkInterface::COMGETTER(Status)(HostNetworkInterfaceStatus_T *aStatus)
-{
-    CheckComArgOutPointerValid(aStatus);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT HostNetworkInterface::getStatus(HostNetworkInterfaceStatus_T *aStatus)
+{
     *aStatus = m.status;
 
@@ -471,11 +415,6 @@
  * @param   aType address of result pointer
  */
-STDMETHODIMP HostNetworkInterface::COMGETTER(InterfaceType)(HostNetworkInterfaceType_T *aType)
-{
-    CheckComArgOutPointerValid(aType);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT HostNetworkInterface::getInterfaceType(HostNetworkInterfaceType_T *aType)
+{
     *aType = mIfType;
 
@@ -484,25 +423,18 @@
 }
 
-STDMETHODIMP HostNetworkInterface::COMGETTER(NetworkName)(BSTR *aNetworkName)
-{
-    CheckComArgOutPointerValid(aNetworkName);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    mNetworkName.cloneTo(aNetworkName);
-
-    return S_OK;
-}
-
-STDMETHODIMP HostNetworkInterface::EnableStaticIPConfig(IN_BSTR aIPAddress, IN_BSTR aNetMask)
+HRESULT HostNetworkInterface::getNetworkName(com::Utf8Str &aNetworkName)
+{
+    aNetworkName = mNetworkName;
+
+    return S_OK;
+}
+
+HRESULT HostNetworkInterface::enableStaticIPConfig(const com::Utf8Str &aIPAddress,
+                                                   const com::Utf8Str &aNetworkMask)
 {
 #ifndef VBOX_WITH_HOSTNETIF_API
     return E_NOTIMPL;
 #else
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    if (Bstr(aIPAddress).isEmpty())
+    if (aIPAddress.isEmpty())
     {
         if (m.IPAddress)
@@ -524,11 +456,11 @@
 
     ULONG ip, mask;
-    ip = inet_addr(Utf8Str(aIPAddress).c_str());
+    ip = inet_addr(aIPAddress.c_str());
     if (ip != INADDR_NONE)
     {
-        if (Bstr(aNetMask).isEmpty())
+        if (aNetworkMask.isEmpty())
             mask = 0xFFFFFF;
         else
-            mask = inet_addr(Utf8Str(aNetMask).c_str());
+            mask = inet_addr(aNetworkMask.c_str());
         if (mask != INADDR_NONE)
         {
@@ -541,8 +473,8 @@
                 m.realNetworkMask = mask;
                 if (FAILED(mVBox->SetExtraData(BstrFmt("HostOnly/%ls/IPAddress", mInterfaceName.raw()).raw(),
-                                                       Bstr(aIPAddress).raw())))
+                                               Bstr(aIPAddress).raw())))
                     return E_FAIL;
                 if (FAILED(mVBox->SetExtraData(BstrFmt("HostOnly/%ls/IPNetMask", mInterfaceName.raw()).raw(),
-                                               Bstr(aNetMask).raw())))
+                                               Bstr(aNetworkMask).raw())))
                     return E_FAIL;
                 return S_OK;
@@ -560,23 +492,21 @@
 }
 
-STDMETHODIMP HostNetworkInterface::EnableStaticIPConfigV6(IN_BSTR aIPV6Address, ULONG aIPV6MaskPrefixLength)
+HRESULT HostNetworkInterface::enableStaticIPConfigV6(const com::Utf8Str &aIPV6Address,
+                                                     ULONG aIPV6NetworkMaskPrefixLength)
 {
 #ifndef VBOX_WITH_HOSTNETIF_API
     return E_NOTIMPL;
 #else
-    if (!aIPV6Address)
+    if (aIPV6NetworkMaskPrefixLength > 128)
         return E_INVALIDARG;
-    if (aIPV6MaskPrefixLength > 128)
-        return E_INVALIDARG;
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
 
     int rc = S_OK;
-    if (m.realIPV6Address != aIPV6Address || m.realIPV6PrefixLength != aIPV6MaskPrefixLength)
-    {
-        if (aIPV6MaskPrefixLength == 0)
-            aIPV6MaskPrefixLength = 64;
-        rc = NetIfEnableStaticIpConfigV6(mVBox, this, m.IPV6Address.raw(), aIPV6Address, aIPV6MaskPrefixLength);
+    if (m.realIPV6Address != aIPV6Address || m.realIPV6PrefixLength != aIPV6NetworkMaskPrefixLength)
+    {
+        BSTR bstr;
+        aIPV6Address.cloneTo(&bstr);
+        if (aIPV6NetworkMaskPrefixLength == 0)
+            aIPV6NetworkMaskPrefixLength = 64;
+        rc = NetIfEnableStaticIpConfigV6(mVBox, this, m.IPV6Address.raw(), bstr, aIPV6NetworkMaskPrefixLength);
         if (RT_FAILURE(rc))
         {
@@ -587,10 +517,10 @@
         {
             m.realIPV6Address = aIPV6Address;
-            m.realIPV6PrefixLength = aIPV6MaskPrefixLength;
+            m.realIPV6PrefixLength = aIPV6NetworkMaskPrefixLength;
             if (FAILED(mVBox->SetExtraData(BstrFmt("HostOnly/%ls/IPV6Address", mInterfaceName.raw()).raw(),
                                            Bstr(aIPV6Address).raw())))
                 return E_FAIL;
             if (FAILED(mVBox->SetExtraData(BstrFmt("HostOnly/%ls/IPV6NetMask", mInterfaceName.raw()).raw(),
-                                           BstrFmt("%u", aIPV6MaskPrefixLength).raw())))
+                                           BstrFmt("%u", aIPV6NetworkMaskPrefixLength).raw())))
                 return E_FAIL;
         }
@@ -601,12 +531,9 @@
 }
 
-STDMETHODIMP HostNetworkInterface::EnableDynamicIPConfig()
+HRESULT HostNetworkInterface::HostNetworkInterface::enableDynamicIPConfig()
 {
 #ifndef VBOX_WITH_HOSTNETIF_API
     return E_NOTIMPL;
 #else
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
     int rc = NetIfEnableDynamicIpConfig(mVBox, this);
     if (RT_FAILURE(rc))
@@ -619,26 +546,24 @@
 }
 
-STDMETHODIMP HostNetworkInterface::DHCPRediscover()
+HRESULT HostNetworkInterface::dHCPRediscover()
 {
 #ifndef VBOX_WITH_HOSTNETIF_API
     return E_NOTIMPL;
 #else
+    int rc = NetIfDhcpRediscover(mVBox, this);
+    if (RT_FAILURE(rc))
+    {
+        LogRel(("Failed to DhcpRediscover with rc=%Rrc\n", rc));
+        return rc == VERR_NOT_IMPLEMENTED ? E_NOTIMPL : E_FAIL;
+    }
+    return S_OK;
+#endif
+}
+
+HRESULT HostNetworkInterface::i_setVirtualBox(VirtualBox *pVBox)
+{
     AutoCaller autoCaller(this);
     if (FAILED(autoCaller.rc())) return autoCaller.rc();
 
-    int rc = NetIfDhcpRediscover(mVBox, this);
-    if (RT_FAILURE(rc))
-    {
-        LogRel(("Failed to DhcpRediscover with rc=%Rrc\n", rc));
-        return rc == VERR_NOT_IMPLEMENTED ? E_NOTIMPL : E_FAIL;
-    }
-    return S_OK;
-#endif
-}
-
-HRESULT HostNetworkInterface::setVirtualBox(VirtualBox *pVBox)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     AssertReturn(mVBox != pVBox, S_OK);
 
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 49871)
@@ -340,5 +340,5 @@
 
             /* Apply BIOS defaults */
-            mBIOSSettings->applyDefaults(aOsType);
+            mBIOSSettings->i_applyDefaults(aOsType);
 
             /* Apply network adapters defaults */
@@ -4080,5 +4080,5 @@
                                       aDevice)))
     {
-        Medium *pMedium = pAttachTemp->getMedium();
+        Medium *pMedium = pAttachTemp->i_getMedium();
         if (pMedium)
         {
@@ -4163,5 +4163,5 @@
 
                 /* see if it's the same bus/channel/device */
-                if (pAttachTemp->matches(aControllerName, aControllerPort, aDevice))
+                if (pAttachTemp->i_matches(aControllerName, aControllerPort, aDevice))
                 {
                     /* the simplest case: restore the whole attachment
@@ -4244,6 +4244,6 @@
                     uint32_t level = 0;
                     MediumAttachment *pAttach = *it;
-                    ComObjPtr<Medium> pMedium = pAttach->getMedium();
-                    Assert(!pMedium.isNull() || pAttach->getType() != DeviceType_HardDisk);
+                    ComObjPtr<Medium> pMedium = pAttach->i_getMedium();
+                    Assert(!pMedium.isNull() || pAttach->i_getType() != DeviceType_HardDisk);
                     if (pMedium.isNull())
                         continue;
@@ -4262,5 +4262,5 @@
                          * descendant of medium will be used
                          */
-                        if (pAttach->matches(aControllerName, aControllerPort, aDevice))
+                        if (pAttach->i_matches(aControllerName, aControllerPort, aDevice))
                         {
                             /* the simplest case: restore the whole attachment
@@ -4322,5 +4322,5 @@
                 {
                     /* use the previously attached hard disk */
-                    medium = (*foundIt)->getMedium();
+                    medium = (*foundIt)->i_getMedium();
                     mediumCaller.attach(medium);
                     if (FAILED(mediumCaller.rc())) return mediumCaller.rc();
@@ -4358,6 +4358,6 @@
                 {
                     MediumAttachment *pAttach = *it;
-                    ComObjPtr<Medium> pMedium = pAttach->getMedium();
-                    Assert(!pMedium.isNull() || pAttach->getType() != DeviceType_HardDisk);
+                    ComObjPtr<Medium> pMedium = pAttach->i_getMedium();
+                    Assert(!pMedium.isNull() || pAttach->i_getType() != DeviceType_HardDisk);
                     if (pMedium.isNull())
                         continue;
@@ -4371,7 +4371,7 @@
                          * descendant of medium will be used
                          */
-                        if (    pAttach->getDevice() == aDevice
-                             && pAttach->getPort() == aControllerPort
-                             && pAttach->getControllerName() == aControllerName
+                        if (    pAttach->i_getDevice() == aDevice
+                             && pAttach->i_getPort() == aControllerPort
+                             && pAttach->i_getControllerName() == aControllerName
                            )
                         {
@@ -4391,5 +4391,5 @@
                 if (pAttachFound)
                 {
-                    base = pAttachFound->getMedium();
+                    base = pAttachFound->i_getMedium();
                     break;
                 }
@@ -4641,5 +4641,5 @@
                         aDevice, aControllerPort, aControllerName);
 
-    if (fHotplug && !pAttach->getHotPluggable())
+    if (fHotplug && !pAttach->i_getHotPluggable())
         return setError(VBOX_E_NOT_SUPPORTED,
                         tr("The device slot %d on port %d of controller '%ls' does not support hotplugging"),
@@ -4706,9 +4706,9 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    if (pAttach->getType() != DeviceType_DVD)
+    if (pAttach->i_getType() != DeviceType_DVD)
         return setError(E_INVALIDARG,
                         tr("Setting passthrough rejected as the device attached to device slot %d on port %d of controller '%ls' is not a DVD"),
                         aDevice, aControllerPort, aControllerName);
-    pAttach->updatePassthrough(!!aPassthrough);
+    pAttach->i_updatePassthrough(!!aPassthrough);
 
     return S_OK;
@@ -4746,9 +4746,9 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    if (pAttach->getType() != DeviceType_DVD)
+    if (pAttach->i_getType() != DeviceType_DVD)
         return setError(E_INVALIDARG,
                         tr("Setting temporary eject flag rejected as the device attached to device slot %d on port %d of controller '%ls' is not a DVD"),
                         aDevice, aControllerPort, aControllerName);
-    pAttach->updateTempEject(!!aTemporaryEject);
+    pAttach->i_updateTempEject(!!aTemporaryEject);
 
     return S_OK;
@@ -4793,9 +4793,9 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    if (pAttach->getType() != DeviceType_HardDisk)
+    if (pAttach->i_getType() != DeviceType_HardDisk)
         return setError(E_INVALIDARG,
                         tr("Setting the non-rotational medium flag rejected as the device attached to device slot %d on port %d of controller '%ls' is not a hard disk"),
                         aDevice, aControllerPort, aControllerName);
-    pAttach->updateNonRotational(!!aNonRotational);
+    pAttach->i_updateNonRotational(!!aNonRotational);
 
     return S_OK;
@@ -4840,9 +4840,9 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    if (pAttach->getType() != DeviceType_HardDisk)
+    if (pAttach->i_getType() != DeviceType_HardDisk)
         return setError(E_INVALIDARG,
                         tr("Setting the discard medium flag rejected as the device attached to device slot %d on port %d of controller '%ls' is not a hard disk"),
                         aDevice, aControllerPort, aControllerName);
-    pAttach->updateDiscard(!!aDiscard);
+    pAttach->i_updateDiscard(!!aDiscard);
 
     return S_OK;
@@ -4903,9 +4903,9 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    if (pAttach->getType() == DeviceType_Floppy)
+    if (pAttach->i_getType() == DeviceType_Floppy)
         return setError(E_INVALIDARG,
                         tr("Setting the hot-pluggable device flag rejected as the device attached to device slot %d on port %d of controller '%ls' is a floppy drive"),
                         aDevice, aControllerPort, aControllerName);
-    pAttach->updateHotPluggable(!!aHotPluggable);
+    pAttach->i_updateHotPluggable(!!aHotPluggable);
 
     return S_OK;
@@ -4966,5 +4966,5 @@
     AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
 
-    const Utf8Str strBandwidthGroupOld = pAttach->getBandwidthGroup();
+    const Utf8Str strBandwidthGroupOld = pAttach->i_getBandwidthGroup();
     if (strBandwidthGroupOld.isNotEmpty())
     {
@@ -4975,5 +4975,5 @@
 
         pBandwidthGroupOld->i_release();
-        pAttach->updateBandwidthGroup(Utf8Str::Empty);
+        pAttach->i_updateBandwidthGroup(Utf8Str::Empty);
     }
 
@@ -4981,5 +4981,5 @@
     {
         group->i_reference();
-        pAttach->updateBandwidthGroup(group->i_getName());
+        pAttach->i_updateBandwidthGroup(group->i_getName());
     }
 
@@ -5051,5 +5051,5 @@
      * backup is not necessarily the same thing. */
     ComObjPtr<Medium> oldmedium;
-    oldmedium = pAttach->getMedium();
+    oldmedium = pAttach->i_getMedium();
 
     ComObjPtr<Medium> pMedium = static_cast<Medium*>(aMedium);
@@ -5063,5 +5063,5 @@
     if (pMedium)
     {
-        DeviceType_T mediumType = pAttach->getType();
+        DeviceType_T mediumType = pAttach->i_getType();
         switch (mediumType)
         {
@@ -5103,5 +5103,5 @@
 
         AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
-        pAttach->updateMedium(pMedium);
+        pAttach->i_updateMedium(pMedium);
     }
 
@@ -5129,5 +5129,5 @@
         if (!oldmedium.isNull())
             oldmedium->i_addBackReference(mData->mUuid);
-        pAttach->updateMedium(oldmedium);
+        pAttach->i_updateMedium(oldmedium);
     }
 
@@ -5167,5 +5167,5 @@
                         aDevice, aControllerPort, aControllerName);
 
-    pAttach->getMedium().queryInterfaceTo(aMedium);
+    pAttach->i_getMedium().queryInterfaceTo(aMedium);
 
     return S_OK;
@@ -6605,5 +6605,5 @@
             AutoReadLock local_alock(pAttachTemp COMMA_LOCKVAL_SRC_POS);
 
-            if (pAttachTemp->getControllerName() == aName)
+            if (pAttachTemp->i_getControllerName() == aName)
             {
                 rc = detachDevice(pAttachTemp, alock, NULL);
@@ -6743,5 +6743,5 @@
     mUSBControllers.backup();
 
-    ctrl->unshare();
+    ctrl->i_unshare();
 
     mUSBControllers->remove(ctrl);
@@ -8820,5 +8820,5 @@
              ++it)
         {
-            ComObjPtr<Medium> pMedium = (*it)->getMedium();
+            ComObjPtr<Medium> pMedium = (*it)->i_getMedium();
             if (pMedium.isNull())
                 continue;
@@ -9355,5 +9355,5 @@
 
         /* BIOS */
-        rc = mBIOSSettings->loadSettings(data.biosSettings);
+        rc = mBIOSSettings->i_loadSettings(data.biosSettings);
         if (FAILED(rc)) return rc;
 
@@ -9425,10 +9425,10 @@
 
             AssertBreak(p.ulSlot < RT_ELEMENTS(mParallelPorts));
-            rc = mParallelPorts[p.ulSlot]->loadSettings(p);
+            rc = mParallelPorts[p.ulSlot]->i_loadSettings(p);
             if (FAILED(rc)) return rc;
         }
 
         /* AudioAdapter */
-        rc = mAudioAdapter->loadSettings(data.audioAdapter);
+        rc = mAudioAdapter->i_loadSettings(data.audioAdapter);
         if (FAILED(rc)) return rc;
 
@@ -9963,5 +9963,5 @@
          ++it)
     {
-        if ((*it)->getName() == aName)
+        if ((*it)->i_getName() == aName)
         {
             aUSBController = (*it);
@@ -9990,5 +9990,5 @@
          ++it)
     {
-        if ((*it)->getControllerType() == enmType)
+        if ((*it)->i_getControllerType() == enmType)
             cCtrls++;
     }
@@ -10023,5 +10023,5 @@
         AutoReadLock attLock(pAtt COMMA_LOCKVAL_SRC_POS);
 
-        if (pAtt->getControllerName() == aName)
+        if (pAtt->i_getControllerName() == aName)
             atts.push_back(pAtt);
     }
@@ -10405,5 +10405,5 @@
  * with it.
  *
-  Caller must hold the machine lock!
+ * Caller must hold the machine lock!
  *
  * This throws XML errors and HRESULT, so the caller must have a catch block!
@@ -10660,5 +10660,5 @@
 
         /* BIOS (required) */
-        rc = mBIOSSettings->saveSettings(data.biosSettings);
+        rc = mBIOSSettings->i_saveSettings(data.biosSettings);
         if (FAILED(rc)) throw rc;
 
@@ -10671,6 +10671,6 @@
             settings::USBController settingsCtrl;
 
-            settingsCtrl.strName = ctrl->getName();
-            settingsCtrl.enmType = ctrl->getControllerType();
+            settingsCtrl.strName = ctrl->i_getName();
+            settingsCtrl.enmType = ctrl->i_getControllerType();
 
             data.usbSettings.llUSBControllers.push_back(settingsCtrl);
@@ -10723,5 +10723,5 @@
             settings::ParallelPort p;
             p.ulSlot = slot;
-            rc = mParallelPorts[slot]->saveSettings(p);
+            rc = mParallelPorts[slot]->i_saveSettings(p);
             if (FAILED(rc)) return rc;
 
@@ -10730,5 +10730,5 @@
 
         /* Audio adapter */
-        rc = mAudioAdapter->saveSettings(data.audioAdapter);
+        rc = mAudioAdapter->i_saveSettings(data.audioAdapter);
         if (FAILED(rc)) return rc;
 
@@ -10905,11 +10905,11 @@
 
         MediumAttachment *pAttach = *it;
-        Medium *pMedium = pAttach->getMedium();
-
-        dev.deviceType = pAttach->getType();
-        dev.lPort = pAttach->getPort();
-        dev.lDevice = pAttach->getDevice();
-        dev.fPassThrough = pAttach->getPassthrough();
-        dev.fHotPluggable = pAttach->getHotPluggable();
+        Medium *pMedium = pAttach->i_getMedium();
+
+        dev.deviceType = pAttach->i_getType();
+        dev.lPort = pAttach->i_getPort();
+        dev.lDevice = pAttach->i_getDevice();
+        dev.fPassThrough = pAttach->i_getPassthrough();
+        dev.fHotPluggable = pAttach->i_getHotPluggable();
         if (pMedium)
         {
@@ -10918,10 +10918,10 @@
             else
                 dev.uuid = pMedium->i_getId();
-            dev.fTempEject = pAttach->getTempEject();
-            dev.fNonRotational = pAttach->getNonRotational();
-            dev.fDiscard = pAttach->getDiscard();
-        }
-
-        dev.strBwGroup = pAttach->getBandwidthGroup();
+            dev.fTempEject = pAttach->i_getTempEject();
+            dev.fNonRotational = pAttach->i_getNonRotational();
+            dev.fDiscard = pAttach->i_getDiscard();
+        }
+
+        dev.strBwGroup = pAttach->i_getBandwidthGroup();
 
         data.llAttachedDevices.push_back(dev);
@@ -11106,7 +11106,7 @@
             {
                 MediumAttachment* pAtt = *it;
-                if (pAtt->getType() == DeviceType_HardDisk)
+                if (pAtt->i_getType() == DeviceType_HardDisk)
                 {
-                    Medium* pMedium = pAtt->getMedium();
+                    Medium* pMedium = pAtt->i_getMedium();
                     Assert(pMedium);
 
@@ -11158,6 +11158,6 @@
             MediumAttachment* pAtt = *it;
 
-            DeviceType_T devType = pAtt->getType();
-            Medium* pMedium = pAtt->getMedium();
+            DeviceType_T devType = pAtt->i_getType();
+            Medium* pMedium = pAtt->i_getMedium();
 
             if (   devType != DeviceType_HardDisk
@@ -11245,15 +11245,15 @@
             rc = attachment->init(this,
                                   diff,
-                                  pAtt->getControllerName(),
-                                  pAtt->getPort(),
-                                  pAtt->getDevice(),
+                                  pAtt->i_getControllerName(),
+                                  pAtt->i_getPort(),
+                                  pAtt->i_getDevice(),
                                   DeviceType_HardDisk,
                                   true /* aImplicit */,
                                   false /* aPassthrough */,
                                   false /* aTempEject */,
-                                  pAtt->getNonRotational(),
-                                  pAtt->getDiscard(),
-                                  pAtt->getHotPluggable(),
-                                  pAtt->getBandwidthGroup());
+                                  pAtt->i_getNonRotational(),
+                                  pAtt->i_getDiscard(),
+                                  pAtt->i_getHotPluggable(),
+                                  pAtt->i_getBandwidthGroup());
             if (FAILED(rc)) throw rc;
 
@@ -11306,5 +11306,5 @@
     {
         const ComObjPtr<MediumAttachment> &pAtt = *it;
-        if (pAtt->isImplicit())
+        if (pAtt->i_isImplicit())
         {
             fImplicitDiffs = true;
@@ -11356,7 +11356,7 @@
             {
                 MediumAttachment* pAtt = *it;
-                if (pAtt->getType() == DeviceType_HardDisk)
+                if (pAtt->i_getType() == DeviceType_HardDisk)
                 {
-                    Medium* pMedium = pAtt->getMedium();
+                    Medium* pMedium = pAtt->i_getMedium();
                     Assert(pMedium);
 
@@ -11396,13 +11396,13 @@
         {
             ComObjPtr<MediumAttachment> pAtt = *it;
-            ComObjPtr<Medium> pMedium = pAtt->getMedium();
+            ComObjPtr<Medium> pMedium = pAtt->i_getMedium();
             if (pMedium.isNull())
                 continue;
 
             // Implicit attachments go on the list for deletion and back references are removed.
-            if (pAtt->isImplicit())
+            if (pAtt->i_isImplicit())
             {
                 /* Deassociate and mark for deletion */
-                LogFlowThisFunc(("Detaching '%s', pending deletion\n", pAtt->getLogName()));
+                LogFlowThisFunc(("Detaching '%s', pending deletion\n", pAtt->i_getLogName()));
                 rc = pMedium->i_removeBackReference(mData->mUuid);
                 if (FAILED(rc))
@@ -11416,5 +11416,5 @@
             {
                 /* no: de-associate */
-                LogFlowThisFunc(("Detaching '%s', no deletion\n", pAtt->getLogName()));
+                LogFlowThisFunc(("Detaching '%s', no deletion\n", pAtt->i_getLogName()));
                 rc = pMedium->i_removeBackReference(mData->mUuid);
                 if (FAILED(rc))
@@ -11422,5 +11422,5 @@
                 continue;
             }
-            LogFlowThisFunc(("Not detaching '%s'\n", pAtt->getLogName()));
+            LogFlowThisFunc(("Not detaching '%s'\n", pAtt->i_getLogName()));
         }
 
@@ -11456,11 +11456,11 @@
                 ComObjPtr<MediumAttachment> pAtt = *it;
                 Assert(pAtt);
-                LogFlowThisFunc(("Deleting '%s'\n", pAtt->getLogName()));
-                ComObjPtr<Medium> pMedium = pAtt->getMedium();
+                LogFlowThisFunc(("Deleting '%s'\n", pAtt->i_getLogName()));
+                ComObjPtr<Medium> pMedium = pAtt->i_getMedium();
                 Assert(pMedium);
 
                 rc = pMedium->i_deleteStorage(NULL /*aProgress*/, true /*aWait*/);
                 // continue on delete failure, just collect error messages
-                AssertMsg(SUCCEEDED(rc), ("rc=%Rhrc it=%s hd=%s\n", rc, pAtt->getLogName(), pMedium->i_getLocationFull().c_str() ));
+                AssertMsg(SUCCEEDED(rc), ("rc=%Rhrc it=%s hd=%s\n", rc, pAtt->i_getLogName(), pMedium->i_getLocationFull().c_str() ));
                 mrc = rc;
             }
@@ -11524,5 +11524,5 @@
     {
         MediumAttachment *pAttach = *it;
-        if (pAttach->matches(aControllerName, aControllerPort, aDevice))
+        if (pAttach->i_matches(aControllerName, aControllerPort, aDevice))
             return pAttach;
     }
@@ -11550,5 +11550,5 @@
     {
         MediumAttachment *pAttach = *it;
-        ComObjPtr<Medium> pMediumThis = pAttach->getMedium();
+        ComObjPtr<Medium> pMediumThis = pAttach->i_getMedium();
         if (pMediumThis == pMedium)
             return pAttach;
@@ -11577,5 +11577,5 @@
     {
         MediumAttachment *pAttach = *it;
-        ComObjPtr<Medium> pMediumThis = pAttach->getMedium();
+        ComObjPtr<Medium> pMediumThis = pAttach->i_getMedium();
         if (pMediumThis->i_getId() == id)
             return pAttach;
@@ -11598,10 +11598,10 @@
                               Snapshot *pSnapshot)
 {
-    ComObjPtr<Medium> oldmedium = pAttach->getMedium();
-    DeviceType_T mediumType = pAttach->getType();
+    ComObjPtr<Medium> oldmedium = pAttach->i_getMedium();
+    DeviceType_T mediumType = pAttach->i_getType();
 
     LogFlowThisFunc(("Entering, medium of attachment is %s\n", oldmedium ? oldmedium->i_getLocationFull().c_str() : "NULL"));
 
-    if (pAttach->isImplicit())
+    if (pAttach->i_isImplicit())
     {
         /* attempt to implicitly delete the implicitly created diff */
@@ -11689,5 +11689,5 @@
     {
         ComObjPtr<MediumAttachment> &pAttach = *it;
-        ComObjPtr<Medium> pMedium = pAttach->getMedium();
+        ComObjPtr<Medium> pMedium = pAttach->i_getMedium();
 
         if (!pMedium.isNull())
@@ -11780,8 +11780,8 @@
         MediumAttachment *pAttach = *it;
 
-        pAttach->commit();
-
-        Medium* pMedium = pAttach->getMedium();
-        bool fImplicit = pAttach->isImplicit();
+        pAttach->i_commit();
+
+        Medium* pMedium = pAttach->i_getMedium();
+        bool fImplicit = pAttach->i_isImplicit();
 
         LogFlowThisFunc(("Examining current medium '%s' (implicit: %d)\n",
@@ -11794,9 +11794,9 @@
         {
             /* convert implicit attachment to normal */
-            pAttach->setImplicit(false);
+            pAttach->i_setImplicit(false);
 
             if (    aOnline
                  && pMedium
-                 && pAttach->getType() == DeviceType_HardDisk
+                 && pAttach->i_getType() == DeviceType_HardDisk
                )
             {
@@ -11835,5 +11835,5 @@
             {
                 MediumAttachment *pOldAttach = *oldIt;
-                if (pOldAttach->getMedium() == pMedium)
+                if (pOldAttach->i_getMedium() == pMedium)
                 {
                     LogFlowThisFunc(("--> medium '%s' was attached before, will not remove\n", pMedium->i_getName().c_str()));
@@ -11854,9 +11854,9 @@
     {
         MediumAttachment *pAttach = *it;
-        Medium* pMedium = pAttach->getMedium();
+        Medium* pMedium = pAttach->i_getMedium();
 
         /* Detach only hard disks, since DVD/floppy media is detached
          * instantly in MountMedium. */
-        if (pAttach->getType() == DeviceType_HardDisk && pMedium)
+        if (pAttach->i_getType() == DeviceType_HardDisk && pMedium)
         {
             LogFlowThisFunc(("detaching medium '%s' from machine\n", pMedium->i_getName().c_str()));
@@ -11919,5 +11919,5 @@
              ++it)
         {
-            (*it)->updateParentMachine(mPeer);
+            (*it)->i_updateParentMachine(mPeer);
         }
 
@@ -11958,7 +11958,7 @@
         MediumAttachment *pAttach = *it;
         /* Fix up the backrefs for DVD/floppy media. */
-        if (pAttach->getType() != DeviceType_HardDisk)
-        {
-            Medium* pMedium = pAttach->getMedium();
+        if (pAttach->i_getType() != DeviceType_HardDisk)
+        {
+            Medium* pMedium = pAttach->i_getMedium();
             if (pMedium)
             {
@@ -11968,11 +11968,11 @@
         }
 
-        (*it)->rollback();
+        (*it)->i_rollback();
 
         pAttach = *it;
         /* Fix up the backrefs for DVD/floppy media. */
-        if (pAttach->getType() != DeviceType_HardDisk)
-        {
-            Medium* pMedium = pAttach->getMedium();
+        if (pAttach->i_getType() != DeviceType_HardDisk)
+        {
+            Medium* pMedium = pAttach->i_getMedium();
             if (pMedium)
             {
@@ -12097,5 +12097,5 @@
             while (it != mUSBControllers->end())
             {
-                (*it)->rollback();
+                (*it)->i_rollback();
                 ++it;
             }
@@ -12111,5 +12111,5 @@
 
     if (mBIOSSettings)
-        mBIOSSettings->rollback();
+        mBIOSSettings->i_rollback();
 
     if (mVRDEServer && (mData->flModifications & IsModified_VRDEServer))
@@ -12117,5 +12117,5 @@
 
     if (mAudioAdapter)
-        mAudioAdapter->rollback();
+        mAudioAdapter->i_rollback();
 
     if (mUSBDeviceFilters && (mData->flModifications & IsModified_USB))
@@ -12152,7 +12152,7 @@
         for (ULONG slot = 0; slot < RT_ELEMENTS(mParallelPorts); slot++)
             if (    mParallelPorts[slot]
-                 && mParallelPorts[slot]->isModified())
+                 && mParallelPorts[slot]->i_isModified())
             {
-                mParallelPorts[slot]->rollback();
+                mParallelPorts[slot]->i_rollback();
                 parallelPorts[slot] = mParallelPorts[slot];
             }
@@ -12222,7 +12222,7 @@
         commitMedia(Global::IsOnline(mData->mMachineState));
 
-    mBIOSSettings->commit();
+    mBIOSSettings->i_commit();
     mVRDEServer->i_commit();
-    mAudioAdapter->commit();
+    mAudioAdapter->i_commit();
     mUSBDeviceFilters->commit();
     mBandwidthControl->i_commit();
@@ -12282,5 +12282,5 @@
         mSerialPorts[slot]->i_commit();
     for (ULONG slot = 0; slot < RT_ELEMENTS(mParallelPorts); slot++)
-        mParallelPorts[slot]->commit();
+        mParallelPorts[slot]->i_commit();
 
     bool commitStorageControllers = false;
@@ -12369,8 +12369,8 @@
             while (it != mUSBControllers->end())
             {
-                (*it)->commit();
+                (*it)->i_commit();
 
                 /* look if this controller has a peer device */
-                ComObjPtr<USBController> peer = (*it)->getPeer();
+                ComObjPtr<USBController> peer = (*it)->i_getPeer();
                 if (!peer)
                 {
@@ -12421,5 +12421,5 @@
         while (it != mUSBControllers->end())
         {
-            (*it)->commit();
+            (*it)->i_commit();
             ++it;
         }
@@ -12471,7 +12471,7 @@
     }
 
-    mBIOSSettings->copyFrom(aThat->mBIOSSettings);
+    mBIOSSettings->i_copyFrom(aThat->mBIOSSettings);
     mVRDEServer->i_copyFrom(aThat->mVRDEServer);
-    mAudioAdapter->copyFrom(aThat->mAudioAdapter);
+    mAudioAdapter->i_copyFrom(aThat->mAudioAdapter);
     mUSBDeviceFilters->copyFrom(aThat->mUSBDeviceFilters);
     mBandwidthControl->i_copyFrom(aThat->mBandwidthControl);
@@ -12509,5 +12509,5 @@
         mSerialPorts[slot]->i_copyFrom(aThat->mSerialPorts[slot]);
     for (ULONG slot = 0; slot < RT_ELEMENTS(mParallelPorts); slot++)
-        mParallelPorts[slot]->copyFrom(aThat->mParallelPorts[slot]);
+        mParallelPorts[slot]->i_copyFrom(aThat->mParallelPorts[slot]);
 }
 
@@ -12555,6 +12555,6 @@
         AutoReadLock local_alockA(pAttach COMMA_LOCKVAL_SRC_POS);
 
-        if (pAttach->getType() == DeviceType_HardDisk)
-            list.push_back(pAttach->getMedium());
+        if (pAttach->i_getType() == DeviceType_HardDisk)
+            list.push_back(pAttach->i_getMedium());
     }
 }
@@ -13964,8 +13964,8 @@
         /* Need to query the details first, as the IMediumAttachment reference
          * might be to the original settings, which we are going to change. */
-        ctrlName = pAttach->getControllerName();
-        lPort = pAttach->getPort();
-        lDevice = pAttach->getDevice();
-        fTempEject = pAttach->getTempEject();
+        ctrlName = pAttach->i_getControllerName();
+        lPort = pAttach->i_getPort();
+        lDevice = pAttach->i_getDevice();
+        fTempEject = pAttach->i_getTempEject();
     }
 
@@ -13975,5 +13975,5 @@
          * backup is not necessarily the same thing. */
         ComObjPtr<Medium> oldmedium;
-        oldmedium = pAttach->getMedium();
+        oldmedium = pAttach->i_getMedium();
 
         setModified(IsModified_Storage);
@@ -13995,6 +13995,6 @@
                 oldmedium->i_removeBackReference(mData->mUuid);
 
-            pAttach->updateMedium(NULL);
-            pAttach->updateEjected();
+            pAttach->i_updateMedium(NULL);
+            pAttach->i_updateEjected();
         }
 
@@ -14005,5 +14005,5 @@
         {
             AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
-            pAttach->updateEjected();
+            pAttach->i_updateEjected();
         }
     }
@@ -14715,6 +14715,6 @@
     {
         MediumAttachment* pAtt = *it;
-        DeviceType_T devType = pAtt->getType();
-        Medium *pMedium = pAtt->getMedium();
+        DeviceType_T devType = pAtt->i_getType();
+        Medium *pMedium = pAtt->i_getMedium();
 
         MediumLockList *pMediumLockList(new MediumLockList());
Index: /trunk/src/VBox/Main/src-server/MediumAttachmentImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MediumAttachmentImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/MediumAttachmentImpl.cpp	(revision 49871)
@@ -86,4 +86,6 @@
 /////////////////////////////////////////////////////////////////////////////
 
+DEFINE_EMPTY_CTOR_DTOR(MediumAttachment)
+
 HRESULT MediumAttachment::FinalConstruct()
 {
@@ -169,5 +171,5 @@
                           m->bd->fImplicit ? ":I" : "");
 
-    LogFlowThisFunc(("LEAVE - %s\n", getLogName()));
+    LogFlowThisFunc(("LEAVE - %s\n", i_getLogName()));
     return S_OK;
 }
@@ -209,5 +211,5 @@
 void MediumAttachment::uninit()
 {
-    LogFlowThisFunc(("ENTER - %s\n", getLogName()));
+    LogFlowThisFunc(("ENTER - %s\n", i_getLogName()));
 
     /* Enclose the state transition Ready->InUninit->NotReady */
@@ -229,45 +231,33 @@
 /////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP MediumAttachment::COMGETTER(Medium)(IMedium **aHardDisk)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aHardDisk);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getMedium(ComPtr<IMedium> &aHardDisk)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
-    m->bd->pMedium.queryInterfaceTo(aHardDisk);
-
-    LogFlowThisFuncLeave();
-    return S_OK;
-}
-
-STDMETHODIMP MediumAttachment::COMGETTER(Controller)(BSTR *aController)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aController);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+    aHardDisk = m->bd->pMedium;
+
+    LogFlowThisFuncLeave();
+    return S_OK;
+}
+
+
+HRESULT MediumAttachment::getController(com::Utf8Str &aController)
+{
+    LogFlowThisFuncEnter();
 
     /* m->controller is constant during life time, no need to lock */
-    m->bd->bstrControllerName.cloneTo(aController);
-
-    LogFlowThisFuncLeave();
-    return S_OK;
-}
-
-STDMETHODIMP MediumAttachment::COMGETTER(Port)(LONG *aPort)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aPort);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+    aController = Utf8Str(m->bd->bstrControllerName);
+
+    LogFlowThisFuncLeave();
+    return S_OK;
+}
+
+
+HRESULT MediumAttachment::getPort(LONG *aPort)
+{
+    LogFlowThisFuncEnter();
 
     /* m->bd->port is constant during life time, no need to lock */
@@ -278,12 +268,7 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(Device)(LONG *aDevice)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aDevice);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+HRESULT  MediumAttachment::getDevice(LONG *aDevice)
+{
+    LogFlowThisFuncEnter();
 
     /* m->bd->device is constant during life time, no need to lock */
@@ -294,12 +279,7 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(Type)(DeviceType_T *aType)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aType);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+HRESULT MediumAttachment::getType(DeviceType_T *aType)
+{
+    LogFlowThisFuncEnter();
 
     /* m->bd->type is constant during life time, no need to lock */
@@ -310,12 +290,8 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(Passthrough)(BOOL *aPassthrough)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aPassthrough);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getPassthrough(BOOL *aPassthrough)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -327,12 +303,8 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(TemporaryEject)(BOOL *aTemporaryEject)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aTemporaryEject);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getTemporaryEject(BOOL *aTemporaryEject)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -344,12 +316,8 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(IsEjected)(BOOL *aEjected)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aEjected);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getIsEjected(BOOL *aEjected)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -361,12 +329,8 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(NonRotational)(BOOL *aNonRotational)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aNonRotational);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getNonRotational(BOOL *aNonRotational)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -378,12 +342,7 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(Discard)(BOOL *aDiscard)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aDiscard);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+HRESULT MediumAttachment::getDiscard(BOOL *aDiscard)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -395,11 +354,8 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(BandwidthGroup) (IBandwidthGroup **aBwGroup)
-{
-    LogFlowThisFuncEnter();
-    CheckComArgOutPointerValid(aBwGroup);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+HRESULT MediumAttachment::getBandwidthGroup(ComPtr<IBandwidthGroup> &aBandwidthGroup)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
@@ -414,5 +370,5 @@
 
         if (SUCCEEDED(hrc))
-            pBwGroup.queryInterfaceTo(aBwGroup);
+            pBwGroup.queryInterfaceTo(aBandwidthGroup.asOutParam());
     }
 
@@ -421,12 +377,7 @@
 }
 
-STDMETHODIMP MediumAttachment::COMGETTER(HotPluggable)(BOOL *aHotPluggable)
-{
-    LogFlowThisFuncEnter();
-
-    CheckComArgOutPointerValid(aHotPluggable);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+HRESULT MediumAttachment::getHotPluggable(BOOL *aHotPluggable)
+{
+    LogFlowThisFuncEnter();
 
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -441,7 +392,7 @@
  *  @note Locks this object for writing.
  */
-void MediumAttachment::rollback()
-{
-    LogFlowThisFunc(("ENTER - %s\n", getLogName()));
+void MediumAttachment::i_rollback()
+{
+    LogFlowThisFunc(("ENTER - %s\n", i_getLogName()));
 
     /* sanity */
@@ -453,5 +404,5 @@
     m->bd.rollback();
 
-    LogFlowThisFunc(("LEAVE - %s\n", getLogName()));
+    LogFlowThisFunc(("LEAVE - %s\n", i_getLogName()));
 }
 
@@ -459,7 +410,7 @@
  *  @note Locks this object for writing.
  */
-void MediumAttachment::commit()
-{
-    LogFlowThisFunc(("ENTER - %s\n", getLogName()));
+void MediumAttachment::i_commit()
+{
+    LogFlowThisFunc(("ENTER - %s\n", i_getLogName()));
 
     /* sanity */
@@ -472,43 +423,43 @@
         m->bd.commit();
 
-    LogFlowThisFunc(("LEAVE - %s\n", getLogName()));
-}
-
-bool MediumAttachment::isImplicit() const
+    LogFlowThisFunc(("LEAVE - %s\n", i_getLogName()));
+}
+
+bool MediumAttachment::i_isImplicit() const
 {
     return m->bd->fImplicit;
 }
 
-void MediumAttachment::setImplicit(bool aImplicit)
+void MediumAttachment::i_setImplicit(bool aImplicit)
 {
     m->bd->fImplicit = aImplicit;
 }
 
-const ComObjPtr<Medium>& MediumAttachment::getMedium() const
+const ComObjPtr<Medium>& MediumAttachment::i_getMedium() const
 {
     return m->bd->pMedium;
 }
 
-Bstr MediumAttachment::getControllerName() const
+const Bstr MediumAttachment::i_getControllerName() const
 {
     return m->bd->bstrControllerName;
 }
 
-LONG MediumAttachment::getPort() const
+LONG MediumAttachment::i_getPort() const
 {
     return m->bd->lPort;
 }
 
-LONG MediumAttachment::getDevice() const
+LONG MediumAttachment::i_getDevice() const
 {
     return m->bd->lDevice;
 }
 
-DeviceType_T MediumAttachment::getType() const
+DeviceType_T MediumAttachment::i_getType() const
 {
     return m->bd->type;
 }
 
-bool MediumAttachment::getPassthrough() const
+bool MediumAttachment::i_getPassthrough() const
 {
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -516,5 +467,5 @@
 }
 
-bool MediumAttachment::getTempEject() const
+bool MediumAttachment::i_getTempEject() const
 {
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -522,5 +473,5 @@
 }
 
-bool MediumAttachment::getNonRotational() const
+bool MediumAttachment::i_getNonRotational() const
 {
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -528,5 +479,5 @@
 }
 
-bool MediumAttachment::getDiscard() const
+bool MediumAttachment::i_getDiscard() const
 {
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -534,5 +485,5 @@
 }
 
-bool MediumAttachment::getHotPluggable() const
+bool MediumAttachment::i_getHotPluggable() const
 {
     AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
@@ -540,10 +491,10 @@
 }
 
-const Utf8Str& MediumAttachment::getBandwidthGroup() const
+Utf8Str& MediumAttachment::i_getBandwidthGroup() const
 {
     return m->bd->strBandwidthGroup;
 }
 
-bool MediumAttachment::matches(CBSTR aControllerName, LONG aPort, LONG aDevice)
+bool MediumAttachment::i_matches(CBSTR aControllerName, LONG aPort, LONG aDevice)
 {
     return (    aControllerName == m->bd->bstrControllerName
@@ -556,5 +507,5 @@
  * @param aMedium
  */
-void MediumAttachment::updateMedium(const ComObjPtr<Medium> &aMedium)
+void MediumAttachment::i_updateMedium(const ComObjPtr<Medium> &aMedium)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -567,5 +518,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updatePassthrough(bool aPassthrough)
+void MediumAttachment::i_updatePassthrough(bool aPassthrough)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -576,5 +527,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updateTempEject(bool aTempEject)
+void MediumAttachment::i_updateTempEject(bool aTempEject)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -585,5 +536,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updateEjected()
+void MediumAttachment::i_updateEjected()
 {
     Assert(isWriteLockOnCurrentThread());
@@ -593,5 +544,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updateNonRotational(bool aNonRotational)
+void MediumAttachment::i_updateNonRotational(bool aNonRotational)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -602,5 +553,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updateDiscard(bool aDiscard)
+void MediumAttachment::i_updateDiscard(bool aDiscard)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -611,5 +562,5 @@
 
 /** Must be called from under this object's write lock. */
-void MediumAttachment::updateHotPluggable(bool aHotPluggable)
+void MediumAttachment::i_updateHotPluggable(bool aHotPluggable)
 {
     Assert(isWriteLockOnCurrentThread());
@@ -619,5 +570,5 @@
 }
 
-void MediumAttachment::updateBandwidthGroup(const Utf8Str &aBandwidthGroup)
+void MediumAttachment::i_updateBandwidthGroup(const Utf8Str &aBandwidthGroup)
 {
     LogFlowThisFuncEnter();
@@ -630,8 +581,7 @@
 }
 
-void MediumAttachment::updateParentMachine(Machine * const pMachine)
-{
-    LogFlowThisFunc(("ENTER - %s\n", getLogName()));
-
+void MediumAttachment::i_updateParentMachine(Machine * const pMachine)
+{
+    LogFlowThisFunc(("ENTER - %s\n", i_getLogName()));
     /* sanity */
     AutoCaller autoCaller(this);
@@ -642,5 +592,5 @@
     unconst(m->pMachine) = pMachine;
 
-    LogFlowThisFunc(("LEAVE - %s\n", getLogName()));
-}
-
+    LogFlowThisFunc(("LEAVE - %s\n", i_getLogName()));
+}
+
Index: /trunk/src/VBox/Main/src-server/MediumImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MediumImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/MediumImpl.cpp	(revision 49871)
@@ -1474,5 +1474,5 @@
     /// registries of portable VMs referring to this medium), this will also
     /// require to add the mRegistered flag to data
-
+    NOREF(aDescription);
     ReturnComNotImplemented();
 }
@@ -1704,4 +1704,5 @@
 HRESULT Medium::getAllowedTypes(std::vector<MediumType_T> &aAllowedTypes)
 {
+    NOREF(aAllowedTypes);
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -2662,4 +2663,6 @@
 {
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
+    NOREF(aLocation);
+    NOREF(aProgress);
 
     /// @todo NEWMEDIA for file names, add the default extension if no extension
Index: /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp	(revision 49871)
@@ -29,4 +29,37 @@
 #include <VBox/com/array.h>
 
+struct NATEngine::Data
+{
+    Data() : mMtu(0),
+             mSockRcv(0),
+             mSockSnd(0),
+             mTcpRcv(0),
+             mTcpSnd(0),
+             mDNSPassDomain(TRUE),
+             mDNSProxy(FALSE),
+             mDNSUseHostResolver(FALSE),
+             mAliasMode(0)
+    {}
+
+    com::Utf8Str mNetwork;
+    com::Utf8Str mBindIP;
+    uint32_t mMtu;
+    uint32_t mSockRcv;
+    uint32_t mSockSnd;
+    uint32_t mTcpRcv;
+    uint32_t mTcpSnd;
+    /* TFTP service */
+    Utf8Str mTFTPPrefix;
+    Utf8Str mTFTPBootFile;
+    Utf8Str mTFTPNextServer;
+    /* DNS service */
+    BOOL mDNSPassDomain;
+    BOOL mDNSProxy;
+    BOOL mDNSUseHostResolver;
+    /* Alias service */
+    ULONG mAliasMode;
+};
+
+
 
 // constructor / destructor
@@ -38,6 +71,13 @@
 HRESULT NATEngine::FinalConstruct()
 {
-    return S_OK;
-}
+    return BaseFinalConstruct();
+}
+
+void NATEngine::FinalRelease()
+{
+    uninit();
+    BaseFinalRelease();
+}
+
 
 HRESULT NATEngine::init(Machine *aParent, INetworkAdapter *aAdapter)
@@ -106,10 +146,4 @@
 
 
-void NATEngine::FinalRelease()
-{
-    uninit();
-    BaseFinalRelease();
-}
-
 void NATEngine::uninit()
 {
@@ -124,5 +158,5 @@
 }
 
-bool NATEngine::isModified()
+bool NATEngine::i_isModified()
 {
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
@@ -131,5 +165,5 @@
 }
 
-bool NATEngine::rollback()
+bool NATEngine::i_rollback()
 {
     AutoCaller autoCaller(this);
@@ -149,5 +183,5 @@
 }
 
-void NATEngine::commit()
+void NATEngine::i_commit()
 {
     AutoCaller autoCaller(this);
@@ -178,10 +212,6 @@
 }
 
-STDMETHODIMP
-NATEngine::GetNetworkSettings(ULONG *aMtu, ULONG *aSockSnd, ULONG *aSockRcv, ULONG *aTcpWndSnd, ULONG *aTcpWndRcv)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT NATEngine::getNetworkSettings(ULONG *aMtu, ULONG *aSockSnd, ULONG *aSockRcv, ULONG *aTcpWndSnd, ULONG *aTcpWndRcv)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (aMtu)
@@ -190,19 +220,15 @@
         *aSockSnd = mData->mSockSnd;
     if (aSockRcv)
-         *aSockRcv = mData->mSockRcv;
+        *aSockRcv = mData->mSockRcv;
     if (aTcpWndSnd)
-         *aTcpWndSnd = mData->mTcpSnd;
+        *aTcpWndSnd = mData->mTcpSnd;
     if (aTcpWndRcv)
-         *aTcpWndRcv = mData->mTcpRcv;
-
-    return S_OK;
-}
-
-STDMETHODIMP
-NATEngine::SetNetworkSettings(ULONG aMtu, ULONG aSockSnd, ULONG aSockRcv, ULONG aTcpWndSnd, ULONG aTcpWndRcv)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+        *aTcpWndRcv = mData->mTcpRcv;
+
+    return S_OK;
+}
+
+HRESULT NATEngine::setNetworkSettings(ULONG aMtu, ULONG aSockSnd, ULONG aSockRcv, ULONG aTcpWndSnd, ULONG aTcpWndRcv)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (   aMtu || aSockSnd || aSockRcv
@@ -228,43 +254,28 @@
 }
 
-STDMETHODIMP
-NATEngine::COMGETTER(Redirects)(ComSafeArrayOut(BSTR , aNatRules))
-{
-    CheckComArgOutSafeArrayPointerValid(aNatRules);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-
-
-    SafeArray<BSTR> sf(mNATRules.size());
+
+HRESULT NATEngine::getRedirects(std::vector<com::Utf8Str> &aRedirects)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    aRedirects.resize(mNATRules.size());
     size_t i = 0;
     NATRuleMap::const_iterator it;
-    for (it = mNATRules.begin();
-         it != mNATRules.end(); ++it, ++i)
+    for (it = mNATRules.begin(); it != mNATRules.end(); ++it, ++i)
     {
         settings::NATRule r = it->second;
-        BstrFmt bstr("%s,%d,%s,%d,%s,%d",
-                     r.strName.c_str(),
-                     r.proto,
-                     r.strHostIP.c_str(),
-                     r.u16HostPort,
-                     r.strGuestIP.c_str(),
-                     r.u16GuestPort);
-        bstr.detachTo(&sf[i]);
-    }
-    sf.detachTo(ComSafeArrayOutArg(aNatRules));
-    return S_OK;
-}
-
-
-STDMETHODIMP
-NATEngine::AddRedirect(IN_BSTR aName, NATProtocol_T aProto, IN_BSTR aBindIp, USHORT aHostPort, IN_BSTR aGuestIP, USHORT aGuestPort)
-{
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+        aRedirects[i] = Utf8StrFmt("%s,%d,%s,%d,%s,%d",
+                                   r.strName.c_str(),
+                                   r.proto,
+                                   r.strHostIP.c_str(),
+                                   r.u16HostPort,
+                                   r.strGuestIP.c_str(),
+                                   r.u16GuestPort);
+    }
+    return S_OK;
+}
+
+HRESULT NATEngine::addRedirect(const com::Utf8Str &aName, NATProtocol_T aProto, const com::Utf8Str &aHostIP, USHORT aHostPort, const com::Utf8Str &aGuestIP, USHORT aGuestPort)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     Utf8Str name = aName;
@@ -292,5 +303,5 @@
             return setError(E_INVALIDARG,
                             tr("A NAT rule of this name already exists"));
-        if (   r.strHostIP == Utf8Str(aBindIp)
+        if (   r.strHostIP == aHostIP
             && r.u16HostPort == aHostPort
             && r.proto == aProto)
@@ -301,5 +312,5 @@
     r.strName = name.c_str();
     r.proto = aProto;
-    r.strHostIP = aBindIp;
+    r.strHostIP = aHostIP;
     r.u16HostPort = aHostPort;
     r.strGuestIP = aGuestIP;
@@ -317,10 +328,6 @@
 }
 
-STDMETHODIMP
-NATEngine::RemoveRedirect(IN_BSTR aName)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT NATEngine::removeRedirect(const com::Utf8Str &aName)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     NATRuleMap::iterator it = mNATRules.find(aName);
@@ -342,9 +349,9 @@
     mData.commit();
     alock.release();
-    mParent->onNATRedirectRuleChange(ulSlot, TRUE, aName, proto, Bstr(strHostIP).raw(), u16HostPort, Bstr(strGuestIP).raw(), u16GuestPort);
-    return S_OK;
-}
-
-HRESULT NATEngine::loadSettings(const settings::NAT &data)
+    mParent->onNATRedirectRuleChange(ulSlot, TRUE, Bstr(aName).raw(), proto, Bstr(strHostIP).raw(), u16HostPort, Bstr(strGuestIP).raw(), u16GuestPort);
+    return S_OK;
+}
+
+HRESULT NATEngine::i_loadSettings(const settings::NAT &data)
 {
     AutoCaller autoCaller(this);
@@ -383,5 +390,5 @@
 
 
-HRESULT NATEngine::saveSettings(settings::NAT &data)
+HRESULT NATEngine::i_saveSettings(settings::NAT &data)
 {
     AutoCaller autoCaller(this);
@@ -417,10 +424,6 @@
 }
 
-
-STDMETHODIMP
-NATEngine::COMSETTER(Network)(IN_BSTR aNetwork)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+HRESULT NATEngine::setNetwork(const com::Utf8Str &aNetwork)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (Bstr(mData->mNetwork) != aNetwork)
@@ -434,15 +437,11 @@
 }
 
-STDMETHODIMP
-NATEngine::COMGETTER(Network)(BSTR *aNetwork)
-{
-    CheckComArgNotNull(aNetwork);
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+
+HRESULT NATEngine::getNetwork(com::Utf8Str &aNetwork)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (!mData->mNetwork.isEmpty())
     {
-        mData->mNetwork.cloneTo(aNetwork);
+        aNetwork = mData->mNetwork;
         Log(("Getter (this:%p) Network: %s\n", this, mData->mNetwork.c_str()));
     }
@@ -450,36 +449,28 @@
 }
 
-STDMETHODIMP
-NATEngine::COMSETTER(HostIP)(IN_BSTR aBindIP)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
-    if (Bstr(mData->mBindIP) != aBindIP)
-    {
-        mData.backup();
-        mData->mBindIP = aBindIP;
-        mParent->setModified(Machine::IsModified_NetworkAdapters);
-        m_fModified = true;
-    }
-    return S_OK;
-}
-STDMETHODIMP NATEngine::COMGETTER(HostIP)(BSTR *aBindIP)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+HRESULT NATEngine::setHostIP(const com::Utf8Str &aHostIP)
+{
+    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
+    if (Bstr(mData->mBindIP) != aHostIP)
+    {
+        mData.backup();
+        mData->mBindIP = aHostIP;
+        mParent->setModified(Machine::IsModified_NetworkAdapters);
+        m_fModified = true;
+    }
+    return S_OK;
+}
+
+HRESULT NATEngine::getHostIP(com::Utf8Str &aBindIP)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
     if (!mData->mBindIP.isEmpty())
-        mData->mBindIP.cloneTo(aBindIP);
-    return S_OK;
-}
-
-
-STDMETHODIMP
-NATEngine::COMSETTER(TFTPPrefix)(IN_BSTR aTFTPPrefix)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+        aBindIP = mData->mBindIP;
+    return S_OK;
+}
+
+HRESULT NATEngine::setTFTPPrefix(const com::Utf8Str &aTFTPPrefix)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (Bstr(mData->mTFTPPrefix) != aTFTPPrefix)
@@ -493,14 +484,12 @@
 }
 
-STDMETHODIMP
-NATEngine::COMGETTER(TFTPPrefix)(BSTR *aTFTPPrefix)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+HRESULT NATEngine::getTFTPPrefix(com::Utf8Str &aTFTPPrefix)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
     if (!mData->mTFTPPrefix.isEmpty())
     {
-        mData->mTFTPPrefix.cloneTo(aTFTPPrefix);
+        aTFTPPrefix = mData->mTFTPPrefix;
         Log(("Getter (this:%p) TFTPPrefix: %s\n", this, mData->mTFTPPrefix.c_str()));
     }
@@ -508,9 +497,6 @@
 }
 
-STDMETHODIMP
-NATEngine::COMSETTER(TFTPBootFile)(IN_BSTR aTFTPBootFile)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+HRESULT NATEngine::setTFTPBootFile(const com::Utf8Str &aTFTPBootFile)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (Bstr(mData->mTFTPBootFile) != aTFTPBootFile)
@@ -524,14 +510,11 @@
 }
 
-STDMETHODIMP
-NATEngine::COMGETTER(TFTPBootFile)(BSTR *aTFTPBootFile)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+
+HRESULT NATEngine::getTFTPBootFile(com::Utf8Str &aTFTPBootFile)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (!mData->mTFTPBootFile.isEmpty())
     {
-        mData->mTFTPBootFile.cloneTo(aTFTPBootFile);
+        aTFTPBootFile = mData->mTFTPBootFile;
         Log(("Getter (this:%p) BootFile: %s\n", this, mData->mTFTPBootFile.c_str()));
     }
@@ -539,9 +522,7 @@
 }
 
-STDMETHODIMP
-NATEngine::COMSETTER(TFTPNextServer)(IN_BSTR aTFTPNextServer)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+
+HRESULT NATEngine::setTFTPNextServer(const com::Utf8Str &aTFTPNextServer)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (Bstr(mData->mTFTPNextServer) != aTFTPNextServer)
@@ -555,24 +536,18 @@
 }
 
-STDMETHODIMP
-NATEngine::COMGETTER(TFTPNextServer)(BSTR *aTFTPNextServer)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+HRESULT NATEngine::getTFTPNextServer(com::Utf8Str &aTFTPNextServer)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     if (!mData->mTFTPNextServer.isEmpty())
     {
-        mData->mTFTPNextServer.cloneTo(aTFTPNextServer);
+        aTFTPNextServer =  mData->mTFTPNextServer;
         Log(("Getter (this:%p) NextServer: %s\n", this, mData->mTFTPNextServer.c_str()));
     }
     return S_OK;
 }
+
 /* DNS */
-STDMETHODIMP
-NATEngine::COMSETTER(DNSPassDomain) (BOOL aDNSPassDomain)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+HRESULT NATEngine::setDNSPassDomain(BOOL aDNSPassDomain)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -586,19 +561,15 @@
     return S_OK;
 }
-STDMETHODIMP
-NATEngine::COMGETTER(DNSPassDomain)(BOOL *aDNSPassDomain)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+
+HRESULT NATEngine::getDNSPassDomain(BOOL *aDNSPassDomain)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     *aDNSPassDomain = mData->mDNSPassDomain;
     return S_OK;
 }
-STDMETHODIMP
-NATEngine::COMSETTER(DNSProxy)(BOOL aDNSProxy)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+
+
+HRESULT NATEngine::setDNSProxy(BOOL aDNSProxy)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -612,31 +583,23 @@
     return S_OK;
 }
-STDMETHODIMP
-NATEngine::COMGETTER(DNSProxy)(BOOL *aDNSProxy)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+
+HRESULT NATEngine::getDNSProxy(BOOL *aDNSProxy)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     *aDNSProxy = mData->mDNSProxy;
     return S_OK;
 }
-STDMETHODIMP
-NATEngine::COMGETTER(DNSUseHostResolver)(BOOL *aDNSUseHostResolver)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+
+
+HRESULT NATEngine::getDNSUseHostResolver(BOOL *aDNSUseHostResolver)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     *aDNSUseHostResolver = mData->mDNSUseHostResolver;
     return S_OK;
 }
-STDMETHODIMP
-NATEngine::COMSETTER(DNSUseHostResolver)(BOOL aDNSUseHostResolver)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-
+
+
+HRESULT NATEngine::setDNSUseHostResolver(BOOL aDNSUseHostResolver)
+{
     if (mData->mDNSUseHostResolver != aDNSUseHostResolver)
     {
@@ -649,9 +612,6 @@
 }
 
-STDMETHODIMP NATEngine::COMSETTER(AliasMode)(ULONG aAliasMode)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
+HRESULT NATEngine::setAliasMode(ULONG aAliasMode)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -666,8 +626,6 @@
 }
 
-STDMETHODIMP NATEngine::COMGETTER(AliasMode)(ULONG *aAliasMode)
-{
-    AutoCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
+HRESULT NATEngine::getAliasMode(ULONG *aAliasMode)
+{
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     *aAliasMode = mData->mAliasMode;
Index: /trunk/src/VBox/Main/src-server/NetworkAdapterImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/NetworkAdapterImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/NetworkAdapterImpl.cpp	(revision 49871)
@@ -1251,5 +1251,5 @@
     }
 
-    mNATEngine->loadSettings(data.nat);
+    mNATEngine->i_loadSettings(data.nat);
     mData->mBridgedInterface = data.strBridgedName;
     mData->mInternalNetwork = data.strInternalNetworkName;
@@ -1306,6 +1306,6 @@
     data.mode = mData->mAttachmentType;
 
-    mNATEngine->commit();
-    mNATEngine->saveSettings(data.nat);
+    mNATEngine->i_commit();
+    mNATEngine->i_saveSettings(data.nat);
 
     data.strBridgedName = mData->mBridgedInterface;
@@ -1333,5 +1333,5 @@
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     bool fChanged = m_fModified;
-    fChanged |= (mData->mAdapterType == NetworkAttachmentType_NAT? mNATEngine->isModified() : false);
+    fChanged |= (mData->mAdapterType == NetworkAttachmentType_NAT? mNATEngine->i_isModified() : false);
     return fChanged;
 }
Index: /trunk/src/VBox/Main/src-server/ParallelPortImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/ParallelPortImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/ParallelPortImpl.cpp	(revision 49871)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -52,4 +52,5 @@
 // constructor / destructor
 /////////////////////////////////////////////////////////////////////////////
+DEFINE_EMPTY_CTOR_DTOR(ParallelPort)
 
 HRESULT ParallelPort::FinalConstruct()
@@ -194,11 +195,6 @@
 /////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP ParallelPort::COMGETTER(Enabled) (BOOL *aEnabled)
-{
-    CheckComArgOutPointerValid(aEnabled);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT ParallelPort::getEnabled(BOOL *aEnabled)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -208,11 +204,7 @@
 }
 
-STDMETHODIMP ParallelPort::COMSETTER(Enabled) (BOOL aEnabled)
+HRESULT ParallelPort::setEnabled(BOOL aEnabled)
 {
     LogFlowThisFunc(("aEnabled=%RTbool\n", aEnabled));
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -246,11 +238,6 @@
 }
 
-STDMETHODIMP ParallelPort::COMGETTER(Slot) (ULONG *aSlot)
-{
-    CheckComArgOutPointerValid(aSlot);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT ParallelPort::getSlot(ULONG *aSlot)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -260,11 +247,6 @@
 }
 
-STDMETHODIMP ParallelPort::COMGETTER(IRQ) (ULONG *aIRQ)
-{
-    CheckComArgOutPointerValid(aIRQ);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT ParallelPort::getIRQ(ULONG *aIRQ)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -274,5 +256,5 @@
 }
 
-STDMETHODIMP ParallelPort::COMSETTER(IRQ)(ULONG aIRQ)
+HRESULT ParallelPort::setIRQ(ULONG aIRQ)
 {
     /* check IRQ limits
@@ -283,7 +265,4 @@
                         m->bd->ulSlot, aIRQ, 255);
 
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -311,11 +290,6 @@
 }
 
-STDMETHODIMP ParallelPort::COMGETTER(IOBase) (ULONG *aIOBase)
-{
-    CheckComArgOutPointerValid(aIOBase);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT ParallelPort::getIOBase(ULONG *aIOBase)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -325,5 +299,5 @@
 }
 
-STDMETHODIMP ParallelPort::COMSETTER(IOBase)(ULONG aIOBase)
+HRESULT ParallelPort::setIOBase(ULONG aIOBase)
 {
     /* check IOBase limits
@@ -334,7 +308,4 @@
                         m->bd->ulSlot, aIOBase, 0, 0xFFFF);
 
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -362,23 +333,15 @@
 }
 
-STDMETHODIMP ParallelPort::COMGETTER(Path) (BSTR *aPath)
-{
-    CheckComArgOutPointerValid(aPath);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
-
-    m->bd->strPath.cloneTo(aPath);
-
-    return S_OK;
-}
-
-STDMETHODIMP ParallelPort::COMSETTER(Path) (IN_BSTR aPath)
-{
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+
+HRESULT ParallelPort::getPath(com::Utf8Str &aPath)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+    aPath = m->bd->strPath;
+    return S_OK;
+}
+
+
+HRESULT ParallelPort::setPath(const com::Utf8Str &aPath)
+{
     /* the machine needs to be mutable */
     AutoMutableStateDependency adep(m->pMachine);
@@ -387,14 +350,14 @@
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
 
-    Utf8Str str(aPath);
-    if (str != m->bd->strPath)
+    if (aPath != m->bd->strPath)
     {
-        HRESULT rc = checkSetPath(str);
+        HRESULT rc = i_checkSetPath(aPath);
         if (FAILED(rc)) return rc;
 
         m->bd.backup();
-        m->bd->strPath = str;
+        m->bd->strPath = aPath;
 
         m->fModified = true;
+
         // leave the lock before informing callbacks
         alock.release();
@@ -421,5 +384,5 @@
  *  @note Locks this object for writing.
  */
-HRESULT ParallelPort::loadSettings(const settings::ParallelPort &data)
+HRESULT ParallelPort::i_loadSettings(const settings::ParallelPort &data)
 {
     AutoCaller autoCaller(this);
@@ -439,9 +402,9 @@
  *  Note that the given Port node is completely empty on input.
  *
- *  @param aPortNode <Port> node.
+ *  @param  <data> node.
  *
  *  @note Locks this object for reading.
  */
-HRESULT ParallelPort::saveSettings(settings::ParallelPort &data)
+HRESULT ParallelPort::i_saveSettings(settings::ParallelPort &data)
 {
     AutoCaller autoCaller(this);
@@ -460,5 +423,5 @@
  * @return
  */
-bool ParallelPort::isModified()
+bool ParallelPort::i_isModified()
 {
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
@@ -469,5 +432,5 @@
  *  @note Locks this object for writing.
  */
-void ParallelPort::rollback()
+void ParallelPort::i_rollback()
 {
     /* sanity */
@@ -484,5 +447,5 @@
  *  for writing) if there is one.
  */
-void ParallelPort::commit()
+void ParallelPort::i_commit()
 {
     /* sanity */
@@ -513,5 +476,5 @@
  *  represented by @a aThat (locked for reading).
  */
-void ParallelPort::copyFrom(ParallelPort *aThat)
+void ParallelPort::i_copyFrom(ParallelPort *aThat)
 {
     AssertReturnVoid (aThat != NULL);
@@ -537,5 +500,5 @@
  *  Validates COMSETTER(Path) arguments.
  */
-HRESULT ParallelPort::checkSetPath(const Utf8Str &str)
+HRESULT ParallelPort::i_checkSetPath(const Utf8Str &str)
 {
     AssertReturn(isWriteLockOnCurrentThread(), E_FAIL);
Index: /trunk/src/VBox/Main/src-server/SnapshotImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/SnapshotImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/SnapshotImpl.cpp	(revision 49871)
@@ -1045,5 +1045,5 @@
     {
         MediumAttachment *pAtt = *it;
-        Medium *pMedium = pAtt->getMedium();
+        Medium *pMedium = pAtt->i_getMedium();
         if (pMedium) // can be NULL for non-harddisk
         {
@@ -1777,10 +1777,10 @@
         ComObjPtr<MediumAttachment> &pAttach = *it;
         AutoReadLock attachLock(pAttach COMMA_LOCKVAL_SRC_POS);
-        if (pAttach->getType() == DeviceType_HardDisk)
+        if (pAttach->i_getType() == DeviceType_HardDisk)
         {
             ++ulOpCount;
             ++ulTotalWeight;         // assume one MB weight for each differencing hard disk to manage
-            Assert(pAttach->getMedium());
-            LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pAttach->getMedium()->i_getName().c_str()));
+            Assert(pAttach->i_getMedium());
+            LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pAttach->i_getMedium()->i_getName().c_str()));
         }
     }
@@ -1964,10 +1964,10 @@
         {
             ComObjPtr<MediumAttachment> pAttach = *it;
-            ComObjPtr<Medium> pMedium = pAttach->getMedium();
+            ComObjPtr<Medium> pMedium = pAttach->i_getMedium();
 
             /* while the hard disk is attached, the number of children or the
              * parent cannot change, so no lock */
             if (    !pMedium.isNull()
-                 && pAttach->getType() == DeviceType_HardDisk
+                 && pAttach->i_getType() == DeviceType_HardDisk
                  && !pMedium->i_getParent().isNull()
                  && pMedium->i_getChildren().size() == 0
@@ -2008,5 +2008,5 @@
         {
             ComObjPtr<MediumAttachment> pAttach = *it;        // guaranteed to have only attachments where medium != NULL
-            ComObjPtr<Medium> pMedium = pAttach->getMedium();
+            ComObjPtr<Medium> pMedium = pAttach->i_getMedium();
 
             AutoWriteLock mlock(pMedium COMMA_LOCKVAL_SRC_POS);
@@ -2176,5 +2176,4 @@
                         mUserData->s.strName.c_str());
 
-
     /* If the snapshot being deleted is the current one, ensure current
      * settings are committed and saved.
@@ -2214,7 +2213,7 @@
         ComObjPtr<MediumAttachment> &pAttach = *it;
         AutoReadLock attachLock(pAttach COMMA_LOCKVAL_SRC_POS);
-        if (pAttach->getType() == DeviceType_HardDisk)
-        {
-            ComObjPtr<Medium> pHD = pAttach->getMedium();
+        if (pAttach->i_getType() == DeviceType_HardDisk)
+        {
+            ComObjPtr<Medium> pHD = pAttach->i_getMedium();
             Assert(pHD);
             AutoReadLock mlock(pHD COMMA_LOCKVAL_SRC_POS);
@@ -2437,8 +2436,8 @@
             ComObjPtr<MediumAttachment> &pAttach = *it;
             AutoReadLock attachLock(pAttach COMMA_LOCKVAL_SRC_POS);
-            if (pAttach->getType() != DeviceType_HardDisk)
+            if (pAttach->i_getType() != DeviceType_HardDisk)
                 continue;
 
-            ComObjPtr<Medium> pHD = pAttach->getMedium();
+            ComObjPtr<Medium> pHD = pAttach->i_getMedium();
             Assert(!pHD.isNull());
 
@@ -2479,7 +2478,7 @@
                 pOnlineMediumAttachment =
                     findAttachment(mMediaData->mAttachments,
-                                   pAttach->getControllerName().raw(),
-                                   pAttach->getPort(),
-                                   pAttach->getDevice());
+                                   pAttach->i_getControllerName().raw(),
+                                   pAttach->i_getPort(),
+                                   pAttach->i_getDevice());
                 if (pOnlineMediumAttachment)
                 {
@@ -2873,5 +2872,5 @@
                 {
                     AutoWriteLock attLock(pAtt COMMA_LOCKVAL_SRC_POS);
-                    pAtt->updateMedium(it->mpTarget);
+                    pAtt->i_updateMedium(it->mpTarget);
                     it->mpTarget->i_addBackReference(pMachine->mData->mUuid, childSnapshotId);
                 }
@@ -3649,5 +3648,5 @@
     {
         AutoWriteLock attLock(pDeleteRec->mpOnlineMediumAttachment COMMA_LOCKVAL_SRC_POS);
-        pDeleteRec->mpOnlineMediumAttachment->updateMedium(pDeleteRec->mpTarget);
+        pDeleteRec->mpOnlineMediumAttachment->i_updateMedium(pDeleteRec->mpTarget);
     }
 
Index: /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp	(revision 49871)
@@ -234,26 +234,16 @@
 
 
-// IUSBController properties
-/////////////////////////////////////////////////////////////////////////////
-STDMETHODIMP USBController::COMGETTER(Name) (BSTR *aName)
-{
-    CheckComArgOutPointerValid(aName);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+// Wrapped IUSBController properties
+/////////////////////////////////////////////////////////////////////////////
+HRESULT USBController::getName(com::Utf8Str &aName)
+{
     /* strName is constant during life time, no need to lock */
-    m->bd->strName.cloneTo(aName);
-
-    return S_OK;
-}
-
-STDMETHODIMP USBController::COMGETTER(Type)(USBControllerType_T *aType)
-{
-    CheckComArgOutPointerValid(aType);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+    aName = m->bd->strName;
+
+    return S_OK;
+}
+
+HRESULT USBController::getType(USBControllerType_T *aType)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -263,11 +253,6 @@
 }
 
-STDMETHODIMP USBController::COMGETTER(USBStandard)(USHORT *aUSBStandard)
-{
-    CheckComArgOutPointerValid(aUSBStandard);
-
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
+HRESULT USBController::getUSBStandard(USHORT *aUSBStandard)
+{
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
@@ -292,5 +277,5 @@
 
 /** @note Locks objects for writing! */
-void USBController::rollback()
+void USBController::i_rollback()
 {
     AutoCaller autoCaller(this);
@@ -310,5 +295,5 @@
  *  for writing) if there is one.
  */
-void USBController::commit()
+void USBController::i_commit()
 {
     /* sanity */
@@ -340,5 +325,5 @@
  *  represented by @a aThat (locked for reading).
  */
-void USBController::copyFrom(USBController *aThat)
+void USBController::i_copyFrom(USBController *aThat)
 {
     AssertReturnVoid(aThat != NULL);
@@ -374,5 +359,5 @@
  *  represented by @a aThat (locked for reading).
  */
-void USBController::unshare()
+void USBController::i_unshare()
 {
     /* sanity */
@@ -400,20 +385,19 @@
 }
 
-const Utf8Str& USBController::getName() const
+const Utf8Str &USBController::i_getName() const
 {
     return m->bd->strName;
 }
 
-USBControllerType_T USBController::getControllerType() const
+const USBControllerType_T &USBController::i_getControllerType() const
 {
     return m->bd->enmType;
 }
 
-ComObjPtr<USBController> USBController::getPeer()
+ComObjPtr<USBController> USBController::i_getPeer()
 {
     return m->pPeer;
 }
 
-// private methods
 /////////////////////////////////////////////////////////////////////////////
 /* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/src-server/VFSExplorerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/VFSExplorerImpl.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/VFSExplorerImpl.cpp	(revision 49871)
@@ -36,4 +36,30 @@
 
 #include <memory>
+
+struct VFSExplorer::Data
+{
+    struct DirEntry
+    {
+        DirEntry(Utf8Str strName, VFSFileType_T fileType, uint64_t cbSize, uint32_t fMode)
+           : name(strName)
+           , type(fileType)
+           , size(cbSize)
+           , mode(fMode) {}
+
+        Utf8Str name;
+        VFSFileType_T type;
+        uint64_t size;
+        uint32_t mode;
+    };
+
+    VFSType_T storageType;
+    Utf8Str strUsername;
+    Utf8Str strPassword;
+    Utf8Str strHostname;
+    Utf8Str strPath;
+    Utf8Str strBucket;
+    std::list<DirEntry> entryList;
+};
+
 
 VFSExplorer::VFSExplorer()
@@ -538,6 +564,6 @@
 
      if (SUCCEEDED(rc))
-        /* Return progress to the caller */
-        progress.queryInterfaceTo(aProgress.asOutParam());
+         /* Return progress to the caller */
+         progress.queryInterfaceTo(aProgress.asOutParam());
 
     return rc;
Index: /trunk/src/VBox/Main/src-server/generic/NetIf-generic.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/generic/NetIf-generic.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/generic/NetIf-generic.cpp	(revision 49871)
@@ -266,5 +266,5 @@
                             iface.createObject();
                             iface->init(IfName, HostNetworkInterfaceType_HostOnly, pInfo);
-                            iface->setVirtualBox(pVBox);
+                            iface->i_setVirtualBox(pVBox);
                             iface.queryInterfaceTo(aHostNetworkInterface);
                         }
Index: /trunk/src/VBox/Main/src-server/xpcom/server.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/xpcom/server.cpp	(revision 49870)
+++ /trunk/src/VBox/Main/src-server/xpcom/server.cpp	(revision 49871)
@@ -113,7 +113,4 @@
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Snapshot, ISnapshot)
 
-NS_DECL_CLASSINFO(MediumAttachment)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(MediumAttachment, IMediumAttachment)
-
 NS_DECL_CLASSINFO(Progress)
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Progress, IProgress)
@@ -125,18 +122,6 @@
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(SharedFolder, ISharedFolder)
 
-NS_DECL_CLASSINFO(HostNetworkInterface)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(HostNetworkInterface, IHostNetworkInterface)
-
 NS_DECL_CLASSINFO(NetworkAdapter)
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(NetworkAdapter, INetworkAdapter)
-
-NS_DECL_CLASSINFO(NATEngine)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(NATEngine, INATEngine)
-
-NS_DECL_CLASSINFO(ParallelPort)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(ParallelPort, IParallelPort)
-
-NS_DECL_CLASSINFO(USBController)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(USBController, IUSBController)
 
 NS_DECL_CLASSINFO(USBDeviceFilters)
@@ -153,7 +138,4 @@
 NS_IMPL_THREADSAFE_ISUPPORTS2_CI(HostUSBDeviceFilter, IUSBDeviceFilter, IHostUSBDeviceFilter)
 #endif
-
-NS_DECL_CLASSINFO(AudioAdapter)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(AudioAdapter, IAudioAdapter)
 
 NS_DECL_CLASSINFO(SystemProperties)
@@ -166,7 +148,4 @@
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(PerformanceMetric, IPerformanceMetric)
 #endif /* VBOX_WITH_RESOURCE_USAGE_API */
-
-NS_DECL_CLASSINFO(BIOSSettings)
-NS_IMPL_THREADSAFE_ISUPPORTS1_CI(BIOSSettings, IBIOSSettings)
 
 #ifdef VBOX_WITH_EXTPACK
