diff --git a/src/purescala/DefaultTactic.scala b/src/purescala/DefaultTactic.scala
index b725f10720379bce6ecb9177c02db73554bcf680..42950a7c00932f47e9342cf18172fd55059162f6 100644
--- a/src/purescala/DefaultTactic.scala
+++ b/src/purescala/DefaultTactic.scala
@@ -23,18 +23,18 @@ class DefaultTactic(reporter: Reporter) extends Tactic(reporter) {
       assert(functionDefinition.body.isDefined)
       val prec = functionDefinition.precondition
       val post = functionDefinition.postcondition
-      val body = functionDefinition.body.get
+      val body = matchToIfThenElse(functionDefinition.body.get)
 
       if(post.isEmpty) {
         Seq.empty
       } else {
         val theExpr = { 
           val resFresh = FreshIdentifier("result", true).setType(body.getType)
-          val bodyAndPost = Let(resFresh, body, replace(Map(ResultVariable() -> Variable(resFresh)), post.get))
+          val bodyAndPost = Let(resFresh, body, replace(Map(ResultVariable() -> Variable(resFresh)), matchToIfThenElse(post.get)))
           val withPrec = if(prec.isEmpty) {
             bodyAndPost
           } else {
-            Implies(prec.get, bodyAndPost)
+            Implies(matchToIfThenElse(prec.get), bodyAndPost)
           }
 
           import Analysis._
@@ -69,19 +69,7 @@ class DefaultTactic(reporter: Reporter) extends Tactic(reporter) {
             reporter.info("Contract'ed, expanded:")
             reporter.info(expandLets(expr2))
           }
-          reporter.info(" - converting pattern-matching...")
-          val expr3 = if(Settings.useNewPatternMatchingTranslator) {
-            matchToIfThenElse(expr2)
-          } else {
-            rewriteSimplePatternMatching(expr2)
-          }
-          if(Settings.experimental) {
-            reporter.info("Pattern'ed:")
-            reporter.info(expr3)
-            reporter.info("Pattern'ed, expanded:")
-            reporter.info(expandLets(expr3))
-          }
-          expr3
+          expr2
         }
         Seq(new VerificationCondition(theExpr, functionDefinition, VCKind.Postcondition, this))
       }
diff --git a/testcases/BinarySearchTree.scala b/testcases/BinarySearchTree.scala
index 98bf934b2c1900ce8f681de00f21e96a421d5532..5ef9b95d5c6e624c4fa06a2f86a1886eb05c16cb 100644
--- a/testcases/BinarySearchTree.scala
+++ b/testcases/BinarySearchTree.scala
@@ -95,8 +95,8 @@ object BinarySearchTree {
 
   def cleanInsert(tree: Tree, value: Int) : Tree = (tree match {
     case Leaf() => Node(Leaf(), value, Leaf())
-    case Node(l, v, r) if v < value => Node(l, v, insert(r, value))
-    case Node(l, v, r) if v > value => Node(insert(l, value), v, r)
+    case Node(l, v, r) if v < value => Node(l, v, cleanInsert(r, value))
+    case Node(l, v, r) if v > value => Node(cleanInsert(l, value), v, r)
     case n @ Node(l, v, r) if v == value => n
   }) ensuring(contents(_) == contents(tree) ++ Set(value))