diff --git a/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/TrkExSolenoidalIntersector/SolenoidParametrization.h b/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/TrkExSolenoidalIntersector/SolenoidParametrization.h
index 7de8fe2ae0330c200601a38a1a89c0ff3bda6b36..e0215b0b838279b6443d0363a220d7f601b504a8 100755
--- a/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/TrkExSolenoidalIntersector/SolenoidParametrization.h
+++ b/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/TrkExSolenoidalIntersector/SolenoidParametrization.h
@@ -40,7 +40,6 @@ public:
     // forbidden copy constructor
     // forbidden assignment operator
 
-    static SolenoidParametrization*	instance (void);				// access to singleton
     static SolenoidParametrization*	instance (MagField::IMagFieldSvc* magFieldSvc);	// initialize singleton
     static void                 clearInstance(void);	// clear (to be used before reinitialization)
     
@@ -58,7 +57,8 @@ public:
     bool			validOrigin(Amg::Vector3D origin) const; // param valid for this origin?
 
 private:
-    SolenoidParametrization		(void);				// singleton constructor
+    //  implementation does not work without magnetic field service
+    //  SolenoidParametrization		(void);				// singleton constructor
     SolenoidParametrization		(MagField::IMagFieldSvc* magFieldSvc);	// configuration from Intersector
     int				fieldKey(void);
     void			integrate(double&, double&, double, double) const;
@@ -199,12 +199,13 @@ SolenoidParametrization::setTerms(int key1)
 
 //<<<<<< INLINE PUBLIC MEMBER FUNCTIONS                                 >>>>>>
 
-inline SolenoidParametrization*
-SolenoidParametrization::instance()
-{
-    if (s_instance == 0) s_instance = new SolenoidParametrization();
-    return s_instance;
-}
+// class does not work without magnetic field service
+//inline SolenoidParametrization*
+//SolenoidParametrization::instance()
+//{
+//    if (s_instance == 0) s_instance = new SolenoidParametrization();
+//    return s_instance;
+//}
 
 inline SolenoidParametrization*
 SolenoidParametrization::instance(MagField::IMagFieldSvc* magFieldSvc)
diff --git a/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/src/SolenoidParametrization.cxx b/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/src/SolenoidParametrization.cxx
index 7e0c2974b451ef9c1d5307da8d72cf27be4de52e..50c1ade2df74e37d7b31d77d73f4e89acaff7334 100755
--- a/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/src/SolenoidParametrization.cxx
+++ b/Tracking/TrkExtrapolation/TrkExSolenoidalIntersector/src/SolenoidParametrization.cxx
@@ -17,6 +17,27 @@
 #include "GaudiKernel/SystemOfUnits.h"
 #include "TrkExSolenoidalIntersector/SolenoidParametrization.h"
 
+namespace {
+    class RestoreIOSFlags 
+    {
+    public:
+      RestoreIOSFlags (std::ostream &os) 
+        : m_os(&os), 
+          //m_flags(m_os->flags()),
+          m_precision(m_os->precision())
+      {}
+      ~RestoreIOSFlags() {
+        //m_os->flags(m_flags);
+        m_os->precision(m_precision);
+      }
+    private:
+      std::ostream *m_os;
+      //std::ios_base::fmtflags m_flags;
+      std::streamsize  m_precision;
+    };
+}
+
+
 namespace Trk
 {
    
@@ -43,30 +64,35 @@ double		SolenoidParametrization::s_parameters[]      	= {14688*0.};
 //<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>
 
 // note: both constructors are private
-SolenoidParametrization::SolenoidParametrization(void)
-    :	m_hasParametrization	(false)
-{
-    // get central field value in units required for fast tracking
-    s_centralField    	= fieldComponent(0.,0.,0.);
-
-    // note field = B*c 
-    std::cout << " SolenoidParametrization: centralField "
-	      << std::setw(6) << std::setprecision(3) << s_centralField/s_lightSpeed /Gaudi::Units::tesla
-	      << "T" << std::endl;
-}
+// SolenoidParametrization::SolenoidParametrization(void)
+//     :	m_hasParametrization	(false)
+// {
+//    // field component not defined without a m_magFieldSvc
+//    // get central field value in units required for fast tracking
+//    s_centralField    	= fieldComponent(0.,0.,0.);
+//
+//    // note field = B*c 
+//    RestoreIOSFlags restore(std::cout);
+//    std::cout << " SolenoidParametrization: centralField "
+//              << std::setw(6) << std::setprecision(3) << s_centralField/s_lightSpeed /Gaudi::Units::tesla
+//              << "T" << std::endl;
+//}
 
 SolenoidParametrization::SolenoidParametrization(MagField::IMagFieldSvc* magFieldSvc)
     :	m_hasParametrization	(false),
 	m_magFieldSvc		(magFieldSvc)
 {
     // get central field value in units required for fast tracking (i.e. field = B*c)
+    if (!m_magFieldSvc)
+       throw std::logic_error("fieldComponent not defined without magnetic field service.");
     s_centralField    	= fieldComponent(0.,0.,0.);
+    RestoreIOSFlags restore(std::cout);
     std::cout << " SolenoidParametrization: centralField "
-	      << std::setw(6) << std::setprecision(3) << s_centralField/s_lightSpeed /Gaudi::Units::tesla
+              << std::setw(6) << std::setprecision(3) << s_centralField/s_lightSpeed /Gaudi::Units::tesla
 	      << "T";
     
     // now parametrise field - if requested
-    if (magFieldSvc)
+    //if (magFieldSvc)
     {
 	std::cout << "  - please be patient while the solenoid is parametrised !! ";
 	parametrizeSolenoid();