diff --git a/Actor/ActorCompiler.hs b/Actor/ActorCompiler.hs
--- a/Actor/ActorCompiler.hs
+++ b/Actor/ActorCompiler.hs
@@ -261,8 +261,17 @@
 optimize = id
 
 -- we only need to guarantee that each element appears once in front
-generateTasks [] = error "simps/props can't be empty"
-generateTasks xs = 
+generateTasks tasks = [ ys ++ guards | ys <- genTasks simps_props]
+  where
+    test (Prop _) = True
+    test (Simp _) = True
+    test (Guard _) = False
+    simps_props = filter (\t -> test t) tasks
+    guards = filter (\t -> not (test t)) tasks
+
+
+genTasks [] = error "simps/props can't be empty"
+genTasks xs = 
  let go 1 xs = [xs]
      go n xs = [xs] ++ go (n-1) (shuffle xs) 
  in go (length xs) xs
diff --git a/actor.cabal b/actor.cabal
--- a/actor.cabal
+++ b/actor.cabal
@@ -2,7 +2,7 @@
 Name:		actor
 Synopsis:	Actors with multi-headed receive clauses
 Category:       Concurrency
-Version:	0.1
+Version:	0.1.1
 Stability:      experimental
 Cabal-Version:  >= 1.2
 License:	BSD3
