diff --git a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql
index d03eafb9eda60a9e923da8da01ee28d3a2856700..91da60701ed83465bd8a3ef50b6f4d11073c424d 100644
--- a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql
+++ b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql
@@ -2158,7 +2158,7 @@ INSERT INTO "ELEMENTS_DATA2TAG" VALUES (100008, 91);
 --
 INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, -2475.72, 0.0, 0.0, 0.0, 321, "Emulsion");
 INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (1, 0.0, 0.0,     0.0, 0.0, 0.0, 0.0, 321, "StationA");
-INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (2, 10.0, -21.0, -2475.72, 0.0, 0.0, 0.0, 321, "Emulsion");
+INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (2, 10.0, -21.0, -2510.27, 0.0, 0.0, 0.0, 321, "Emulsion");
 INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (100035, 0);
 INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (100035, 1);
 INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (107841, 2);
diff --git a/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.cxx b/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.cxx
index 7424987e17929d371002aa7f778e7a2a0ae08b06..5dbe4b9b91c6246124800f7e3f885a46a47ce1a8 100644
--- a/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.cxx
+++ b/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.cxx
@@ -40,16 +40,16 @@ EmulsionPlates::EmulsionPlates(const std::string & name,
   m_logVolume = preBuild();
 }
 
-
 void
 EmulsionPlates::getParameters()
 {
   const EmulsionGeneralParameters * generalParameters = m_geometryManager->generalParameters();
   const EmulsionPlatesParameters *   platesParameters = m_geometryManager->platesParameters();
+  const EmulsionSupportParameters*  supportParameters = m_geometryManager->supportParameters();
 
-  m_width = platesParameters->platesWidth();
-  m_height = platesParameters->platesHeight();
-  m_thickness = platesParameters->platesThickness();
+  m_tungstenWidth = platesParameters->platesWidth();
+  m_tungstenHeight = platesParameters->platesHeight();
+  m_tungstenThickness = platesParameters->platesThickness();
   m_material = m_materials->getMaterial(platesParameters->platesMaterial());
 
   m_nBasesPerModule = generalParameters->nBasesPerModule();
@@ -57,6 +57,8 @@ EmulsionPlates::getParameters()
   m_firstBaseZ     = generalParameters->firstBaseZ();
   m_lastBaseZ      = generalParameters->lastBaseZ();
 
+  m_supportElements = supportParameters->supportElements();
+
   m_detectorManager->numerology().setNumBasesPerModule(m_nBasesPerModule);
 }
 
@@ -66,6 +68,27 @@ EmulsionPlates::preBuild()
   // create child element
   m_base = new EmulsionBase("Base", m_detectorManager, m_geometryManager, m_materials);
 
+  double width = m_tungstenWidth/2;
+  double height = m_tungstenHeight/2;
+  // double thickness = m_tungstenThickness/2;
+  double minZ = -m_tungstenThickness/2;
+  double maxZ = m_tungstenThickness/2;
+
+  for (auto e : m_supportElements)
+  {
+    width = std::max(width, std::max(std::abs(e.x + e.dx/2),std::abs(e.x - e.dx/2)));
+    height = std::max(height, std::max(std::abs(e.y + e.dy/2),std::abs(e.y - e.dy/2)));
+    minZ = std::min(minZ, e.z - e.dz/2);
+    maxZ = std::max(maxZ, e.z + e.dz/2);
+    const GeoBox* supportShape = new GeoBox(e.dx/2, e.dy/2, e.dz/2);
+    GeoLogVol* supportLog = new GeoLogVol(e.label, supportShape, m_materials->getMaterial(e.mat));
+    m_supportVolumes.push_back(supportLog);
+  }
+
+  m_width = 2 * width;
+  m_height = 2 * height;
+  m_thickness = maxZ - minZ;
+  m_zShift = -(maxZ + minZ)/2;
 
   // Build a box to hold everything
   const GeoBox* platesShape = new GeoBox(0.5*m_width, 0.5*m_height, 0.5*m_thickness);
@@ -97,7 +120,7 @@ EmulsionPlates::build(EmulsionIdentifier id)
     for (int base = 0; base < m_nBasesPerModule; base++)
     {
       id.setBase(base);
-      GeoAlignableTransform* theTransform = new GeoAlignableTransform( GeoTrf::Translate3D {0.0, 0.0, m_firstBaseZ + ((m_lastBaseZ - m_firstBaseZ)/(nBasesTotal-1))*nBases++} );
+      GeoAlignableTransform* theTransform = new GeoAlignableTransform( GeoTrf::Translate3D {0.0, 0.0, m_zShift + m_firstBaseZ + ((m_lastBaseZ - m_firstBaseZ)/(nBasesTotal-1))*nBases++} );
       plates->add(theTransform);
       plates->add(new GeoNameTag("Base#"+intToString(module*100 + base)));
       plates->add(new GeoIdentifierTag(module*100 + base));
@@ -108,5 +131,16 @@ EmulsionPlates::build(EmulsionIdentifier id)
     m_detectorManager->numerology().useModule(module);
   }
 
+  auto iv = m_supportVolumes.begin();
+  for (auto e : m_supportElements)
+  {
+    GeoVPhysVol* pv = new GeoPhysVol(*iv);
+    GeoTransform* theTransform = new GeoTransform( GeoTrf::Translate3D {e.x, e.y, e.z + m_zShift});
+    plates->add(theTransform);
+    plates->add(new GeoNameTag(e.label));
+    plates->add(pv);
+    iv++;
+  }
+
   return plates;
 }
diff --git a/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.h b/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.h
index b827265b9f0753fd834f24d0d051eb02ba2a5675..431aecbf467997cc8a096547e15bca6c5c56c4fb 100644
--- a/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.h
+++ b/Neutrino/NeutrinoDetDescr/EmulsionGeoModel/src/EmulsionPlates.h
@@ -6,6 +6,7 @@
 #define EMULSIONGEOMODEL_EMULSIONPLATES_H
 
 #include "EmulsionComponentFactory.h"
+#include "EmulsionSupportParameters.h"
 #include "EmulsionBase.h"
 #include "GeoPrimitives/GeoPrimitives.h"
 #include "GeoModelKernel/GeoDefinitions.h"
@@ -28,6 +29,7 @@ public:
   double thickness() const {return m_thickness;}
   double width()     const {return m_width;}
   double height()    const {return m_height;}
+  double shift()     const {return m_zShift;}
 
   virtual GeoVPhysVol * build(EmulsionIdentifier id);
   
@@ -38,6 +40,10 @@ private:
   double m_thickness;
   double m_width;
   double m_height;
+  double m_tungstenThickness;
+  double m_tungstenWidth;
+  double m_tungstenHeight;
+  double m_zShift;
   const GeoMaterial * m_material;
 
   int m_nModules;
@@ -45,7 +51,10 @@ private:
   double m_firstBaseZ;
   double m_lastBaseZ;
 
+  std::vector<EmulsionSupportParameters::SupportElement> m_supportElements;
+
   EmulsionBase* m_base;
+  std::vector<GeoLogVol*> m_supportVolumes;
 
 };