diff --git a/src/funcheck/scalacheck/ForAllTransformer.scala b/src/funcheck/scalacheck/ForAllTransformer.scala
index 356f74303de42e83b83279374e40b6b4067ec605..4731bea365baabe1df21dcf9f2c4c67060756ce0 100644
--- a/src/funcheck/scalacheck/ForAllTransformer.scala
+++ b/src/funcheck/scalacheck/ForAllTransformer.scala
@@ -35,7 +35,7 @@ trait ForAllTransformer extends TypingTransformers
               case tpe @ TypeRef(_,_,ptpes) =>
                 vtpt.tpe match {
                   case TypeRef(_,value,vtpes) =>
-                    val fun: Function = {
+                    var fun: Function = {
                       if(vtpes.size <= 1) {
                         f
                       } else {
diff --git a/src/funcheck/scalacheck/ScalaCheck.scala b/src/funcheck/scalacheck/ScalaCheck.scala
index b1e57db4779775ed7737e52f0886cd63736dcb7d..17fa79e311da8ee43a9a9867d161bf446a8883fe 100644
--- a/src/funcheck/scalacheck/ScalaCheck.scala
+++ b/src/funcheck/scalacheck/ScalaCheck.scala
@@ -61,6 +61,8 @@ trait ScalaCheck extends FreshNameCreator {
     def oneOf(generators: List[Symbol]): Tree = 
       Apply(Select(Ident(moduleGenSym), symDecl(moduleGenSym, "oneOf")), generators.map(Ident(_)))
     
+    def lzy(generator: Tree): Tree = 
+      Apply(Select(Ident(moduleGenSym), symDecl(moduleGenSym, "lzy")), List(generator))
     
     /**
      * This creates a Tree node for the call <code>org.scalacheck.Gen.flatMap[T](body)</code>, 
@@ -81,6 +83,8 @@ trait ScalaCheck extends FreshNameCreator {
     def map(qualifier: Tree, body: Tree): Tree = 
       Apply(Select(qualifier, symDecl(classGenSym, "map")), List(body))
      
+    
+    
     /**
      * Utilitary method for creating a method symbol for a <code>org.scalacheck.Gen</codee>
      * generator method. 
@@ -191,7 +195,7 @@ trait ScalaCheck extends FreshNameCreator {
       
       if(cd.symbol.hasFlag(scala.tools.nsc.symtab.Flags.ABSTRACT)) {
         val generators = retTpe.symbol.children.toList.map(s => genSymbolsForType(s.tpe)).flatMap(v=>v)
-        DefDef(genDef, Modifiers(0), List(), Gen.oneOf(generators))
+        DefDef(genDef, Modifiers(0), List(), Gen.lzy(Gen.oneOf(generators)))
       } 
       else {
         
@@ -242,7 +246,7 @@ trait ScalaCheck extends FreshNameCreator {
           }
         }
       
-        body
+        Gen.lzy(body)
       }
     }