diff --git a/src/main/scala/leon/purescala/TypeOps.scala b/src/main/scala/leon/purescala/TypeOps.scala
index 5c68340e678e1bf4858ed943dfffa9cb29f4b51c..0e7493018c8aef6e52d0a894c8bafaa5ae89ab17 100644
--- a/src/main/scala/leon/purescala/TypeOps.scala
+++ b/src/main/scala/leon/purescala/TypeOps.scala
@@ -260,7 +260,7 @@ object TypeOps {
               (LiteralPattern(newOb,lit), (ob zip newOb).toMap)
 
             case _ =>
-              sys.error("woot!?")
+              sys.error(s"woot!? $p:$expType")
           }
 
           (srec(e), cases.map(trCase))//.copiedFrom(m)
diff --git a/src/main/scala/leon/utils/InliningPhase.scala b/src/main/scala/leon/utils/InliningPhase.scala
index dea267601cb4a5296ac6b88541679b5688fbf4ab..cc2862c76c78415aab7efa3b3a841a2baefaa211 100644
--- a/src/main/scala/leon/utils/InliningPhase.scala
+++ b/src/main/scala/leon/utils/InliningPhase.scala
@@ -40,8 +40,8 @@ object InliningPhase extends TransformationPhase {
     for (fd <- p.definedFunctions) {
       fd.fullBody = simplify(preMap {
         case FunctionInvocation(TypedFunDef(fd, tps), args) if doInline(fd) =>
-          val newBody = replaceFromIDs(fd.params.map(_.id).zip(args).toMap, fd.fullBody)
-          Some(instantiateType(newBody, (fd.tparams zip tps).toMap, Map()))
+          val newBody = instantiateType(fd.fullBody, (fd.tparams zip tps).toMap, Map())
+          Some(replaceFromIDs(fd.params.map(_.id).zip(args).toMap, newBody))
         case _ =>
           None
       }(fd.fullBody))