diff --git a/cp-demo/FirstClassConstraints.scala b/cp-demo/FirstClassConstraints.scala
index 281b385e68166d5ccacf9f52073872e8a607ecb2..c0bdf5b7933c9513fcd08c902e799e9a117e73fd 100644
--- a/cp-demo/FirstClassConstraints.scala
+++ b/cp-demo/FirstClassConstraints.scala
@@ -18,7 +18,7 @@ object FirstClassConstraints {
   def main(args: Array[String]) : Unit = {
     val l = List(1, 3, 5, 7)
 
-    for (x <- (oneOf(l) minimizing ((x: Int) => -x)).findAll)
+    for (x <- (oneOf(l) minimizing (- (_: Int))).findAll)
       println("A solution: " + x)
 
     val mapper : Term1[MyList,MyList] = (l : MyList) => l match { case MyCons(_, xs) => xs; case x => x }
diff --git a/src/cp/CodeExtraction.scala b/src/cp/CodeExtraction.scala
index bc0b7b20d5f4c56d4f8646024a49d2ee04c3e475..bd8002024034eb4a7297e5b715fac32a382ec9a9 100644
--- a/src/cp/CodeExtraction.scala
+++ b/src/cp/CodeExtraction.scala
@@ -628,6 +628,7 @@ trait CodeExtraction extends Extractors {
       }
       case ExInt32Literal(v) => IntLiteral(v).setType(Int32Type)
       case ExBooleanLiteral(v) => BooleanLiteral(v).setType(BooleanType)
+      case ExTyped(e,tpt) => rec(e).setType(scalaType2PureScala(unit,silent)(tpt.tpe))
       case i @ ExIdentifier(sym,tpt) => varSubsts.get(sym) match {
         case Some(fun) => fun()
         case None => {
diff --git a/src/cp/Extractors.scala b/src/cp/Extractors.scala
index a53a339a71d88ee1364e69c6e67df923137a4e4b..756d0d5b69748b859b296ed08d1cceb9d1fe119b 100644
--- a/src/cp/Extractors.scala
+++ b/src/cp/Extractors.scala
@@ -210,6 +210,13 @@ trait Extractors {
       }
     }
 
+    object ExTyped {
+      def unapply(tree : Typed): Option[(Tree,Tree)] = tree match {
+        case Typed(e,t) => Some((e,t))
+        case _ => None
+      }
+    }
+
     object ExIntIdentifier {
       def unapply(tree: Ident): Option[String] = tree match {
         case i: Ident if i.symbol.tpe == IntClass.tpe => Some(i.symbol.name.toString)