diff --git a/src/plugins/server/data.ml b/src/plugins/server/data.ml
index f1a17dc67cf5390763d92c330ceb2b0c1512bd26..c75c1b63d7c742285567e9b8df3462b5cbfb2105 100644
--- a/src/plugins/server/data.ml
+++ b/src/plugins/server/data.ml
@@ -565,6 +565,11 @@ end
 (* --- Index                                                              --- *)
 (* -------------------------------------------------------------------------- *)
 
+module type Info =
+sig
+  val kind: string
+end
+
 (** Simplified [Map.S] *)
 module type Map =
 sig
@@ -584,7 +589,7 @@ sig
   val clear : unit -> unit
 end
 
-module INDEXER(M : Map)(D : S)(I : Index with type t = D.t) :
+module INDEXER(M : Map)(I : Info) :
 sig
   type index
   val create : unit -> index
@@ -634,10 +639,10 @@ struct
 
 end
 
-module Static(M : Map)(S : S)(I : Index with type t = S.t)
+module Static(M : Map)(I : Info)
   : Index with type t = M.key =
 struct
-  module INDEX = INDEXER(M)(S)(I)
+  module INDEX = INDEXER(M)(I)
   let kind = I.kind
   let index = INDEX.create ()
   let clear () = INDEX.clear index
@@ -652,10 +657,10 @@ struct
     end)
 end
 
-module Index(M : Map)(S : S)(I : Index with type t = S.t)
+module Index(M : Map)(I : Info)
   : Index with type t = M.key =
 struct
-  module INDEX = INDEXER(M)(S)(I)
+  module INDEX = INDEXER(M)(I)
   module TYPE : Datatype.S with type t = INDEX.index =
     Datatype.Make
       (struct
@@ -695,8 +700,7 @@ sig
   val id : t -> int
 end
 
-module Identified(A : IdentifiedType)(S : S)
-    (I : Index with type t = S.t) : Index with type t = A.t =
+module Identified(A : IdentifiedType)(I : Info) : Index with type t = A.t =
 struct
 
   type index = (int,A.t) Hashtbl.t
diff --git a/src/plugins/server/data.mli b/src/plugins/server/data.mli
index 6ba578402a272c361db78fb628b0d331334d5de0..a86c1f148881b4de715ee8cf571bf74ae7669d70 100644
--- a/src/plugins/server/data.mli
+++ b/src/plugins/server/data.mli
@@ -323,6 +323,12 @@ end
 *)
 (* -------------------------------------------------------------------------- *)
 
+(** Datatype information. *)
+module type Info =
+sig
+  val kind: string
+end
+
 (** Simplified [Map.S]. *)
 module type Map =
 sig
@@ -345,12 +351,10 @@ sig
 end
 
 (** Builds an indexer that {i does not} depend on current project. *)
-module Static(M : Map)(S : S)
-    (I : Index with type t = S.t) : Index with type t = M.key
+module Static(M : Map)(I : Info) : Index with type t = M.key
 
 (** Builds a {i projectified} index. *)
-module Index(M : Map)(S : S)
-    (I : Index with type t = S.t) : Index with type t = M.key
+module Index(M : Map)(I : Info) : Index with type t = M.key
 
 (** Datatype already identified by unique integers. *)
 module type IdentifiedType =
@@ -360,8 +364,7 @@ sig
 end
 
 (** Builds a {i projectified} index on types with {i unique} identifiers. *)
-module Identified(A : IdentifiedType)(S : S)
-    (I : Index with type t = S.t) : Index with type t = A.t
+module Identified(A : IdentifiedType)(I : Info) : Index with type t = A.t
 
 (* -------------------------------------------------------------------------- *)
 (** {2 Error handling}