Index: kernel/ideals.cc
===================================================================
--- kernel/ideals.cc	(revision 1558d57b639351ad0ad10d1e5e337419bfcf21fb)
+++ kernel/ideals.cc	(revision b7cfaff1d9a4ec8364a64a54d2b7e009f91418e2)
@@ -69,5 +69,5 @@
 
   homog = idHomModule(h1,currQuotient,&wth);
-  if (rHasGlobalOrdering_currRing())
+  if (rHasGlobalOrdering(currRing))
   {
     if(!homog)
@@ -92,5 +92,5 @@
   IDELEMS(e) = 16;
   h2 = kStd(h1,currQuotient,isNotHomog,NULL);
-  h3 = idMaxIdeal();
+  h3 = idMaxIdeal(1);
   h4=idMult(h2,h3);
   idDelete(&h3);
@@ -235,41 +235,4 @@
   /*  else      qresult->next = NULL;*/
   return result;
-}
-
-/*2
-* verschiebt die Indizees der Modulerzeugenden um i
-*/
-void pShift (poly * p,int i)
-{
-  poly qp1 = *p,qp2 = *p;/*working pointers*/
-  int     j = pMaxComp(*p),k = pMinComp(*p);
-
-  if (j+i < 0) return ;
-  while (qp1 != NULL)
-  {
-    if ((pGetComp(qp1)+i > 0) || ((j == -i) && (j == k)))
-    {
-      pAddComp(qp1,i);
-      pSetmComp(qp1);
-      qp2 = qp1;
-      pIter(qp1);
-    }
-    else
-    {
-      if (qp2 == *p)
-      {
-        pIter(*p);
-        pLmDelete(&qp2);
-        qp2 = *p;
-        qp1 = *p;
-      }
-      else
-      {
-        qp2->next = qp1->next;
-        if (qp1!=NULL) pLmDelete(&qp1);
-        qp1 = qp2->next;
-      }
-    }
-  }
 }
 
@@ -385,5 +348,5 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(length);
+  rSetSyzComp(length, syz_ring);
 
   while ((j>0) && (first->m[j-1]==NULL)) j--;
@@ -440,5 +403,5 @@
       else
       {
-        p = prMoveR(temp1->m[i], syz_ring);
+        p = prMoveR(temp1->m[i], syz_ring,orig_ring);
       }
       temp1->m[i]=NULL;
@@ -524,5 +487,5 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(syzComp);
+  rSetSyzComp(syzComp, syz_ring);
 
   bigmat = idInit(j,(k+1)*maxrk);
@@ -622,5 +585,5 @@
     Warn("syzcomp too low, should be %d instead of %d",k,syzcomp);
     syzcomp = k;
-    rSetSyzComp(k);
+    rSetSyzComp(k,currRing);
   }
   h2->rank = syzcomp+i+1;
@@ -732,5 +695,5 @@
 
   if (setSyzComp)
-    rSetSyzComp(k);
+    rSetSyzComp(k,syz_ring);
 
   if (orig_ring != syz_ring)
@@ -768,5 +731,5 @@
     s_h3->rank -= k;
     rChangeCurrRing(orig_ring);
-    s_h3 = idrMoveR_NoSort(s_h3, syz_ring);
+    s_h3 = idrMoveR_NoSort(s_h3, syz_ring, orig_ring);
     rKill(syz_ring);
     #ifdef HAVE_PLURAL
@@ -810,5 +773,5 @@
     ring dp_C_ring = rCurrRingAssure_dp_C();
     if (dp_C_ring != syz_ring)
-      e = idrMoveR_NoSort(e, syz_ring);
+      e = idrMoveR_NoSort(e, syz_ring, dp_C_ring);
     resolvente res = sySchreyerResolvente(e,-1,&length,TRUE, TRUE);
     intvec * dummy = syBetti(res,length,&reg, *w);
@@ -853,5 +816,5 @@
   ring syz_ring=rCurrRingAssure_SyzComp();
 
-  rSetSyzComp(k);
+  rSetSyzComp(k,syz_ring);
 
   if (orig_ring != syz_ring)
@@ -876,5 +839,5 @@
     idSkipZeroes(s_h3);
     rChangeCurrRing(orig_ring);
-    s_h3 = idrMoveR_NoSort(s_h3, syz_ring);
+    s_h3 = idrMoveR_NoSort(s_h3, syz_ring, orig_ring);
     rKill(syz_ring);
     idTest(s_h3);
@@ -925,5 +888,5 @@
   ring orig_ring = currRing;
   ring syz_ring = rCurrRingAssure_SyzComp();
-  rSetSyzComp(k);
+  rSetSyzComp(k,syz_ring);
 
   ideal s_h1=h1;
@@ -1010,5 +973,5 @@
     if (s_h2->m[j] != NULL)
     {
-      q = prMoveR( s_h2->m[j], syz_ring);
+      q = prMoveR( s_h2->m[j], syz_ring,orig_ring);
       s_h2->m[j] = NULL;
 
@@ -1030,5 +993,5 @@
   for (i=0; i<IDELEMS(s_h3); i++)
   {
-    s_h3->m[i] = prMoveR_NoSort(s_h3->m[i], syz_ring);
+    s_h3->m[i] = prMoveR_NoSort(s_h3->m[i], syz_ring,orig_ring);
   }
   if (lift3)
@@ -1036,5 +999,5 @@
     for (i=0; i<IDELEMS(*syz); i++)
     {
-      (*syz)->m[i] = prMoveR_NoSort((*syz)->m[i], syz_ring);
+      (*syz)->m[i] = prMoveR_NoSort((*syz)->m[i], syz_ring,orig_ring);
     }
   }
@@ -1132,5 +1095,5 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(k);
+  rSetSyzComp(k,syz_ring);
 
   ideal s_mod, s_temp;
@@ -1241,6 +1204,6 @@
     idDelete(&s_mod);
     rChangeCurrRing(orig_ring);
-    s_result = idrMoveR_NoSort(s_result, syz_ring);
-    s_rest = idrMoveR_NoSort(s_rest, syz_ring);
+    s_result = idrMoveR_NoSort(s_result, syz_ring, orig_ring);
+    s_rest = idrMoveR_NoSort(s_rest, syz_ring, orig_ring);
     rKill(syz_ring);
   }
@@ -1492,8 +1455,8 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(kmax-1);
+  rSetSyzComp(kmax-1,syz_ring);
   if (orig_ring!=syz_ring)
-  //  s_h4 = idrMoveR_NoSort(s_h4,orig_ring);
-    s_h4 = idrMoveR(s_h4,orig_ring);
+  //  s_h4 = idrMoveR_NoSort(s_h4,orig_ring, syz_ring);
+    s_h4 = idrMoveR(s_h4,orig_ring, syz_ring);
   idTest(s_h4);
   #if 0
@@ -1546,5 +1509,5 @@
   {
     rChangeCurrRing(orig_ring);
-    s_h3 = idrMoveR_NoSort(s_h3, syz_ring);
+    s_h3 = idrMoveR_NoSort(s_h3, syz_ring, orig_ring);
     rKill(syz_ring);
   }
@@ -1785,5 +1748,5 @@
         IDELEMS(h3) += 16;
       }
-      h3->m[j] = prMoveR( hh->m[k], tmpR);
+      h3->m[j] = prMoveR( hh->m[k], tmpR,origR);
       hh->m[k] = NULL;
     }
@@ -2052,10 +2015,10 @@
     if (p!=NULL)
     {
-      int d=pFDeg(p,currRing);
+      int d=currRing->pFDeg(p,currRing);
       loop
       {
         pIter(p);
         if (p==NULL) break;
-        if (d!=pFDeg(p,currRing))
+        if (d!=currRing->pFDeg(p,currRing))
         {
           //pWrite(q); wrp(p); Print(" -> %d - %d\n",d,pFDeg(p,currRing));
@@ -2138,9 +2101,9 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(length);
+  rSetSyzComp(length,syz_ring);
 
   ideal s_temp;
   if (orig_ring!=syz_ring)
-    s_temp=idrMoveR_NoSort(arg,orig_ring);
+    s_temp=idrMoveR_NoSort(arg,orig_ring, syz_ring);
   else
     s_temp=arg;
@@ -2262,10 +2225,10 @@
   ring orig_ring=currRing;
   ring syz_ring=rCurrRingAssure_SyzComp();
-  rSetSyzComp(length);
+  rSetSyzComp(length, syz_ring);
   ideal s_temp;
 
   if (syz_ring != orig_ring)
   {
-    s_temp = idrMoveR_NoSort(temp, orig_ring);
+    s_temp = idrMoveR_NoSort(temp, orig_ring, syz_ring);
   }
   else
@@ -2305,5 +2268,5 @@
   {
     rChangeCurrRing(orig_ring);
-    s_temp1 = idrMoveR_NoSort(s_temp1, syz_ring);
+    s_temp1 = idrMoveR_NoSort(s_temp1, syz_ring, orig_ring);
     rKill(syz_ring);
     // Hmm ... here seems to be a memory leak
@@ -2342,5 +2305,5 @@
   while (i>0)
   {
-    (*result)[i]=pFDeg(mod->m[i],currRing)+(*weights)[pGetComp(mod->m[i])];
+    (*result)[i]=currRing->pFDeg(mod->m[i],currRing)+(*weights)[pGetComp(mod->m[i])];
   }
   return result;
@@ -2554,5 +2517,5 @@
   poly gg=pTakeOutComp(&(S->m[0]),2);
   idDelete(&S);
-  poly gcd_p=singclap_pdivide(f,gg);
+  poly gcd_p=singclap_pdivide(f,gg,r);
   pDelete(&gg);
   rChangeCurrRing(save_r);
Index: libpolys/polys/monomials/p_polys.cc
===================================================================
--- libpolys/polys/monomials/p_polys.cc	(revision 1558d57b639351ad0ad10d1e5e337419bfcf21fb)
+++ libpolys/polys/monomials/p_polys.cc	(revision b7cfaff1d9a4ec8364a64a54d2b7e009f91418e2)
@@ -3798,4 +3798,40 @@
 }
 
+/*2
+* verschiebt die Indizees der Modulerzeugenden um i
+*/
+void p_Shift (poly * p,int i, const ring r)
+{
+  poly qp1 = *p,qp2 = *p;/*working pointers*/
+  int     j = p_MaxComp(*p,r),k = p_MinComp(*p,r);
+
+  if (j+i < 0) return ;
+  while (qp1 != NULL)
+  {
+    if ((p_GetComp(qp1,r)+i > 0) || ((j == -i) && (j == k)))
+    {
+      p_AddComp(qp1,i,r);
+      p_SetmComp(qp1,r);
+      qp2 = qp1;
+      pIter(qp1);
+    }
+    else
+    {
+      if (qp2 == *p)
+      {
+        pIter(*p);
+        p_LmDelete(&qp2,r);
+        qp2 = *p;
+        qp1 = *p;
+      }
+      else
+      {
+        qp2->next = qp1->next;
+        if (qp1!=NULL) p_LmDelete(&qp1,r);
+        qp1 = qp2->next;
+      }
+    }
+  }
+}
 /***************************************************************
  *
Index: libpolys/polys/monomials/p_polys.h
===================================================================
--- libpolys/polys/monomials/p_polys.h	(revision 1558d57b639351ad0ad10d1e5e337419bfcf21fb)
+++ libpolys/polys/monomials/p_polys.h	(revision b7cfaff1d9a4ec8364a64a54d2b7e009f91418e2)
@@ -1925,4 +1925,7 @@
 // respect syzComp
 poly p_Last(poly a, int &l, const ring r);
+
+/// shifts components of the vector p by i
+void p_Shift (poly * p,int i, const ring r);
 #endif // P_POLYS_H
 
Index: libpolys/polys/polys.h
===================================================================
--- libpolys/polys/polys.h	(revision 1558d57b639351ad0ad10d1e5e337419bfcf21fb)
+++ libpolys/polys/polys.h	(revision b7cfaff1d9a4ec8364a64a54d2b7e009f91418e2)
@@ -332,5 +332,5 @@
 #define   pJetW(p,m,iv) p_JetW(p,m,iv,currRing)
 #define   pMinDeg(p,w) p_MinDeg(p,w,currRing)
-#define   pSeries(n,p,u,w) p_series(n,p,u,w,currRing)
+#define   pSeries(n,p,u,w) p_Series(n,p,u,w,currRing)
 #define   pInvers(n,p,w) p_Invers(n,p,w,currRing)
 // maximum weigthed degree of all monomials of p, w is indexed from
