Index: /trunk/src/VBox/Main/include/UpdateAgentImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/UpdateAgentImpl.h	(revision 94649)
+++ /trunk/src/VBox/Main/include/UpdateAgentImpl.h	(revision 94650)
@@ -41,6 +41,68 @@
 };
 
-class ATL_NO_VTABLE UpdateAgent
-    : public UpdateAgentWrap
+class UpdateAgentBase
+{
+protected: /* Not directly instancable. */
+
+    UpdateAgentBase()
+        : m_VirtualBox(NULL)
+        , m(new settings::UpdateAgent) { }
+
+    virtual ~UpdateAgentBase() { }
+
+public:
+
+    /** @name Pure virtual public methods for internal purposes only
+     *        (ensure there is a caller and a read lock before calling them!)
+     * @{ */
+    virtual HRESULT i_loadSettings(const settings::UpdateAgent &data) = 0;
+    virtual HRESULT i_saveSettings(settings::UpdateAgent &data) = 0;
+
+    virtual HRESULT i_setCheckCount(ULONG aCount) = 0;
+    virtual HRESULT i_setLastCheckDate(const com::Utf8Str &aDate) = 0;
+    /** @} */
+
+protected:
+
+    /** @name Pure virtual internal task callbacks.
+     * @{ */
+    friend UpdateAgentTask;
+    virtual DECLCALLBACK(HRESULT) i_updateTask(UpdateAgentTask *pTask) = 0;
+    /** @} */
+
+    /** @name Static helper methods.
+     * @{ */
+    static Utf8Str i_getPlatformInfo(void);
+    /** @} */
+
+protected:
+    VirtualBox * const m_VirtualBox;
+
+    /** @name Data members.
+     * @{ */
+    settings::UpdateAgent *m;
+
+    struct Data
+    {
+        UpdateAgentTaskResult m_lastResult;
+
+        Utf8Str               m_strName;
+        bool                  m_fHidden;
+        UpdateState_T         m_enmState;
+        uint32_t              m_uOrder;
+
+        Data(void)
+        {
+            m_fHidden  = true;
+            m_enmState = UpdateState_Invalid;
+            m_uOrder   = UINT32_MAX;
+        }
+    } mData;
+    /** @} */
+};
+
+class ATL_NO_VTABLE UpdateAgent :
+    public UpdateAgentWrap,
+    public UpdateAgentBase
 {
 public:
@@ -97,40 +159,4 @@
     virtual HRESULT getLastCheckDate(com::Utf8Str &aData);
     /** @} */
-
-    /** @name Internal task callbacks.
-     * @{ */
-    friend UpdateAgentTask;
-    virtual DECLCALLBACK(HRESULT) i_updateTask(UpdateAgentTask *pTask) = 0;
-    /** @} */
-
-    /** @name Static helper methods.
-     * @{ */
-    static Utf8Str i_getPlatformInfo(void);
-    /** @} */
-
-protected:
-    VirtualBox * const m_VirtualBox;
-
-    /** @name Data members.
-     * @{ */
-    settings::UpdateAgent *m;
-
-    struct Data
-    {
-        UpdateAgentTaskResult m_lastResult;
-
-        Utf8Str               m_strName;
-        bool                  m_fHidden;
-        UpdateState_T         m_enmState;
-        uint32_t              m_uOrder;
-
-        Data(void)
-        {
-            m_fHidden  = true;
-            m_enmState = UpdateState_Invalid;
-            m_uOrder   = UINT32_MAX;
-        }
-    } mData;
-    /** @} */
 };
 
@@ -155,7 +181,7 @@
     /** @name Implemented (pure) virtual methods from UpdateAgent.
      * @{ */
-    virtual HRESULT check(ComPtr<IProgress> &aProgress) RT_OVERRIDE;
+    HRESULT check(ComPtr<IProgress> &aProgress);
 
-    virtual DECLCALLBACK(HRESULT) i_updateTask(UpdateAgentTask *pTask) RT_OVERRIDE;
+    DECLCALLBACK(HRESULT) i_updateTask(UpdateAgentTask *pTask);
     /** @}  */
 
Index: /trunk/src/VBox/Main/src-server/UpdateAgentImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/UpdateAgentImpl.cpp	(revision 94649)
+++ /trunk/src/VBox/Main/src-server/UpdateAgentImpl.cpp	(revision 94650)
@@ -55,5 +55,5 @@
 {
 public:
-    UpdateAgentTask(UpdateAgent *aThat, Progress *aProgress)
+    UpdateAgentTask(UpdateAgentBase *aThat, Progress *aProgress)
         : m_pParent(aThat)
         , m_pProgress(aProgress)
@@ -67,5 +67,5 @@
 
     /** Weak pointer to parent (update agent). */
-    UpdateAgent         *m_pParent;
+    UpdateAgentBase     *m_pParent;
     /** Smart pointer to the progress object for this job. */
     ComObjPtr<Progress>  m_pProgress;
@@ -76,5 +76,5 @@
 void UpdateAgentTask::handler(void)
 {
-    UpdateAgent *pUpdateAgent = this->m_pParent;
+    UpdateAgentBase *pUpdateAgent = this->m_pParent;
     AssertPtr(pUpdateAgent);
 
@@ -92,6 +92,4 @@
 *********************************************************************************************************************************/
 UpdateAgent::UpdateAgent()
-    : m_VirtualBox(NULL)
-    , m(new settings::UpdateAgent)
 {
 }
@@ -377,5 +375,5 @@
 
 /* static */
-Utf8Str UpdateAgent::i_getPlatformInfo(void)
+Utf8Str UpdateAgentBase::i_getPlatformInfo(void)
 {
     /* Prepare platform report: */
