diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 98ae91b63e6d04c0c21c81edc78f343b83ac1b1b..4f7148efd0b4705cd212dac3f45fcf6843560a3a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -158,7 +158,7 @@ detector_documentation:
     - bash bin/build_documentation | tee doc/detector.md
       #- |
       #  xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee  doc/detector.md
-      #  xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
+      #  xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/ip6/definitions.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
       #  for afile in ${DETECTOR_PATH}/compact/*.xml ; do
       #    xmllint --format --xpath '//comment/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
       #  done
@@ -199,7 +199,7 @@ overlap_check_tgeo:
   script:
     ## disable fibers in ECAL for normal overlap check
     - sed -i '/<fiber/,+6d' ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
-    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward_ZDC_Ecal_WSciFi.xml
+    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward/ZDC_Ecal_WSciFi.xml
     - checkOverlaps -c ${DETECTOR_PATH}/athena.xml  | tee doc/overlap_check_tgeo.out 
     - echo "$(cat doc/overlap_check_tgeo.out | grep ovlp | wc -l) overlaps..."
     - if [[ "$(cat doc/overlap_check_tgeo.out | grep ovlp | wc -l)" -gt "0" ]] ; then echo "Overlaps exist!" && false ; fi
@@ -211,7 +211,7 @@ overlap_check_geant4:full_fast:
   script:
     ## disable fibers in ECAL for normal overlap check
     - sed -i '/<fiber/,+6d' ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
-    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward_ZDC_Ecal_WSciFi.xml
+    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward/ZDC_Ecal_WSciFi.xml
     ## reduce the number of fibers in Hadron EMCal for overlap check
     ## not needed, as we are running with a different setup now
     #- sed -i 's/radius="EcalEndcapP_FiberRadius"/radius="EcalEndcapP_FiberRadius*10"/' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba7a3d4e4056748db8eae65a694852306c1652ae..adc33bec800d74511d5133812752317c0841c302 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,7 +13,14 @@ set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
 
 find_package(DD4hep REQUIRED COMPONENTS DDCore DDG4)
-find_package(Acts REQUIRED COMPONENTS Core PluginIdentification PluginTGeo PluginDD4hep )
+find_package(ActsDD4hep)
+if(ActsDD4hep_FOUND)
+  add_compile_definitions(USE_ACTSDD4HEP)
+  set(ActsDD4hep ActsDD4hep::ActsDD4hep)
+else()
+  find_package(Acts REQUIRED COMPONENTS Core PluginIdentification PluginTGeo PluginDD4hep)
+  set(ActsDD4hep ActsCore ActsPluginDD4hep)
+endif()
 find_package(fmt REQUIRED)
 
 ### temporary preprocessor macro to easily switch on/off IRT code # TODO: get rid of `WITH_IRT` when IRT is integrated in CI
@@ -50,10 +57,10 @@ dd4hep_add_plugin(${a_lib_name} SOURCES
   src/SimpleDiskDetector_geo.cpp
   src/SolenoidCoil_geo.cpp
   src/TrapEndcapTracker_geo.cpp
-  USES ActsCore ActsPluginDD4hep
+  USES ${ActsDD4hep}
   )
 target_link_libraries(${a_lib_name}
-  PUBLIC DD4hep::DDCore  DD4hep::DDRec fmt::fmt #IRT
+  PUBLIC DD4hep::DDCore  DD4hep::DDRec fmt::fmt IRT
   )
 
 #-----------------------------------------------------------------------------------
diff --git a/athena.xml b/athena.xml
index 3539b477d271ccbcab02cb52861e393fd9844925..4abeab6bdda4cd96156039ed49918c2051f5ffeb 100644
--- a/athena.xml
+++ b/athena.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -84,17 +84,6 @@
      - and more...
   </documentation>
 
-  <comment>
-      Beamline elements
-      -----------------
-  </comment>
-  <include ref="ip6/forward_ion_beamline.xml"/>
-  <include ref="ip6/beampipe_hadron_B0.xml" />
-  <include ref="ip6/beampipe.xml" />
-  <include ref="ip6/inner_vacuum_FF_magnets.xml"/>
-
-
-
   <documentation level="5">
      ## Main magnet
 
@@ -126,70 +115,17 @@
   <documentation level="11">
   ## Far foward detectors
   </documentation>
-  <include ref="ip6/B0_tracker.xml"/>
-  <include ref="ip6/B0_preshower.xml"/>
-  <include ref="ip6/far_forward_offM_tracker.xml"/>
-  <include ref="ip6/far_forward_detectors.xml"/>
-  <include ref="ip6/roman_pots_eRD24_design.xml"/>
-
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
+  <include ref="ip6/central_beampipe.xml"/>
+
+  <documentation level="11">
+  ## Far foward detectors
+  </documentation>
+  <include ref="ip6/far_forward.xml"/>
+
+  <documentation level="11">
+  ## Far backward detectors
+  </documentation>
+  <include ref="ip6/far_backward.xml"/>
 
   <comment>
       FB elements
diff --git a/bin/generate_prim_file b/bin/generate_prim_file
index a0593210bd2e13fd48f68ba165f57bee0e4c18b3..063c47439f22098cc4fab2675f9a9e65370948d5 100755
--- a/bin/generate_prim_file
+++ b/bin/generate_prim_file
@@ -52,7 +52,7 @@ parser.add_argument('-t', '--tag', type=str,dest='file_tag',
         help='Output file tag')
 
 parser.add_argument('--timeout', type=int,
-        default=60,
+        default=3600,
         help='Timeout in seconds')
 
 parser.add_argument('passthrough', nargs='*')
diff --git a/compact/definitions.xml b/compact/definitions.xml
index 449fcab54c508472e93fb964ca90a1d855f16d88..f87cd72ec0056e7d187f19258afb30500a309190 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -231,38 +231,78 @@ The unused IDs below are saved for future use.
     <constant name="SolenoidYoke_ID"         value="142"/>
 
     <documentation> 
-      #### (150-169) Far Forward  Detectors
+      #### (150-169) Far Forward Detectors
 
       - Forward Roman Pot     ID: 150
       - Forward B0 Tracker    ID: 151
       - Zero Degree Cal. Ecal ID: 160
       - Zero Degree Cal. Hcal ID: 161
 
-      TODO: A lot of the  repeated ID's below should be pushed into a single detector
+      TODO: A lot of the repeated ID's below should be pushed into a single detector
     </documentation>
     <constant name="B0Tracker_Station_1_ID"          value="150"/>
     <constant name="B0Tracker_Station_2_ID"          value="151"/>
     <constant name="B0Tracker_Station_3_ID"          value="152"/>
     <constant name="B0Tracker_Station_4_ID"          value="153"/>
     <constant name="B0Preshower_Station_1_ID"        value="154"/>
-	  <constant name="ForwardRomanPot_Station_1_ID"    value="155"/>
+    <constant name="ForwardRomanPot_Station_1_ID"    value="155"/>
     <constant name="ForwardRomanPot_Station_2_ID"    value="156"/>
-	  <constant name="ForwardOffMTracker_station_1_ID" value="159"/>
+    <constant name="ForwardOffMTracker_station_1_ID" value="159"/>
     <constant name="ForwardOffMTracker_station_2_ID" value="160"/>
     <constant name="ForwardOffMTracker_station_3_ID" value="161"/>
     <constant name="ForwardOffMTracker_station_4_ID" value="162"/>
-    <comment> TODO naming consistency </comment>
-    <constant name="ffi_ZDC_ECAL_ID"                 value="163"/>
-    <constant name="ffi_ZDC_HCAL_ID"                 value="164"/>
+    <constant name="ZDCEcal_ID"                      value="163"/>
+    <constant name="ZDCHcal_ID"                      value="164"/>
     <constant name="VacuumMagnetElement_1_ID"        value="165"/>
 
     <documentation> 
-      #### (170-189) Forward Beamline Magnets
+      #### (170-189) Far Forward Beamline Magnets
     </documentation>
+    <constant name="B0PF_ID"  value="170"/>
+    <constant name="B0APF_ID" value="171"/>
+    <constant name="Q1APF_ID" value="172"/>
+    <constant name="Q1BPF_ID" value="173"/>
+    <constant name="Q2PF_ID"  value="174"/>
+    <constant name="B1PF_ID"  value="175"/>
+    <constant name="B1APF_ID" value="176"/>
+    <constant name="B2PF_ID"  value="177"/>
+    <constant name="Q0EF_ID"  value="180"/>
+    <constant name="Q1EF_ID"  value="181"/>
 
     <documentation> 
-      #### (190-199) Backward Beamline Magnets
+      #### (190-199) Far Backward Beamline Magnets
+
+      - Low-Q2 Tagger 1 Tracker      ID: 195
+      - Low-Q2 Tagger 1 Calorimeter  ID: 196
+      - Low-Q2 Tagger 2 Tracker      ID: 198
+      - Low-Q2 Tagger 2 Calorimeter  ID: 199
+
+      TODO: A lot of the repeated ID's below should be pushed into a single detector
+    </documentation>
+    <constant name="LumiCollimator_ID"       value="190"/>
+    <constant name="LumiDipole_ID"           value="191"/>
+    <constant name="TaggerTracker_1_ID"      value="195"/>
+    <constant name="TaggerCalorimeter_1_ID"  value="196"/>
+    <constant name="TaggerTracker_2_ID"      value="198"/>
+    <constant name="TaggerCalorimeter_2_ID"  value="199"/>
+
+    <documentation> 
+      #### (200-219) Far Backward Beamline Magnets
     </documentation>
+    <constant name="Pipe_to_Q1eR_ID"        value="200"/>
+    <constant name="Magnet_Q1eR_ID"         value="201"/>
+    <constant name="Pipe_in_Q1eR_ID"        value="202"/>
+    <constant name="Pipe_Q1eR_to_Q2eR_ID"   value="203"/>
+    <constant name="Magnet_Q2eR_ID"         value="204"/>
+    <constant name="Pipe_in_Q2eR_ID"        value="205"/>
+    <constant name="Pipe_Q2eR_to_B2AeR_ID"  value="206"/>
+    <constant name="Magnet_B2AeR_ID"        value="207"/>
+    <constant name="Pipe_in_B2AeR_ID"       value="208"/>
+    <constant name="Pipe_B2AeR_to_B2BeR_ID" value="209"/>
+    <constant name="Magnet_B2BeR_ID"        value="210"/>
+    <constant name="Pipe_in_B2BeR_ID"       value="211"/>
+    <constant name="Magnet_Q3eR_ID"         value="212"/>
+    <constant name="Vacuum_in_Q3eR_ID"      value="213"/>
 
     <documentation>
 ## Detector Definition Parameters 
diff --git a/compact/subsystem_views/calorimeters.xml b/compact/subsystem_views/calorimeters.xml
index 824bc12dc467691410b8dc096ab1448ff457c1b2..99cb334b95bc7e881d30f12c55153818826d3337 100644
--- a/compact/subsystem_views/calorimeters.xml
+++ b/compact/subsystem_views/calorimeters.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -86,7 +86,7 @@
       Beamline elements
       -----------------
   </comment>
-  <include ref="ip6/beampipe.xml" />
+  <include ref="ip6/central_beampipe.xml" />
 
   <documentation level="5">
      ## Main magnet
@@ -101,14 +101,6 @@
   <include ref="compact/ecal.xml"/>
   <include ref="compact/hcal.xml"/>
 
-  <comment>
-      FB elements
-      -----------
-      None (TODO)
-
-      What is FB?
-  </comment>
-
   <readouts>
   </readouts>
 
diff --git a/compact/subsystem_views/dirc_only.xml b/compact/subsystem_views/dirc_only.xml
index 89ecc4d25958945eeafc13b7f4422f0bbcccb095..109cd11b5e81c643f9c859f8b73bafd360f8d18a 100644
--- a/compact/subsystem_views/dirc_only.xml
+++ b/compact/subsystem_views/dirc_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
diff --git a/compact/subsystem_views/drich_only.xml b/compact/subsystem_views/drich_only.xml
index 572d49391a018f8c4b13fee7d6eaa6e245fe50a0..baeb2df8dd96531921c7094269178232f5dd9f67 100644
--- a/compact/subsystem_views/drich_only.xml
+++ b/compact/subsystem_views/drich_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
diff --git a/compact/subsystem_views/inner_detector.xml b/compact/subsystem_views/inner_detector.xml
index c1d211777f8ae77d16d33e8e67e5edb1711c57da..bc3bd675db68d0784256dd5cca9ea4c60c176b9a 100644
--- a/compact/subsystem_views/inner_detector.xml
+++ b/compact/subsystem_views/inner_detector.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -87,7 +87,7 @@
       Beamline elements
       -----------------
   </comment>
-  <include ref="ip6/beampipe.xml" />
+  <include ref="ip6/central_beampipe.xml" />
 
   <documentation level="5">
      ## Main magnet
@@ -98,7 +98,6 @@
   <documentation level="10">
     ## Central tracking detectors
   </documentation>
-
   <include ref="compact/tracking_config_deathvalley.xml"/>
 
   <documentation level="10">
@@ -106,81 +105,6 @@
   </documentation>
   <include ref="compact/pid_config_deathvalley.xml"/>
 
-  <documentation level="10">
-  ## Central calorimetry
-  </documentation>
-
-  <documentation level="11">
-  ## Far foward detectors
-  </documentation>
-
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
-
-  <comment>
-      FB elements
-      -----------
-      None (TODO)
-
-      What is FB?
-  </comment>
-
   <readouts>
   </readouts>
 
diff --git a/compact/subsystem_views/ip6.xml b/compact/subsystem_views/ip6.xml
index 65477121623c21590f163ab33d61d39c8d098ef5..780b47ea15941fd9d3bf1482ecc58c3368b2d2c5 100644
--- a/compact/subsystem_views/ip6.xml
+++ b/compact/subsystem_views/ip6.xml
@@ -1,153 +1,102 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lccdd>
+<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0"
+       xmlns:xs="http://www.w3.org/2001/XMLSchema"
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
+
+       <debug>
+         <type name="surface"       value="0"/>
+         <type name="material"      value="0"/>
+         <type name="readout"       value="0"/>
+         <type name="segmentation"  value="0"/>
+         <type name="limits"        value="0"/>
+         <type name="region"        value="0"/>
+         <type name="includes"      value="0"/>
+       </debug>
+
+  <documentation level="-1">
+  # Athena Detector 
+  - https://eicweb.phy.anl.gov/EIC/detectors/athena.git 
+  - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git
+  </documentation>
+
+  <!-- Some information about detector  -->
+  <info name="Athena Detector" title="Athena Detector"
+        author="Athena Collaboration"
+        url="https://eicweb.phy.anl.gov/EIC/detectors/athena.git"
+        status="development"
+        version="v1 2021-03-16">
+  <comment> Athena </comment>
+  </info>
   <define>
-    <constant name="Pi" value="3.14159265359"/>
-    <constant name="world_side" value="30*m"/>
-    <constant name="world_x" value="world_side"/>
-    <constant name="world_y" value="world_side"/>
-    <constant name="world_z" value="100*m"/>
-    <constant name="BeamPipeB0_ID" value="1"/>
-    <constant name="BeamPipe_ID" value="2"/>
-
-    <include ref="ip6/ip6_defs.xml" />
-    <comment> Change this to 275/100/41 to change the field setup</comment>
-    <include ref="ip6/far_forward_fields_275.xml" />
-
-    <comment> 
-      
-      =====================================
-      (150-169) Far Forward  Detectors
-      =====================================
-
-      Forward B0 Tracker    ID: 150 - 153
-      Forward Roman Pot     ID: 155 - 158
-
-      Zero Degree Cal. Ecal ID: 163
-      Zero Degree Cal. Hcal ID: 164
-
-    </comment>
-    <constant name="B0Tracker_Station_1_ID"          value="150"/>
-    <constant name="B0Tracker_Station_2_ID"          value="151"/>
-    <constant name="B0Tracker_Station_3_ID"          value="152"/>
-    <constant name="B0Tracker_Station_4_ID"          value="153"/>
-    <constant name="B0Preshower_Station_1_ID"        value="154"/>
-    <constant name="ForwardRomanPot_Station_1_ID"    value="155"/>
-    <constant name="ForwardRomanPot_Station_2_ID"    value="156"/>
-
-    <constant name="BeamOrbitTracker_station_1_ID"    value="157"/>
-    <constant name="BeamOrbitTracker_station_2_ID"    value="158"/>    
-	  <constant name="ForwardOffMTracker_station_1_ID" value="159"/>
-    <constant name="ForwardOffMTracker_station_2_ID" value="160"/>
-    <constant name="ForwardOffMTracker_station_3_ID" value="161"/>
-    <constant name="ForwardOffMTracker_station_4_ID" value="162"/>
-    <constant name="ffi_ZDC_ECAL_ID"       value="163"/>
-    <constant name="ffi_ZDC_HCAL_ID"       value="164"/>
-
-	<constant name="VacuumMagnetElement_1_ID" value="165"/>
-
-    <constant name="tracker_region_zmax" value="10*m"/>
-    <constant name="tracker_region_rmax" value="1*m"/>
-    
-
-    <comment> 
-        =====================================
-      (170-189) Forward Beamline Magnets
-        =====================================
-    </comment>
-
-    <comment> 
-        =====================================
-      (190-199) Backward Beamline Magnets
-        =====================================
-    </comment>
-
+  <documentation level="2">
+      ## Main Constant Definitions
+
+      The ip6 (or other ip) defines should be included first.
+      These files have only a define tags.
+  </documentation>
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
+    <include ref="compact/definitions.xml" />
   </define>
 
   <includes>
-    <gdmlFile ref="ip6/elements.xml"/>
-    <gdmlFile ref="ip6/materials.xml"/>
+    <gdmlFile ref="compact/elements.xml"/>
+    <gdmlFile ref="compact/materials.xml"/>
+    <file     ref="compact/optical_materials.xml"/>
   </includes>
 
+  <limits>
+    <limitset name="EICBeamlineLimits">
+      <limit name="step_length_max" particles="*" value="1.0" unit="mm" />
+      <limit name="track_length_max" particles="*" value="1.0" unit="mm" />
+      <limit name="time_max" particles="*" value="0.1" unit="ns" />
+      <limit name="ekin_min" particles="*" value="0.001" unit="MeV" />
+      <limit name="range_min" particles="*" value="0.1" unit="mm" />
+    </limitset>
+    <limitset name="cal_limits">
+      <limit name="step_length_max" particles="*" value="5.0" unit="mm"/>
+    </limitset>
+  </limits>
+
   <display>
   <include ref="compact/colors.xml" />
+  <!--include ref="compact/colors2.xml"/-->
   <include ref="compact/display.xml" />
+  <!--include ref="compact/display_detailed.xml"/-->
   </display>
 
-  <include ref="ip6/beampipe.xml" />
-  <include ref="ip6/forward_ion_beamline.xml" />
-  <include ref="ip6/beampipe_hadron_B0.xml" />
-  <include ref="ip6/B0_tracker.xml"/>
-  <include ref="ip6/B0_preshower.xml"/>
-  <include ref="ip6/far_forward_offM_tracker.xml"/>
-  <include ref="ip6/far_forward_detectors.xml"/>
-  <include ref="ip6/roman_pots_eRD24_design.xml"/>
-  <!--
-    Old BOM not used
-  <include ref="ip6/beam_orbit_tracker.xml"/>
-  -->
-  <include ref="ip6/inner_vacuum_FF_magnets.xml"/>
-
-  <!--
-    Magnet file not used for some reason
-  <include ref="ip6/magnets.xml" />
-  -->
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B0PF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-	  <coefficient coefficient="B0APF_GradientMax" skew="0.0*tesla"/>
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-	  <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-	  <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/m"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
+  <documentation level="0">
+    ## Detector Subsystems
+
+    ### IP Subsystems
+
+    The interaction point subsystems are included before the central detector subsystems.
+    This is becuase the IP subsystems, for exmaple the beampipe, will define paramters
+    which are subsquently used in the central detector construction -- e.g. the vertex tracker
+    uses the beampipe OD to help define its placement. 
+
+    The IP subsystems include the Far forward and backward regions. The list of subsystem includes:
+     - Interaction region beampipe 
+     - B0 tracker
+     - Off-momentum tracker
+     - Far forward roman pots
+     - Zero Degree Calorimeter
+     - Beam line magnets.
+     - and more...
+  </documentation>
+
+  <documentation level="11">
+  ## Far foward detectors
+  </documentation>
+  <include ref="ip6/central_beampipe.xml"/>
+
+  <documentation level="11">
+  ## Far foward detectors
+  </documentation>
+  <include ref="ip6/far_forward.xml"/>
+
+  <documentation level="11">
+  ## Far backward detectors
+  </documentation>
+  <include ref="ip6/far_backward.xml"/>
 
 </lccdd>
diff --git a/compact/subsystem_views/pfrich_only.xml b/compact/subsystem_views/pfrich_only.xml
index 3fd28f9285e1125c43f10d65dce684c38042c49a..0f4c0e2081791f5d8459e295898218c89336247c 100644
--- a/compact/subsystem_views/pfrich_only.xml
+++ b/compact/subsystem_views/pfrich_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -65,7 +65,7 @@
   <documentation level="10">
     ## pfRICH only
   </documentation>
-  <include ref="ip6/beampipe.xml" />
+  <include ref="ip6/central_beampipe.xml" />
   <include ref="compact/pfrich.xml" />
 
 </lccdd>
diff --git a/compact/subsystem_views/pid_only.xml b/compact/subsystem_views/pid_only.xml
index 44207a0c2328d1f1f2c1030fdeee36a9424dd18b..0d5443ad79b6238ba5f0a0a2ca35b0a3190da955 100644
--- a/compact/subsystem_views/pid_only.xml
+++ b/compact/subsystem_views/pid_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -86,16 +86,7 @@
       Beamline elements
       -----------------
   </comment>
-  <include ref="ip6/beampipe.xml" />
-  <comment>
-      Main magnet
-      -----------
-      Note: When changing magnet, also select dimensions in definitions.xml.
-  </comment>
-
-  <documentation level="10">
-    ## Central tracking detectors
-  </documentation>
+  <include ref="ip6/central_beampipe.xml" />
 
   <comment>
       PID detectors
@@ -103,77 +94,6 @@
   </comment>
   <include ref="compact/pid_config_deathvalley.xml"/>
 
-
-  <comment>
-      FF elements
-      -----------
-  </comment>
-
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
-
-  <comment>
-      FB elements
-      -----------
-      None (TODO)
-  </comment>
-
   <readouts>
   </readouts>
 
diff --git a/compact/subsystem_views/tof_only.xml b/compact/subsystem_views/tof_only.xml
index 4392434c4ad02308f73ef6647a2e69e5c44073b1..dcbdba9dc7f1e4196cc414e341a721f56785f285 100644
--- a/compact/subsystem_views/tof_only.xml
+++ b/compact/subsystem_views/tof_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -65,7 +65,7 @@
   <documentation level="10">
     ## TOF only
   </documentation>
-  <include ref="ip6/beampipe.xml" />
+  <include ref="ip6/central_beampipe.xml" />
   <include ref="compact/tof_barrel.xml" />
 
 </lccdd>
diff --git a/compact/subsystem_views/tracking_only.xml b/compact/subsystem_views/tracking_only.xml
index f3195231431d0f5fe1758ff3a1c76653c792e93a..5bef5df898cb9d25dd032f28e5f2abf2a818da47 100644
--- a/compact/subsystem_views/tracking_only.xml
+++ b/compact/subsystem_views/tracking_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -86,14 +86,7 @@
       Beamline elements
       -----------------
   </comment>
-  <include ref="ip6/beampipe.xml" />
-
-  <comment>
-      Main magnet
-      -----------
-      Note: When changing magnet, also select dimensions in definitions.xml.
-  </comment>
-  <!--include ref="compact/solenoid.xml"/-->
+  <include ref="ip6/central_beampipe.xml" />
 
   <comment>
       Central tracking detectors
@@ -102,74 +95,11 @@
   <!--include ref="compact/tracking_config_canyonlands.xml"/-->
   <include ref="compact/tracking_config_deathvalley.xml"/>
 
+  <comment>
       PID detectors
       -------------
-  <include ref="compact/tof_barrel.xml"/>
-
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
-
-  <comment>
-      FB elements
-      -----------
-      None (TODO)
   </comment>
+  <include ref="compact/tof_barrel.xml"/>
 
   <readouts>
   </readouts>
diff --git a/compact/subsystem_views/vertex_only.xml b/compact/subsystem_views/vertex_only.xml
index 8c818e8f2faa302dc24184e47e130d58652a54a5..46f9e46e3a50827e5ebc93948a4ca670c3f07972 100644
--- a/compact/subsystem_views/vertex_only.xml
+++ b/compact/subsystem_views/vertex_only.xml
@@ -33,8 +33,8 @@
       The ip6 (or other ip) defines should be included first.
       These files have only a define tags.
   </documentation>
-    <include ref="ip6/ip6_defs.xml" /> 
-    <include ref="ip6/far_forward_fields_275.xml" />
+    <include ref="ip6/definitions.xml" /> 
+    <include ref="ip6/far_forward/fields_275.xml" />
     <include ref="compact/definitions.xml" />
   </define>
 
@@ -82,95 +82,12 @@
      - and more...
   </documentation>
 
-  <comment>
-      Beamline elements
-      -----------------
-  </comment>
-
-  <comment>
-      Main magnet
-      -----------
-      Note: When changing magnet, also select dimensions in definitions.xml.
-  </comment>
-  <!--include ref="compact/solenoid.xml"/-->
-
   <comment>
       Central tracking detectors
       --------------------------
   </comment>
   <include ref="compact/vertex_tracker_3layers.xml"/>
 
-  <comment>
-      PID detectors
-      -------------
-  </comment>
-
-
-  <fields>
-    <field name="B0PF_Magnet" type="MultipoleMagnet">
-      <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
-      <rotation x="0" y="B0PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
-      <coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="B0APF_Magnet" type="MultipoleMagnet">
-      <position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
-      <rotation x="0" y="B0APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
-      <coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
-      <!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
-    </field>
-    <field name="Q1APF_Magnet" type="MultipoleMagnet">
-      <position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
-      <rotation x="0" y="Q1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
-      <coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q1BPF_Magnet" type="MultipoleMagnet">
-      <position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
-      <rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
-      <coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="Q2PF_Magnet" type="MultipoleMagnet">
-      <position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
-      <rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
-      <shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
-      <coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1PF_Magnet" type="MultipoleMagnet">
-      <position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
-      <rotation x="0" y="B1PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
-      <coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B1APF_Magnet" type="MultipoleMagnet">
-      <position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
-      <rotation x="0" y="B1APF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
-      <coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-    <field name="B2PF_Magnet" type="MultipoleMagnet">
-      <position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
-      <rotation x="0" y="B2PF_RotationAngle" z="0"/>
-      <shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
-      <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
-      <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
-    </field>
-  </fields>
-
-  <comment>
-      FB elements
-      -----------
-      None (TODO)
-  </comment>
-
   <readouts>
   </readouts>
 
diff --git a/src/BarrelBarDetectorWithSideFrame_geo.cpp b/src/BarrelBarDetectorWithSideFrame_geo.cpp
index d7911bde8a54ec3cc8fde728a7146c22fe61e32a..7b2adc2956f9f8f3c725e839cd5944c9c08a3a85 100644
--- a/src/BarrelBarDetectorWithSideFrame_geo.cpp
+++ b/src/BarrelBarDetectorWithSideFrame_geo.cpp
@@ -16,6 +16,7 @@
 #include "DDRec/DetectorData.h"
 #include "DDRec/Surface.h"
 #include "XML/Layering.h"
+#include <array>
 
 using namespace std;
 using namespace dd4hep;
diff --git a/src/BarrelTrackerWithFrame_geo.cpp b/src/BarrelTrackerWithFrame_geo.cpp
index 64210bc5a18ba330e17232d20f7bb4fdea771045..9470042e594c5e8808495c308c2bc52f89deae6c 100644
--- a/src/BarrelTrackerWithFrame_geo.cpp
+++ b/src/BarrelTrackerWithFrame_geo.cpp
@@ -13,10 +13,15 @@
 #include "DDRec/DetectorData.h"
 #include "XML/Layering.h"
 #include "XML/Utilities.h"
+#include <array>
 
+#if defined(USE_ACTSDD4HEP)
+#include "ActsDD4hep/ActsExtension.hpp"
+#include "ActsDD4hep/ConvertMaterial.hpp"
+#else
 #include "Acts/Plugins/DD4hep/ActsExtension.hpp"
 #include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp"
-
+#endif
 
 using namespace std;
 using namespace dd4hep;
diff --git a/src/CompositeTracker_geo.cpp b/src/CompositeTracker_geo.cpp
index 33ee7407e77c8a866f16dcd75d30b63e2ec57c17..22f98b9152b568b3376c4a3b3701f20dab8b2062 100644
--- a/src/CompositeTracker_geo.cpp
+++ b/src/CompositeTracker_geo.cpp
@@ -11,7 +11,11 @@
 #include "DD4hep/Printout.h"
 #include "XML/Utilities.h"
 
+#if defined(USE_ACTSDD4HEP)
+#include "ActsDD4hep/ActsExtension.hpp"
+#else
 #include "Acts/Plugins/DD4hep/ActsExtension.hpp"
+#endif
 
 using namespace dd4hep;
 using namespace dd4hep::detail;
diff --git a/src/CylinderTrackerBarrel_geo.cpp b/src/CylinderTrackerBarrel_geo.cpp
index 071b7ee6b18409fc3299f66eaebf33d331f06795..b8141eb31050834cc50c96e5900fc1c14c16ce05 100644
--- a/src/CylinderTrackerBarrel_geo.cpp
+++ b/src/CylinderTrackerBarrel_geo.cpp
@@ -2,11 +2,17 @@
 // Specialized generic detector constructor
 //==========================================================================
 
-#include "Acts/Plugins/DD4hep/ActsExtension.hpp"
-#include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp"
 #include "DD4hep/DetFactoryHelper.h"
 #include "DD4hep/Printout.h"
 
+#if defined(USE_ACTSDD4HEP)
+#include "ActsDD4hep/ActsExtension.hpp"
+#include "ActsDD4hep/ConvertMaterial.hpp"
+#else
+#include "Acts/Plugins/DD4hep/ActsExtension.hpp"
+#include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp"
+#endif
+
 using namespace std;
 using namespace dd4hep;
 using namespace dd4hep::detail;
diff --git a/src/FieldMapBrBz.cpp b/src/FieldMapBrBz.cpp
index b3c5af11cfb73aed5775ab89838c0c29e7978253..7215411b309311d8d152ad695abb579b7f801483 100644
--- a/src/FieldMapBrBz.cpp
+++ b/src/FieldMapBrBz.cpp
@@ -195,7 +195,7 @@ static Ref_t create_field_map_brbz(Detector & /*lcdd*/, xml::Handle_t handle)
     if( !fs::exists(fs::path(field_map_file))  ) {
         printout(ERROR, "FieldMapBrBz", "file " + field_map_file + " does not exist");
         printout(ERROR, "FieldMapBrBz", "use a FileLoader plugin before the field element");
-        std::quick_exit(1);
+        std::_Exit(EXIT_FAILURE);
     }
 
     auto map = new FieldMapBrBz(field_type);
diff --git a/src/FileLoaderHelper.h b/src/FileLoaderHelper.h
index 0d84d2cb10d35b134c15506da4db327e1ab3da60..821350cdbec5c0ea2108e28cd18e8177de6785fc 100644
--- a/src/FileLoaderHelper.h
+++ b/src/FileLoaderHelper.h
@@ -54,7 +54,7 @@ EnsureFileFromURLExists(
     if (fs::create_directories(parent_path) == false) {
       printout(ERROR, "FileLoader", "parent path " + parent_path.string() + " cannot be created");
       printout(ERROR, "FileLoader", "check permissions and retry");
-      std::quick_exit(1);
+      std::_Exit(EXIT_FAILURE);
     }
   }
 
@@ -85,7 +85,7 @@ EnsureFileFromURLExists(
           } catch (const fs::filesystem_error&) {
             printout(ERROR, "FileLoader", "unable to link from " + hash_path.string() + " to " + cache_hash_path.string());
             printout(ERROR, "FileLoader", "check permissions and retry");
-            std::quick_exit(1);
+            std::_Exit(EXIT_FAILURE);
           }
           break;
         }
@@ -102,7 +102,8 @@ EnsureFileFromURLExists(
     if (!fs::exists(hash_path)) {
       printout(ERROR, "FileLoader", "unable to run cmd " + cmd);
       printout(ERROR, "FileLoader", "check command and retry");
-      std::quick_exit(1);
+      printout(ERROR, "FileLoader", "hint: allow insecure connections with -k");
+      std::_Exit(EXIT_FAILURE);
     }
   }
 
@@ -119,14 +120,14 @@ EnsureFileFromURLExists(
         if (fs::remove(file_path) == false) {
           printout(ERROR, "FileLoader", "unable to remove symlink " + file_path.string());
           printout(ERROR, "FileLoader", "check permissions or remove manually");
-          std::quick_exit(1);
+          std::_Exit(EXIT_FAILURE);
         }
       }
     } else {
       // file exists but not symlink
       printout(ERROR, "FileLoader", "will not remove actual file " + file_path.string());
       printout(ERROR, "FileLoader", "check content, remove manually, and retry");
-      std::quick_exit(1);
+      std::_Exit(EXIT_FAILURE);
     }
   }
   // file_path now does not exist
@@ -138,6 +139,6 @@ EnsureFileFromURLExists(
   } catch (const fs::filesystem_error&) {
     printout(ERROR, "FileLoader", "unable to link from " + file_path.string() + " to " + hash_path.string());
     printout(ERROR, "FileLoader", "check permissions and retry");
-    std::quick_exit(1);
+    std::_Exit(EXIT_FAILURE);
   }
 }
diff --git a/src/SimpleDiskDetector_geo.cpp b/src/SimpleDiskDetector_geo.cpp
index 7381a06474c49e24b235f8ad5185291afbc093cd..114c58b51de86d56da2e3afca7ff9160b5097238 100644
--- a/src/SimpleDiskDetector_geo.cpp
+++ b/src/SimpleDiskDetector_geo.cpp
@@ -15,8 +15,14 @@
 //
 //==========================================================================
 #include "DD4hep/DetFactoryHelper.h"
+
+#if defined(USE_ACTSDD4HEP)
+#include "ActsDD4hep/ActsExtension.hpp"
+#include "ActsDD4hep/ConvertMaterial.hpp"
+#else
 #include "Acts/Plugins/DD4hep/ActsExtension.hpp"
 #include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp"
+#endif
 
 using namespace std;
 using namespace dd4hep;
diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp
index 4930bc952158b5aa117da21ca75dee367daad663..f65d8498b8c90459e7073c7836a6d2de87ddc62e 100644
--- a/src/TrapEndcapTracker_geo.cpp
+++ b/src/TrapEndcapTracker_geo.cpp
@@ -6,6 +6,7 @@
  *
  * @{
  */
+#include <array>
 #include <map>
 #include "DD4hep/DetFactoryHelper.h"
 #include "DD4hep/Printout.h"
@@ -15,8 +16,13 @@
 #include "XML/Utilities.h"
 #include "XML/Layering.h"
 
+#if defined(USE_ACTSDD4HEP)
+#include "ActsDD4hep/ActsExtension.hpp"
+#include "ActsDD4hep/ConvertMaterial.hpp"
+#else
 #include "Acts/Plugins/DD4hep/ActsExtension.hpp"
 #include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp"
+#endif
 
 using namespace std;
 using namespace dd4hep;