diff --git a/Control/Parallel/Eden/DivConq.hs b/Control/Parallel/Eden/DivConq.hs
--- a/Control/Parallel/Eden/DivConq.hs
+++ b/Control/Parallel/Eden/DivConq.hs
@@ -112,7 +112,7 @@
       where
         -- child process generation
         childRes   = spawnAt childTickets childProcs procIns
-        childProcs = map (process . recDC) theirTs
+        childProcs = map (process . \ts -> disDC k ts trivial solve split combine) theirTs
         -- ticket distribution
         (childTickets, restTickets) = splitAt (k-1) tickets
         (myTs: theirTs) = unshuffle k restTickets
@@ -121,7 +121,7 @@
         (procIns, localIns)
                    = splitAt (length childTickets) theirIn
         -- local computations
-        myRes      = recDC myTs myIn
+        myRes      = disDC k myTs trivial solve split combine myIn
         localRess  = map seqDC localIns
 
 -- | offline distributed-expansion divide-and-conquer skeleton.
diff --git a/Control/Parallel/Eden/Topology.hs b/Control/Parallel/Eden/Topology.hs
--- a/Control/Parallel/Eden/Topology.hs
+++ b/Control/Parallel/Eden/Topology.hs
@@ -108,11 +108,11 @@
         Places                     -- ^where to put workers
         -> (i -> [a])              -- ^distribute input
         -> ([b] -> o)              -- ^combine output
-        -> [(a -> [r] -> (b,[r]))] -- ^ring process fcts
+        -> [(a -> r -> (b,r))]     -- ^ring process fcts
         -> i                       -- ^ring input
         -> o                       -- ^ring output
 ringFlAt places distrib combine fs i = combine os where
-  (os, ringOuts) = unzip $ spawnFAt places (map (toRD . uncurry) fs) 
+  (os, ringOuts) = unzip $ spawnFAt places (map (toRD . uncurry) (cycle fs)) 
                                            (zip (distrib i) $ lazy ringIns)
   ringIns        = rightRotate ringOuts
 
@@ -124,7 +124,7 @@
 ringFl  :: (Trans a,Trans b,Trans r) =>
         (i -> [a])                 -- ^distribute input
         -> ([b] -> o)              -- ^combine output
-        -> [(a -> [r] -> (b,[r]))] -- ^ring process fcts
+        -> [(a -> r -> (b,r))]     -- ^ring process fcts
         -> i                       -- ^ring input
         -> o                       -- ^ring output
 ringFl = ringFlAt [0]
@@ -138,7 +138,7 @@
         Places                    -- ^where to put workers
         -> (i -> [a])             -- ^distribute input
         -> ([b] -> o)             -- ^combine output
-        -> (a -> [r] -> (b,[r]))  -- ^ring process fct
+        -> (a -> r -> (b,r))      -- ^ring process fct
         -> i                      -- ^ring input
         -> o                      -- ^ring output 
 ringAt places distrib combine f i =
@@ -153,7 +153,7 @@
 ring :: (Trans a,Trans b,Trans r) =>
         (i -> [a])                -- ^distribute input
         -> ([b] -> o)             -- ^combine output
-        -> (a -> [r] -> (b,[r]))  -- ^ring process fct
+        -> (a -> r -> (b,r))      -- ^ring process fct
         -> i                      -- ^ring input
         -> o                      -- ^ring output
 ring = ringAt [0]
diff --git a/edenskel.cabal b/edenskel.cabal
--- a/edenskel.cabal
+++ b/edenskel.cabal
@@ -1,5 +1,5 @@
 name:		edenskel
-version:	2.0.0.2
+version:	2.1.0.0
 license:	BSD3
 license-file:	LICENSE
 maintainer:	eden@mathematik.uni-marburg.de
