Index: dyn_modules/syzextra/syzextra.h
===================================================================
--- dyn_modules/syzextra/syzextra.h	(revision dd24e5dded66979eda13e955b93fc284cbb341e7)
+++ dyn_modules/syzextra/syzextra.h	(revision 495328d14a955b215ad10b598e995ab522243881)
@@ -63,10 +63,16 @@
 {
   SchreyerSyzygyComputationFlags(idhdl rootRingHdl);
-  
+  SchreyerSyzygyComputationFlags(const SchreyerSyzygyComputationFlags& attr):
+      __DEBUG__(attr.__DEBUG__),
+//      __SYZCHECK__(attr.__SYZCHECK__),
+      __LEAD2SYZ__(attr.__LEAD2SYZ__),  __TAILREDSYZ__(attr.__TAILREDSYZ__),
+      __HYBRIDNF__(attr.__HYBRIDNF__),  m_rBaseRing(attr.m_rBaseRing)
+  {}
+      
+
   /// output all the intermediate states
   const bool __DEBUG__; // DebugOutput;
 
-  /// ?
-  const bool __SYZCHECK__; // CheckSyzygyProperty;
+//  const bool __SYZCHECK__; // CheckSyzygyProperty: never tested here...
 
   /// ?
@@ -79,9 +85,12 @@
   const bool __HYBRIDNF__; // UseHybridNF
 
+  /// global base ring
+  const ring m_rBaseRing;
+
 };
 
 class SchreyerSyzygyComputation;
 
-class CLCM: public std::vector<bool>
+class CLCM: public SchreyerSyzygyComputationFlags, public std::vector<bool>
 {
   public:
@@ -97,5 +106,5 @@
 
 
-class CReducerFinder
+class CReducerFinder: public SchreyerSyzygyComputationFlags
 {
   private:
@@ -148,5 +157,5 @@
  * @sa Schreyer Syzygy Computation Paper & Talk & Python prototype
  */
-class SchreyerSyzygyComputation
+class SchreyerSyzygyComputation: public SchreyerSyzygyComputationFlags
 {
   friend class CLCM;
@@ -156,8 +165,8 @@
 
     /// Construct a global object for given input data (separated into leads & tails)
-    SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const ring rBaseRing, const SchreyerSyzygyComputationFlags attribues):
-        m_rBaseRing(rBaseRing),
+    SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const SchreyerSyzygyComputationFlags setting):
+        SchreyerSyzygyComputationFlags(setting),
         m_idLeads(idLeads), m_idTails(idTails), 
-        m_syzLeads(NULL), m_syzTails(NULL), m_LS(NULL), m_atttributes(attribues),
+        m_syzLeads(NULL), m_syzTails(NULL), m_LS(NULL),
         m_lcm(*this), m_div(*this)
     {
@@ -166,8 +175,8 @@
 
     /// Construct a global object for given input data (separated into leads & tails)
-    SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const ideal syzLeads, const ring rBaseRing, const SchreyerSyzygyComputationFlags attribues):
-        m_rBaseRing(rBaseRing),
+    SchreyerSyzygyComputation(const ideal idLeads, const ideal idTails, const ideal syzLeads, const SchreyerSyzygyComputationFlags setting):
+        SchreyerSyzygyComputationFlags(setting),
         m_idLeads(idLeads), m_idTails(idTails), 
-        m_syzLeads(NULL), m_syzTails(NULL), m_LS(syzLeads), m_atttributes(attribues),
+        m_syzLeads(NULL), m_syzTails(NULL), m_LS(syzLeads), 
         m_lcm(*this), m_div(*this)
     {
@@ -219,7 +228,4 @@
 
   private:
-    /// global base ring
-    const ring  m_rBaseRing;
-
     /// input leading terms
     const ideal m_idLeads;
@@ -235,6 +241,4 @@
 
     /*mutable?*/ ideal m_LS; ///< leading syzygy terms used for reducing syzygy tails
-
-    const SchreyerSyzygyComputationFlags m_atttributes;
 
     /// Bitmask for variables occuring in leading terms
@@ -248,14 +252,14 @@
 // The following wrappers are just for testing separate functions on highest level (within schreyer.lib)
 
-static inline void ComputeSyzygy(const ideal L, const ideal T, ideal& LL, ideal& TT, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, T, R, A);
+static inline void ComputeSyzygy(const ideal L, const ideal T, ideal& LL, ideal& TT, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, T, A);
   syz.ComputeSyzygy();
   syz.ReadOffResult(LL, TT);
 }
 
-static inline ideal ComputeLeadingSyzygyTerms(const ideal& L, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, NULL, R, A);
+static inline ideal ComputeLeadingSyzygyTerms(const ideal& L, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, NULL, A);
   syz.ComputeLeadingSyzygyTerms(false);
   ideal LL, TT;
@@ -264,7 +268,7 @@
 }
 
-static inline ideal Compute2LeadingSyzygyTerms(const ideal& L, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, NULL, R, A);
+static inline ideal Compute2LeadingSyzygyTerms(const ideal& L, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, NULL, A);
   syz.ComputeLeadingSyzygyTerms(true);
   ideal LL, TT;
@@ -274,21 +278,21 @@
 
 static inline poly FindReducer(poly product, poly syzterm,
-                               ideal L, ideal LS, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, NULL, LS, R, A);
+                               ideal L, ideal LS, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, NULL, LS, A);
   return syz._FindReducer(product, syzterm);
 }
 
 static inline poly TraverseTail(poly multiplier, poly tail, 
-                                ideal L, ideal T, ideal LS, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, T, LS, R, A);
+                                ideal L, ideal T, ideal LS, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, T, LS, A);
   return syz.TraverseTail(multiplier, tail);
 }
 
 static inline poly ReduceTerm(poly multiplier, poly term4reduction, poly syztermCheck,
-                              ideal L, ideal T, ideal LS, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, T, LS, R, A);
+                              ideal L, ideal T, ideal LS, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, T, LS, A);
   return syz.ReduceTerm(multiplier, term4reduction, syztermCheck);
 }
@@ -296,7 +300,7 @@
 
 static inline poly SchreyerSyzygyNF(poly syz_lead, poly syz_2,
-                                    ideal L, ideal T, ideal LS, const ring R, const SchreyerSyzygyComputationFlags A)
-{
-  SchreyerSyzygyComputation syz(L, T, LS, R, A);
+                                    ideal L, ideal T, ideal LS, const SchreyerSyzygyComputationFlags A)
+{
+  SchreyerSyzygyComputation syz(L, T, LS, A);
   return syz.SchreyerSyzygyNF(syz_lead, syz_2);
 }
