Index: XIOS/trunk/src/node/field.cpp
===================================================================
--- XIOS/trunk/src/node/field.cpp	(revision 955)
+++ XIOS/trunk/src/node/field.cpp	(revision 957)
@@ -37,5 +37,5 @@
       , useCompressedOutput(false)
       , isReadDataRequestPending(false)
-   { setVirtualVariableGroup(); }
+   { setVirtualVariableGroup(CVariableGroup::create(getId() + "_virtual_variable_group")); }
 
    CField::CField(const StdString& id)
@@ -48,5 +48,5 @@
       , useCompressedOutput(false)
       , isReadDataRequestPending(false)
-   { setVirtualVariableGroup(); }
+   { setVirtualVariableGroup(CVariableGroup::create(getId() + "_virtual_variable_group")); }
 
    CField::~CField(void)
@@ -60,14 +60,8 @@
    }
 
-   void CField::setVirtualVariableGroup(void)
-   {
-      this->setVirtualVariableGroup(CVariableGroup::create());
-   }
-
    CVariableGroup* CField::getVirtualVariableGroup(void) const
    {
       return this->vVariableGroup;
    }
-
 
    std::vector<CVariable*> CField::getAllVariables(void) const
@@ -1210,20 +1204,13 @@
    void CField::sendAddAllVariables()
    {
-     if (!getAllVariables().empty())
-     {
-       // Firstly, it's necessary to add virtual variable group
-       sendAddVariableGroup(getVirtualVariableGroup()->getId());
-
-       // Okie, now we can add to this variable group
-       std::vector<CVariable*> allVar = getAllVariables();
-       std::vector<CVariable*>::const_iterator it = allVar.begin();
-       std::vector<CVariable*>::const_iterator itE = allVar.end();
-
-       for (; it != itE; ++it)
-       {
-         this->sendAddVariable((*it)->getId());
-         (*it)->sendAllAttributesToServer();
-         (*it)->sendValue();
-       }
+     std::vector<CVariable*> allVar = getAllVariables();
+     std::vector<CVariable*>::const_iterator it = allVar.begin();
+     std::vector<CVariable*>::const_iterator itE = allVar.end();
+
+     for (; it != itE; ++it)
+     {
+       this->sendAddVariable((*it)->getId());
+       (*it)->sendAllAttributesToServer();
+       (*it)->sendValue();
      }
    }
Index: XIOS/trunk/src/node/field.hpp
===================================================================
--- XIOS/trunk/src/node/field.hpp	(revision 955)
+++ XIOS/trunk/src/node/field.hpp	(revision 957)
@@ -161,5 +161,4 @@
 
         void setVirtualVariableGroup(CVariableGroup* newVVariableGroup);
-        void setVirtualVariableGroup(void);
         CVariableGroup* getVirtualVariableGroup(void) const;
         vector<CVariable*> getAllVariables(void) const;
Index: XIOS/trunk/src/node/file.cpp
===================================================================
--- XIOS/trunk/src/node/file.cpp	(revision 955)
+++ XIOS/trunk/src/node/file.cpp	(revision 957)
@@ -26,6 +26,6 @@
       , allDomainEmpty(false), isOpen(false)
    {
-     setVirtualFieldGroup();
-     setVirtualVariableGroup();
+     setVirtualFieldGroup(CFieldGroup::create(getId() + "_virtual_field_group"));
+     setVirtualVariableGroup(CVariableGroup::create(getId() + "_virtual_variable_group"));
    }
 
@@ -35,6 +35,6 @@
       , allDomainEmpty(false), isOpen(false)
     {
-      setVirtualFieldGroup();
-      setVirtualVariableGroup();
+      setVirtualFieldGroup(CFieldGroup::create(getId() + "_virtual_field_group"));
+      setVirtualVariableGroup(CVariableGroup::create(getId() + "_virtual_variable_group"));
     }
 
@@ -187,17 +187,4 @@
    {
       this->vVariableGroup = newVVariableGroup;
-   }
-
-   //----------------------------------------------------------------
-   //! Create virtual field group, which is done normally on initializing file
-   void CFile::setVirtualFieldGroup(void)
-   {
-      this->setVirtualFieldGroup(CFieldGroup::create());
-   }
-
-   //! Create virtual variable group, which is done normally on initializing file
-   void CFile::setVirtualVariableGroup(void)
-   {
-      this->setVirtualVariableGroup(CVariableGroup::create());
    }
 
@@ -944,20 +931,13 @@
    void CFile::sendAddAllVariables()
    {
-     if (!getAllVariables().empty())
+     std::vector<CVariable*> allVar = getAllVariables();
+     std::vector<CVariable*>::const_iterator it = allVar.begin();
+     std::vector<CVariable*>::const_iterator itE = allVar.end();
+
+     for (; it != itE; ++it)
      {
-       // Firstly, it's necessary to add virtual variable group
-       sendAddVariableGroup(getVirtualVariableGroup()->getId());
-
-       // Okie, now we can add to this variable group
-       std::vector<CVariable*> allVar = getAllVariables();
-       std::vector<CVariable*>::const_iterator it = allVar.begin();
-       std::vector<CVariable*>::const_iterator itE = allVar.end();
-
-       for (; it != itE; ++it)
-       {
-         this->sendAddVariable((*it)->getId());
-         (*it)->sendAllAttributesToServer();
-         (*it)->sendValue();
-       }
+       this->sendAddVariable((*it)->getId());
+       (*it)->sendAllAttributesToServer();
+       (*it)->sendValue();
      }
    }
Index: XIOS/trunk/src/node/file.hpp
===================================================================
--- XIOS/trunk/src/node/file.hpp	(revision 955)
+++ XIOS/trunk/src/node/file.hpp	(revision 957)
@@ -92,7 +92,5 @@
          // Set some root definitions in a file
          void setVirtualFieldGroup(CFieldGroup* newVFieldGroup);
-         void setVirtualFieldGroup(void);
          void setVirtualVariableGroup(CVariableGroup* newVVariableGroup);
-         void setVirtualVariableGroup(void);
 
          void createHeader(void);
Index: XIOS/trunk/src/node/grid.cpp
===================================================================
--- XIOS/trunk/src/node/grid.cpp	(revision 955)
+++ XIOS/trunk/src/node/grid.cpp	(revision 957)
@@ -36,7 +36,7 @@
       , gridSrc_(), hasTransform_(false), isGenerated_(false), order_(), globalIndexOnServer_()
    {
-     setVirtualDomainGroup();
-     setVirtualAxisGroup();
-     setVirtualScalarGroup();
+     setVirtualDomainGroup(CDomainGroup::create(getId() + "_virtual_domain_group"));
+     setVirtualAxisGroup(CAxisGroup::create(getId() + "_virtual_axis_group"));
+     setVirtualScalarGroup(CScalarGroup::create(getId() + "_virtual_scalar_group"));
    }
 
@@ -54,7 +54,7 @@
       , gridSrc_(), hasTransform_(false), isGenerated_(false), order_(), globalIndexOnServer_()
    {
-     setVirtualDomainGroup();
-     setVirtualAxisGroup();
-     setVirtualScalarGroup();
+     setVirtualDomainGroup(CDomainGroup::create(getId() + "_virtual_domain_group"));
+     setVirtualAxisGroup(CAxisGroup::create(getId() + "_virtual_axis_group"));
+     setVirtualScalarGroup(CScalarGroup::create(getId() + "_virtual_scalar_group"));
    }
 
@@ -1482,23 +1482,4 @@
    }
 
-   //----------------------------------------------------------------
-   //! Create virtual field group, which is done normally on initializing file
-   void CGrid::setVirtualDomainGroup(void)
-   {
-      this->setVirtualDomainGroup(CDomainGroup::create());
-   }
-
-   //! Create virtual variable group, which is done normally on initializing file
-   void CGrid::setVirtualAxisGroup(void)
-   {
-      this->setVirtualAxisGroup(CAxisGroup::create());
-   }
-
-   //! Create virtual variable group, which is done normally on initializing file
-   void CGrid::setVirtualScalarGroup(void)
-   {
-      this->setVirtualScalarGroup(CScalarGroup::create());
-   }
-
    /*!
    \brief Send a message to create a domain on server side
Index: XIOS/trunk/src/node/grid.hpp
===================================================================
--- XIOS/trunk/src/node/grid.hpp	(revision 955)
+++ XIOS/trunk/src/node/grid.hpp	(revision 957)
@@ -244,9 +244,6 @@
 
         void setVirtualDomainGroup(CDomainGroup* newVDomainGroup);
-        void setVirtualDomainGroup();
         void setVirtualAxisGroup(CAxisGroup* newVAxisGroup);
-        void setVirtualAxisGroup();
         void setVirtualScalarGroup(CScalarGroup* newVScalarGroup);
-        void setVirtualScalarGroup();
 
         void setDomainList(const std::vector<CDomain*> domains = std::vector<CDomain*>());
