diff --git a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala
index bf1050680b3b009cbc1856efce1e95045172fa1d..16311ecbf4b7f31bde58ff1cbd45cc00b4057efc 100644
--- a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala
+++ b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala
@@ -1,52 +1,22 @@
 /* Copyright 2009-2016 EPFL, Lausanne */
 
-package leon
+package inox
 package solvers
 package smtlib
 
-import OptionParsers._
+class SMTLIBCVC4Solver(val program: Program, val options: SolverOptions)
+  extends SMTLIBSolver
+     with SMTLIBCVC4Target {
 
-import solvers.theories._
-import purescala.Definitions.Program
-
-class SMTLIBCVC4Solver(context: SolverContext, program: Program)
-  extends SMTLIBSolver(context, program, new BagEncoder(context.context, program) >> new ArrayEncoder(context.context, program))
-     with SMTLIBCVC4Target
-     with cvc4.CVC4Solver {
-
-  def targetName = "cvc4"
-
-  def userDefinedOps(ctx: LeonContext) = {
-    ctx.findOptionOrDefault(SMTLIBCVC4Component.optCVC4Options)
-  }
-
-  def interpreterOps(ctx: LeonContext) = {
+  def interpreterOps(ctx: InoxContext) = {
     Seq(
       "-q",
       "--produce-models",
       "--incremental",
-//      "--no-incremental",
-//      "--tear-down-incremental",
-//      "--dt-rewrite-error-sel", // Removing since it causes CVC4 to segfault on some inputs
+      // "--dt-rewrite-error-sel", // Removing since it causes CVC4 to segfault on some inputs
       "--rewrite-divk",
       "--print-success",
       "--lang", "smt2.5"
-    ) ++ userDefinedOps(ctx).toSeq
+    )
   }
 }
-
-object SMTLIBCVC4Component extends LeonComponent {
-  val name = "CVC4 solver"
-
-  val description = "Solver invoked with --solvers=smt-cvc4"
-
-  val optCVC4Options = new LeonOptionDef[Set[String]] {
-    val name = "solver:cvc4"
-    val description = "Pass extra arguments to CVC4"
-    val default = Set[String]()
-    val parser = setParser(stringParser)
-    val usageRhs = "<cvc4-opt>"
-  }
-
-  override val definedOptions : Set[LeonOptionDef[Any]] = Set(optCVC4Options)
-}
diff --git a/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala b/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala
index e49b297218c57fc320558e522dc807bba24842fe..223097df4c0084ab362130b6c8e91e8f3ae6703a 100644
--- a/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala
+++ b/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala
@@ -1,21 +1,9 @@
 /* Copyright 2009-2016 EPFL, Lausanne */
 
-package leon
+package inox
 package solvers
 package smtlib
 
-import purescala.Definitions.Program
-import purescala.Common.Identifier
-import purescala.Expressions.Expr
-
-import _root_.smtlib.parser.Terms.{Identifier => _, _}
-import _root_.smtlib.parser.Commands.{FunDef => SMTFunDef, _}
-import _root_.smtlib.parser.CommandsResponses.GetModelResponseSuccess
-import _root_.smtlib.theories.Core.{Equals => _, _}
-
-import theories._
-
-class SMTLIBZ3Solver(sctx: SolverContext, program: Program)
-  extends SMTLIBSolver(sctx, program, new StringEncoder(sctx.context, program) >> new ArrayEncoder(sctx.context, program))
+class SMTLIBZ3Solver(val program: Program, val options: SolverOptions)
+  extends SMTLIBSolver
      with SMTLIBZ3Target
-     with z3.Z3Solver