diff --git a/Makefile b/Makefile
index 90e779f26d5e8b41b527d0d974ff726fedb5e349..190876cad7c4b5d063752c5b2bc63ee40c67aeff 100644
--- a/Makefile
+++ b/Makefile
@@ -1162,7 +1162,7 @@ PLUGIN_TESTS_LIB:= tests/slicing/libSelect.ml tests/slicing/libAnim.ml \
 	tests/slicing/adpcm.ml
 PLUGIN_DISTRIBUTED:=yes
 PLUGIN_INTERNAL_TEST:=yes
-PLUGIN_DEPENDENCIES:=Pdg Callgraph Eva
+PLUGIN_DEPENDENCIES:=Pdg Callgraph Eva Sparecode
 
 $(eval $(call include_generic_plugin_Makefile,$(PLUGIN_NAME)))
 
diff --git a/doc/training/developer/project.tex b/doc/training/developer/project.tex
index 8b4631f0281e2e20569d976524af0fea40929282..715f8361c58345aa08b289ac2e78aec428389735 100644
--- a/doc/training/developer/project.tex
+++ b/doc/training/developer/project.tex
@@ -170,8 +170,8 @@ end
   \item  \lstinline+Project.set_current+, \lstinline+Project.on+
 \begin{ocamlcode}
 let main () =
-  let p = 
-    !Db.Sparecode.get
+  let p =
+    Sparecode.Register.get
       ~select_annot:false
       ~select_slice_pragma:false
    in
diff --git a/src/kernel_services/plugin_entry_points/db.ml b/src/kernel_services/plugin_entry_points/db.ml
index 40a333d4f62eaffcb04c379cb0a17d4b9daf48d9..baad021381a46b3905e7a24582131c9f33fa833c 100644
--- a/src/kernel_services/plugin_entry_points/db.ml
+++ b/src/kernel_services/plugin_entry_points/db.ml
@@ -824,18 +824,6 @@ module Pdg = struct
 
 end
 
-(* ************************************************************************* *)
-(** {2 Spare Code} *)
-(* ************************************************************************* *)
-
-(** Detection of the unused code of an application. *)
-module Sparecode = struct
-  let get =
-    ref (fun ~select_annot:_  -> mk_labeled_fun "Sparecode.run")
-  let rm_unused_globals =
-    ref (fun ?new_proj_name:_ -> mk_labeled_fun "Sparecode.rm_unused_globals")
-end
-
 (* ************************************************************************* *)
 (** {2 Properties} *)
 (* ************************************************************************* *)
diff --git a/src/kernel_services/plugin_entry_points/db.mli b/src/kernel_services/plugin_entry_points/db.mli
index 10d1ff2e5404069f08ab1be8b998e20e5adc355f..cd627fbe6855a4390136b3cd1228a135511f32a5 100644
--- a/src/kernel_services/plugin_entry_points/db.mli
+++ b/src/kernel_services/plugin_entry_points/db.mli
@@ -1240,24 +1240,6 @@ module Pdg : sig
 end
 
 
-(** Interface for the unused code detection.
-    @see <../sparecode/index.html> internal documentation. *)
-module Sparecode : sig
-  val get: (select_annot:bool -> select_slice_pragma:bool -> Project.t) ref
-     (** Remove in each function what isn't used to compute its outputs,
-      *   or its annotations when [select_annot] is true,
-      *   or its slicing pragmas when [select_slice_pragmas] is true.
-      *  @return a new project where the sparecode has been removed.
-      *)
-  val rm_unused_globals : (?new_proj_name:string -> ?project:Project.t -> unit -> Project.t) ref
-    (** Remove  unused global types and variables from the given project
-      * (the current one if no project given).
-      * The source project is not modified.
-      * The result is in the returned new project.
-      * @modify Carbon-20110201 optional argument [new_proj_name] added
-      * *)
-end
-
 (** Signature common to some Inout plugin options. The results of
     the computations are available on a per function basis. *)
 module type INOUTKF = sig
diff --git a/src/plugins/slicing/slicingTransform.ml b/src/plugins/slicing/slicingTransform.ml
index 35b30b376fe483d7977fe7a8790adfcafb84a1f6..5900e0b34895149ecf0947394c6012de7482dce8 100644
--- a/src/plugins/slicing/slicingTransform.ml
+++ b/src/plugins/slicing/slicingTransform.ml
@@ -472,7 +472,7 @@ let extract ~f_slice_names new_proj_name =
     Transform.build_cil_file (new_proj_name ^ " tmp") ()
   in
   let new_prj =
-    !Db.Sparecode.rm_unused_globals ~new_proj_name ~project:tmp_prj ()
+    Sparecode.Register.rm_unused_globals ~new_proj_name ~project:tmp_prj ()
   in
   Project.remove ~project:tmp_prj ();
   let ctx = Parameter_state.get_selection_context () in
diff --git a/src/plugins/sparecode/Sparecode.mli b/src/plugins/sparecode/Sparecode.mli
index e2a726634a19d35cb2e54f142c1b6413051aaa06..b8fe5cc895478ba933aa14c7adcfdc9fbb5e4d8f 100644
--- a/src/plugins/sparecode/Sparecode.mli
+++ b/src/plugins/sparecode/Sparecode.mli
@@ -21,6 +21,21 @@
 (**************************************************************************)
 
 (** Sparecode analysis. *)
+(** Interface for the unused code detection.
+    @see <../sparecode/index.html> internal documentation. *)
 
-(** No function is directly exported:
-    they are registered in !Db.Sparecode. *)
+module Register: sig
+  val get: select_annot:bool -> select_slice_pragma:bool -> Project.t
+     (** Remove in each function what isn't used to compute its outputs,
+      *   or its annotations when [select_annot] is true,
+      *   or its slicing pragmas when [select_slice_pragmas] is true.
+      *  @return a new project where the sparecode has been removed.
+      *)
+  val rm_unused_globals : ?new_proj_name:string -> ?project:Project.t -> unit -> Project.t
+    (** Remove  unused global types and variables from the given project
+      * (the current one if no project given).
+      * The source project is not modified.
+      * The result is in the returned new project.
+      * @modify Carbon-20110201 optional argument [new_proj_name] added
+      * *)
+end
diff --git a/src/plugins/sparecode/register.ml b/src/plugins/sparecode/register.ml
index cb375e46dba0a36fbd09762813273405092901a3..9de4af7ecad7656b036d64fb7791d39e8cc273ef 100644
--- a/src/plugins/sparecode/register.ml
+++ b/src/plugins/sparecode/register.ml
@@ -57,7 +57,7 @@ let unjournalized_rm_unused_globals new_proj_name project =
 
 let journalized_rm_unused_globals  =
   Journal.register
-    "!Db.Sparecode.rm_unused_globals"
+    "Sparecode.Register.rm_unused_globals"
     (Datatype.func2
        ~label1:("new_proj_name", None) Datatype.string
        ~label2:("project", Some Project.current) Project.ty
@@ -95,7 +95,7 @@ let run select_annot select_slice_pragma =
 
 let journalized_get =
   Journal.register
-    "!Db.Sparecode.get"
+    "Sparecode.Register.get"
     (Datatype.func2
        ~label1:("select_annot", None) Datatype.bool
        ~label2:("select_slice_pragma", None) Datatype.bool
@@ -109,19 +109,11 @@ let journalized_get =
 let get ~select_annot ~select_slice_pragma =
   journalized_get select_annot select_slice_pragma
 
-(** {2 Initialization of the sparecode plugin } *)
-
-let () =
-  (* journalization already done. *)
-  Db.register Db.Journalization_not_required Db.Sparecode.get get;
-  Db.register Db.Journalization_not_required
-    Db.Sparecode.rm_unused_globals rm_unused_globals
-
 let main () =
   if Sparecode_params.Analysis.get () then begin
     let select_annot = Sparecode_params.Annot.get () in
     let select_slice_pragma = true in
-    let new_proj = !Db.Sparecode.get select_annot select_slice_pragma in
+    let new_proj = get select_annot select_slice_pragma in
     File.pretty_ast ~prj:new_proj ()
   end
   else if Sparecode_params.GlobDecl.get () then begin
diff --git a/tests/journal/intra.ml b/tests/journal/intra.ml
index 23dbe2737ff72675687df8784d1c480bc73b575e..7785c391999cf580cd9d92645b63f9a34d0f93b3 100644
--- a/tests/journal/intra.ml
+++ b/tests/journal/intra.ml
@@ -1 +1 @@
-let () = Db.Main.extend (fun _ -> ignore (!Db.Sparecode.get true true))
+let () = Db.Main.extend (fun _ -> ignore (Sparecode.Register.get true true))
diff --git a/tests/saveload/load_one.ml b/tests/saveload/load_one.ml
index f4e5eca4d2ece3976a37912d465f9e7e9a29b538..40864219da9835c8b0ac9da8d505c7662a3f79fc 100644
--- a/tests/saveload/load_one.ml
+++ b/tests/saveload/load_one.ml
@@ -2,7 +2,7 @@ let () = at_exit (fun _ -> Sys.remove "tests/saveload/result/load_one.sav")
 
 let main () =
   let sparecode () =
-    !Db.Sparecode.get ~select_annot:false ~select_slice_pragma:false
+    Sparecode.Register.get ~select_annot:false ~select_slice_pragma:false
   in
   let p = sparecode () in
   Project.save "tests/saveload/result/load_one.sav";
diff --git a/tests/slicing/combine.ml b/tests/slicing/combine.ml
index 5aa3b559564e90770d9ab4bb02ae22c09c27d128..853545c0c4836b84bb3fddd7c429377db2d93c8b 100644
--- a/tests/slicing/combine.ml
+++ b/tests/slicing/combine.ml
@@ -71,7 +71,7 @@ let main _ =
   Format.printf "After Constant propagation :@.";
   File.pretty_ast ~prj:proj3 ();
 
-  let proj4 = !Db.Sparecode.get ~select_annot:true ~select_slice_pragma:true in
+  let proj4 = Sparecode.Register.get ~select_annot:true ~select_slice_pragma:true in
   Format.printf "After Sparecode :@.";
   File.pretty_ast ~prj:proj4 ();;