diff --git a/src/main/scala/leon/purescala/Trees.scala b/src/main/scala/leon/purescala/Trees.scala
index ad833062293a509ded51159a00af7268aea1aba3..4cf4d8bbf794d4eac77bfc4bbd4cd34a65ab0c72 100644
--- a/src/main/scala/leon/purescala/Trees.scala
+++ b/src/main/scala/leon/purescala/Trees.scala
@@ -478,9 +478,15 @@ object Trees {
   case class SubsetOf(set1: Expr, set2: Expr) extends Expr with FixedType {
     val fixedType = BooleanType
   }
-  case class SetIntersection(set1: Expr, set2: Expr) extends Expr 
-  case class SetUnion(set1: Expr, set2: Expr) extends Expr 
-  case class SetDifference(set1: Expr, set2: Expr) extends Expr 
+  case class SetIntersection(set1: Expr, set2: Expr) extends Expr {
+    leastUpperBound(Seq(set1, set2).map(_.getType)).foreach(setType _)
+  }
+  case class SetUnion(set1: Expr, set2: Expr) extends Expr {
+    leastUpperBound(Seq(set1, set2).map(_.getType)).foreach(setType _)
+  }
+  case class SetDifference(set1: Expr, set2: Expr) extends Expr {
+    leastUpperBound(Seq(set1, set2).map(_.getType)).foreach(setType _)
+  }
   case class SetMin(set: Expr) extends Expr
   case class SetMax(set: Expr) extends Expr
 
diff --git a/src/test/scala/leon/test/LeonTestSuite.scala b/src/test/scala/leon/test/LeonTestSuite.scala
index 1954187b85200702df8e6c7f79517379b190636a..415832a00804ab4fde9d07561aa2975e0256f256 100644
--- a/src/test/scala/leon/test/LeonTestSuite.scala
+++ b/src/test/scala/leon/test/LeonTestSuite.scala
@@ -96,8 +96,10 @@ trait LeonTestSuite extends FunSuite with Timeouts {
   }
 
   override def test(name: String, tags: Tag*)(body: => Unit) {
+
     super.test(name, tags: _*) {
       val id = testIdentifier(name)
+
       val ts = now()
 
       testContext = generateContext
@@ -111,7 +113,7 @@ trait LeonTestSuite extends FunSuite with Timeouts {
       val stats = getStats(id)
 
       if (!stats.accountsFor(total)) {
-        fail("Test took too long to run: "+total+"ms (avg: "+stats.avg+", stddev: "+stats.stddev+")")
+        info(Console.YELLOW+"[warning] Test took too long to run: "+total+"ms (avg: "+stats.avg+", stddev: "+stats.stddev+")")
       }
 
       storeStats(id, stats.withValue(total))