diff --git a/src/main/scala/leon/Settings.scala b/src/main/scala/leon/Settings.scala
index ffcf50c8b008d00b49d161cf525e8b2ac5a60fbb..c630cc32458b20fcc8e146aa3ef71209deb1f50b 100644
--- a/src/main/scala/leon/Settings.scala
+++ b/src/main/scala/leon/Settings.scala
@@ -12,8 +12,6 @@ object Settings {
   var solverTimeout : Option[Int] = None
   var useQuickCheck : Boolean = false
   var useParallel : Boolean = false
-  // When this is None, use real integers
-  var bitvectorBitwidth : Option[Int] = None
   var debugLevel: Int = 0
   var synthesis: Boolean = false
   var transformProgram: Boolean              = true
diff --git a/src/main/scala/leon/plugin/LeonPlugin.scala b/src/main/scala/leon/plugin/LeonPlugin.scala
index bb03f0d7999cd937d35a7638cc2116b437a1d54c..670c41c83b9ec8cbe5ba48117d75594d3d325ad0 100644
--- a/src/main/scala/leon/plugin/LeonPlugin.scala
+++ b/src/main/scala/leon/plugin/LeonPlugin.scala
@@ -25,7 +25,6 @@ class LeonPlugin(val global: PluginRunner) extends Plugin {
     "  --testcases=[1,2]    Number of testcases to generate per function" + "\n" +
     "  --testbounds=l:u     Lower and upper bounds for integers in recursive datatypes" + "\n" +
     "  --timeout=N          Sets a timeout of N seconds" + "\n" +
-    "  --BV                 Use bit-vectors for integers" + "\n" +
     "  --quickcheck         Use QuickCheck-like random search" + "\n" +
     "  --parallel           Run all solvers in parallel" + "\n" +
     "  --debug=[1-5]        Debug level" + "\n" +
@@ -44,7 +43,6 @@ class LeonPlugin(val global: PluginRunner) extends Plugin {
         case "tolerant"      =>                     leon.Settings.silentlyTolerateNonPureBodies = true
         case "bapa"          =>                     leon.Settings.useBAPA = true
         case "impure"        =>                     leon.Settings.impureTestcases = true
-        case "BV"            =>                     leon.Settings.bitvectorBitwidth = Some(32)
         case "quickcheck"    =>                     leon.Settings.useQuickCheck = true
         case "parallel"      =>                     leon.Settings.useParallel = true
         case "imperative"     =>                    leon.Settings.synthesis = false;
diff --git a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
index 202c968106e4f7ac2b4a6361a84c09e3b36dde1e..77d3f2e5636c58da3d591f1849352166a27526a2 100644
--- a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
+++ b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
@@ -19,9 +19,6 @@ trait AbstractZ3Solver extends solvers.IncrementalSolverBuilder {
   val context : LeonContext
   protected[z3] val reporter : Reporter = context.reporter
 
-  protected[leon] val USEBV : Boolean = Settings.bitvectorBitwidth.isDefined
-  protected[leon] val BVWIDTH : Int = Settings.bitvectorBitwidth.getOrElse(-1)
-
   class CantTranslateException(t: Z3AST) extends Exception("Can't translate from Z3 tree: " + t)
 
   protected[leon] val z3cfg : Z3Config
@@ -121,11 +118,8 @@ trait AbstractZ3Solver extends solvers.IncrementalSolverBuilder {
     case Some(z3sort) => z3sort
     case None => {
       import Z3Context.{ADTSortReference, RecursiveType, RegularSort}
-      intSort = if(USEBV) {
-        z3.mkBVSort(BVWIDTH) 
-      } else {
-        z3.mkIntSort
-      }
+
+      intSort = z3.mkIntSort
       boolSort = z3.mkBoolSort
 
       def typeToSortRef(tt: TypeTree): ADTSortReference = tt match {
@@ -170,11 +164,8 @@ trait AbstractZ3Solver extends solvers.IncrementalSolverBuilder {
     import Z3Context.{ADTSortReference, RecursiveType, RegularSort}
     // NOTE THAT abstract classes that extend abstract classes are not
     // currently supported in the translation
-    intSort = if(USEBV) {
-      z3.mkBVSort(BVWIDTH) 
-    } else {
-      z3.mkIntSort
-    }
+    
+    intSort = z3.mkIntSort
     boolSort = z3.mkBoolSort
     setSorts = Map.empty
     setCardFuns = Map.empty
@@ -438,16 +429,16 @@ trait AbstractZ3Solver extends solvers.IncrementalSolverBuilder {
         case BooleanLiteral(v) => if (v) z3.mkTrue() else z3.mkFalse()
         case UnitLiteral => unitValue
         case Equals(l, r) => z3.mkEq(rec(l), rec(r))
-        case Plus(l, r) => if(USEBV) z3.mkBVAdd(rec(l), rec(r)) else z3.mkAdd(rec(l), rec(r))
-        case Minus(l, r) => if(USEBV) z3.mkBVSub(rec(l), rec(r)) else z3.mkSub(rec(l), rec(r))
-        case Times(l, r) => if(USEBV) z3.mkBVMul(rec(l), rec(r)) else z3.mkMul(rec(l), rec(r))
-        case Division(l, r) => if(USEBV) z3.mkBVSdiv(rec(l), rec(r)) else z3.mkDiv(rec(l), rec(r))
-        case Modulo(l, r) => if(USEBV) sys.error("I don't know what to do here!") else z3.mkMod(rec(l), rec(r))
-        case UMinus(e) => if(USEBV) z3.mkBVNeg(rec(e)) else z3.mkUnaryMinus(rec(e))
-        case LessThan(l, r) => if(USEBV) z3.mkBVSlt(rec(l), rec(r)) else z3.mkLT(rec(l), rec(r))
-        case LessEquals(l, r) => if(USEBV) z3.mkBVSle(rec(l), rec(r)) else z3.mkLE(rec(l), rec(r))
-        case GreaterThan(l, r) => if(USEBV) z3.mkBVSgt(rec(l), rec(r)) else z3.mkGT(rec(l), rec(r))
-        case GreaterEquals(l, r) => if(USEBV) z3.mkBVSge(rec(l), rec(r)) else z3.mkGE(rec(l), rec(r))
+        case Plus(l, r) => z3.mkAdd(rec(l), rec(r))
+        case Minus(l, r) => z3.mkSub(rec(l), rec(r))
+        case Times(l, r) => z3.mkMul(rec(l), rec(r))
+        case Division(l, r) => z3.mkDiv(rec(l), rec(r))
+        case Modulo(l, r) => z3.mkMod(rec(l), rec(r))
+        case UMinus(e) => z3.mkUnaryMinus(rec(e))
+        case LessThan(l, r) => z3.mkLT(rec(l), rec(r))
+        case LessEquals(l, r) => z3.mkLE(rec(l), rec(r))
+        case GreaterThan(l, r) => z3.mkGT(rec(l), rec(r))
+        case GreaterEquals(l, r) => z3.mkGE(rec(l), rec(r))
         case c @ CaseClass(cd, args) => {
           val constructor = adtConstructors(cd)
           constructor(args.map(rec(_)): _*)