diff --git a/headers/header_spec.txt b/headers/header_spec.txt
index 2d5b8db39e4a7e7382d944855e979f3b552bfe45..7e490058938700555937492f2f5c734a796673f5 100644
--- a/headers/header_spec.txt
+++ b/headers/header_spec.txt
@@ -1136,8 +1136,6 @@ src/plugins/server/server_batch.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/server/server_zmq.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/server/states.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/server/states.mli: CEA_LGPL_OR_PROPRIETARY
-src/plugins/server/syntax.ml: CEA_LGPL_OR_PROPRIETARY
-src/plugins/server/syntax.mli: CEA_LGPL_OR_PROPRIETARY
 src/plugins/scope/Scope.mli: CEA_LGPL_OR_PROPRIETARY
 src/plugins/scope/datascope.ml: CEA_LGPL_OR_PROPRIETARY
 src/plugins/scope/datascope.mli: CEA_LGPL_OR_PROPRIETARY
diff --git a/src/plugins/server/Makefile.in b/src/plugins/server/Makefile.in
index b9189eaed9c1dfd8bb05c852fdcf628ab9da228e..1fca7533e8446537747338ca3ffe3bc83eb281e5 100644
--- a/src/plugins/server/Makefile.in
+++ b/src/plugins/server/Makefile.in
@@ -40,9 +40,8 @@ PLUGIN_CMO:= \
 	server_parameters \
 	jbuffer \
 	package \
+	data main request states \
 	server_doc \
-	syntax data \
-	main request states \
 	server_batch \
 	kernel_main \
 	kernel_project \
@@ -81,11 +80,13 @@ include $(FRAMAC_SHARE)/Makefile.dynamic
 ##############
 
 SERVER_API= \
-	package.mli server_doc.mli \
-	syntax.mli data.mli request.mli states.mli \
+	package.mli \
+	data.mli \
+	request.mli \
+	states.mli \
 	kernel_main.mli \
-#	kernel_ast.mli \
-#	kernel_properties.mli
+	kernel_ast.mli \
+	kernel_properties.mli
 
 define Capitalize
 $(shell printf "%s%s" \
diff --git a/src/plugins/server/data.ml b/src/plugins/server/data.ml
index d179f7990ef4bf83bc418a11d47ee87b1e374b90..bdb6f3d58e00422158395e5c61443262a12d5bc0 100644
--- a/src/plugins/server/data.ml
+++ b/src/plugins/server/data.ml
@@ -55,7 +55,8 @@ let failure ?json msg =
 let failure_from_type_error msg json =
   failure ~json "%s" msg
 
-let package = Package.package ~name:"data" ~readme:"data.md" ()
+let package =
+  Package.package ~name:"data" ~title:"Kernel Basic Types" ()
 
 (* -------------------------------------------------------------------------- *)
 (* --- Option                                                             --- *)
diff --git a/src/plugins/server/kernel_ast.ml b/src/plugins/server/kernel_ast.ml
index 07a1a7a2f6c613641ba5d3212d75f767a6c89963..0a4d1630351a14512ac20b03b3484930d14439e0 100644
--- a/src/plugins/server/kernel_ast.ml
+++ b/src/plugins/server/kernel_ast.ml
@@ -144,8 +144,8 @@ struct
     in
     States.register_array
       ~package
-      ~name:"markerKind"
-      ~descr:(Md.plain "Kind of markers")
+      ~name:"markerData"
+      ~descr:(Md.plain "Markers data")
       ~key:snd
       ~iter model
 
@@ -179,7 +179,7 @@ struct
 
   let jstmt = jmarker "stmt"
   let jdecl = jmarker "decl"
-  let jllet = jmarker "llet"
+  let jlval = jmarker "lval"
   let jexpr = jmarker "expr"
   let jterm = jmarker "term"
   let jglobal = jmarker "global"
@@ -393,18 +393,4 @@ let () =
     ~output:(module Junit)
     set_files
 
-(*
-let () =
-  Request.register
-    ~package
-    ~descr:(Md.plain "Compute the AST of the currently set source file names.")
-    ~kind:`EXEC
-    ~name:"kernel.execCompute"
-    ~input:(module Junit)
-    ~output:(module Junit)
-    (fun () ->
-       if not (Ast.is_computed ())
-       then File.init_from_cmdline ())
-*)
-
 (* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/server/kernel_ast.mli b/src/plugins/server/kernel_ast.mli
index 9130d0cf9135f5518a2d183a2681be8cedadc2bb..9952c2d6910c676c098debd8a0d409c9ddc2dd11 100644
--- a/src/plugins/server/kernel_ast.mli
+++ b/src/plugins/server/kernel_ast.mli
@@ -37,7 +37,7 @@ sig
 
   val jstmt : jtype
   val jdecl : jtype
-  val jllet : jtype
+  val jlval : jtype
   val jexpr : jtype
   val jterm : jtype
   val jglobal : jtype
diff --git a/src/plugins/server/kernel_main.ml b/src/plugins/server/kernel_main.ml
index 6e7751be31e71ee8c321aee451d556a9f30fdfb4..10b6b4823fc29119d49ff70ab1cdfa17880f2f28 100644
--- a/src/plugins/server/kernel_main.ml
+++ b/src/plugins/server/kernel_main.ml
@@ -29,7 +29,7 @@ module Senv = Server_parameters
 (* --- Frama-C Kernel Services                                            --- *)
 (* -------------------------------------------------------------------------- *)
 
-let package = Pkg.package ~title:"Kernel Services" ~name:"kernel" ()
+let package = Pkg.package ~title:"Kernel Services" ~name:"services" ()
 
 (* -------------------------------------------------------------------------- *)
 (* --- Config                                                             --- *)
diff --git a/src/plugins/server/kernel_project.ml b/src/plugins/server/kernel_project.ml
index 45559e30b30722285ad1fc700cd51c13a1a5c312..69d4ccd0bdefb72a547e76911e53d7588c40af72 100644
--- a/src/plugins/server/kernel_project.ml
+++ b/src/plugins/server/kernel_project.ml
@@ -25,7 +25,7 @@ module Md = Markdown
 module Js = Yojson.Basic.Util
 module Pkg = Package
 
-let package = Pkg.package ~name:"project" ()
+let package = Pkg.package ~name:"project" ~title:"Project Management" ()
 
 (* -------------------------------------------------------------------------- *)
 (* --- Project Info                                                       --- *)
@@ -107,25 +107,25 @@ let () = Request.register ~package
     (fun pid -> Project.(set_current (from_unique_name pid)))
 
 let () = Request.register ~package
-    ~kind:`GET ~name:"kernel.project.getList"
+    ~kind:`GET ~name:"getList"
     ~descr:(Md.plain "Returns the list of all projects")
     ~input:(module Junit) ~output:(module Jlist(ProjectInfo))
     (fun () -> Project.fold_on_projects (fun ids p -> p :: ids) [])
 
 let () = Request.register ~package
-    ~kind:`GET ~name:"kernel.project.getOn"
+    ~kind:`GET ~name:"getOn"
     ~descr:(Md.plain "Execute a GET request within the given project")
     ~input:(module ProjectRequest) ~output:(module Jany)
     (ProjectRequest.process `GET)
 
 let () = Request.register ~package
-    ~kind:`SET ~name:"kernel.project.setOn"
+    ~kind:`SET ~name:"setOn"
     ~descr:(Md.plain "Execute a SET request within the given project")
     ~input:(module ProjectRequest) ~output:(module Jany)
     (ProjectRequest.process `SET)
 
 let () = Request.register ~package
-    ~kind:`EXEC ~name:"kernel.project.execOn"
+    ~kind:`EXEC ~name:"execOn"
     ~descr:(Md.plain "Execute an EXEC request within the given project")
     ~input:(module ProjectRequest) ~output:(module Jany)
     (ProjectRequest.process `EXEC)
@@ -139,7 +139,7 @@ let () =
     ~package
     ~descr:(Md.plain "Create a new project")
     ~kind:`SET
-    ~name:"kernel.project.setCreate"
+    ~name:"create"
     ~input:(module Jstring)
     ~output:(module ProjectInfo)
     Project.create
diff --git a/src/plugins/server/package.ml b/src/plugins/server/package.ml
index c35d742370a57241d5d4f13c8519e73ecb1bda92..52e5ba465d2039c37b4ba96be0e762fa5e68cbbd 100644
--- a/src/plugins/server/package.ml
+++ b/src/plugins/server/package.ml
@@ -90,7 +90,7 @@ struct
   type t = {
     source : plugin ;
     mutable clashes : bool ;
-    mutable index : (string,(ident * int) list) Hashtbl.t ;
+    mutable index : (string,int IdMap.t) Hashtbl.t ;
     mutable names : string IdMap.t ;
     mutable reserved : NameSet.t ;
   }
@@ -115,19 +115,31 @@ struct
       scope.names <- IdMap.add id name scope.names ;
       let index = scope.index in
       match Hashtbl.find_opt index name with
-      | None -> Hashtbl.add index name [id,rk]
+      | None ->
+        Hashtbl.add index name (IdMap.add id rk IdMap.empty)
       | Some idks ->
-        if List.length idks = 1 then scope.clashes <- true ;
-        Hashtbl.replace index name ((id,rk) :: idks)
+        if IdMap.mem id idks then
+          scope.clashes <- true
+        else
+          Hashtbl.replace index name (IdMap.add id rk idks)
     end
 
-  let use scope id = push scope id 0
+  let use scope id =
+    if not (IdMap.mem id scope.names) then
+      push scope id 0
 
-  let reserve_name scope name =
+  let reserve scope name =
     assert (IdMap.is_empty scope.names) ;
     scope.reserved <- NameSet.add name scope.reserved
 
-  let reserve_ident scope { name } = reserve_name scope name
+  let declare scope id =
+    begin
+      let { name } = id in
+      if NameSet.mem name scope.reserved then
+        Senv.fatal "Reserved name for identifier '%a'" pp_ident id ;
+      scope.names <- IdMap.add id name scope.names ;
+      scope.reserved <- NameSet.add name scope.reserved ;
+    end
 
   let rec resolve scope =
     if not scope.clashes then scope.names else
@@ -136,11 +148,16 @@ struct
         scope.index <- Hashtbl.create 0 ;
         scope.clashes <- false ;
         Hashtbl.iter
-          (fun _name idks ->
-             match idks with
-             | [id,rk] -> push scope id rk
+          (fun name idks ->
+             match IdMap.bindings idks with
+             | [id,rk] ->
+               push scope id rk
              | idks ->
-               List.iter (fun (id,rk) -> push scope id (succ rk)) idks
+               Format.eprintf "CLASHING %S@." name ;
+               List.iter (fun (id,rk) ->
+                   Format.eprintf "RANK %a %d@." pp_ident id rk ;
+                   push scope id (succ rk)
+                 ) idks
           ) index ;
         resolve scope
       end
@@ -220,12 +237,12 @@ type packageInfo = {
 
 let name_of_ident id =
   String.concat "." @@ match id.plugin with
-  | Kernel -> id.package @ [ id.name ]
+  | Kernel -> "kernel" :: id.package @ [ id.name ]
   | Plugin p -> p :: (id.package @ [id.name ])
 
 let name_of_pkginfo pkg =
   String.concat "." @@ match pkg.d_plugin with
-  | Kernel -> pkg.d_package
+  | Kernel -> "kernel" :: pkg.d_package
   | Plugin p -> p :: pkg.d_package
 
 (* -------------------------------------------------------------------------- *)
@@ -257,7 +274,7 @@ let visit_dkind f = function
 
 let visit_decl f { d_kind } = visit_dkind f d_kind
 
-let visit_package_def f { d_content } =
+let visit_package_decl f { d_content } =
   List.iter (fun { d_ident } -> f d_ident) d_content
 
 let visit_package_used f { d_content } =
@@ -265,8 +282,8 @@ let visit_package_used f { d_content } =
 
 let resolve ?(keywords=[]) pkg =
   let scope = Scope.create pkg.d_plugin in
-  List.iter (Scope.reserve_name scope) keywords ;
-  visit_package_def (Scope.reserve_ident scope) pkg ;
+  List.iter (Scope.reserve scope) keywords ;
+  visit_package_decl (Scope.declare scope) pkg ;
   visit_package_used (Scope.use scope) pkg ;
   Scope.resolve scope
 
@@ -322,14 +339,11 @@ let userdoc ~plugin ~title ~descr = function
 (* --- Declarations                                                       --- *)
 (* -------------------------------------------------------------------------- *)
 
-let package ?plugin ?title ?(descr=[]) ?readme ~name () =
+let package ?plugin ~title ?(descr=[]) ?readme ~name () =
   check_package name ;
   let plugin = match plugin with None -> Kernel | Some p -> Plugin p in
   let pkgname = String.split_on_char '.' name in
   let pkgid = { plugin ; package = pkgname ; name = "*"} in
-  let title = match title with
-    | None -> Printf.sprintf "Package %s" name
-    | Some text -> text in
   let userdoc = userdoc ~plugin ~title ~descr readme in
   let pkgInfo = {
     d_plugin = plugin ;
@@ -374,16 +388,16 @@ let iter f =
       List.sort (fun a b -> Std.compare a.d_plugin b.d_plugin) @@
       List.rev_map
         (fun pkg -> { pkg.pkgInfo with d_content = List.rev pkg.revDecl })
-          !packages
+        !packages
     in collection := Some pkgs ; pkgs
 
 (* -------------------------------------------------------------------------- *)
 (* --- JSON To MarkDown                                                   --- *)
 (* -------------------------------------------------------------------------- *)
 
-let key kd = Md.emph (Printf.sprintf "$%s" kd)
-let index kd = Md.emph (Printf.sprintf "#%s" kd)
-let escaped tag = Md.code (Printf.sprintf "\"%s\"" @@ String.escaped tag)
+let key kd = Md.plain (Printf.sprintf "`#%s`" kd)
+let index kd = Md.plain (Printf.sprintf "`#0%s`" kd)
+let escaped tag = Md.plain (Printf.sprintf "`\"%s\"`" @@ String.escaped tag)
 
 type pp = {
   self: Md.text ;
@@ -432,10 +446,10 @@ and protect names js =
 
 let md_tags ?(title="Tags") (tags : tagInfo list) =
   let header = Md.[
-    plain title, Left;
-    plain "Value", Left;
-    plain "Description", Left
-  ] in
+      plain title, Left;
+      plain "Value", Left;
+      plain "Description", Left
+    ] in
   let row tg = [
     tg.tg_label ;
     escaped tg.tg_name ;
@@ -445,10 +459,10 @@ let md_tags ?(title="Tags") (tags : tagInfo list) =
 
 let md_fields ?(title="Field") pp (fields : fieldInfo list) =
   let header = Md.[
-    plain title, Left;
-    plain "Format", Center;
-    plain "Description", Left;
-  ] in
+      plain title, Left;
+      plain "Format", Center;
+      plain "Description", Left;
+    ] in
   let row f =
     match f.fd_type with
     | Joption js -> [
diff --git a/src/plugins/server/package.mli b/src/plugins/server/package.mli
index d7537422fdefc6468fa4b4248d70e13d6d116047..71cf068525868ea9d5c9c60e04b0f17fc14f5e57 100644
--- a/src/plugins/server/package.mli
+++ b/src/plugins/server/package.mli
@@ -109,10 +109,10 @@ module Scope :
 sig
   type t
   val create : plugin -> t
-  val reserve_name : t -> string -> unit (** Must _not_ be call after [use] *)
-  val reserve_ident : t -> ident -> unit (** Must _not_ be call after [use] *)
-  val resolve : t -> string IdMap.t
+  val reserve : t -> string -> unit (** Must _not_ be call after [use] *)
+  val declare : t -> ident -> unit (** Must _not_ be call after [use] *)
   val use : t -> ident -> unit
+  val resolve : t -> string IdMap.t
 end
 
 val visit_jtype : (ident -> unit) -> jtype -> unit
@@ -121,7 +121,7 @@ val visit_param: (ident -> unit) -> paramInfo -> unit
 val visit_request: (ident -> unit) -> requestInfo -> unit
 val visit_dkind: (ident -> unit) -> declKindInfo -> unit
 val visit_decl: (ident -> unit) -> declInfo -> unit
-val visit_package_def: (ident -> unit) -> packageInfo -> unit
+val visit_package_decl: (ident -> unit) -> packageInfo -> unit
 val visit_package_used: (ident -> unit) -> packageInfo -> unit
 
 (* -------------------------------------------------------------------------- *)
@@ -132,7 +132,7 @@ type package
 
 val package :
   ?plugin:string ->
-  ?title:string ->
+  title:string ->
   ?descr:Markdown.text ->
   ?readme:string ->
   name:string ->
diff --git a/src/plugins/server/server_doc.ml b/src/plugins/server/server_doc.ml
index cceee4ba16f2a83bebe919f83c913aaedd8451c2..9b607291269df7254797d1a47694f5c900133de5 100644
--- a/src/plugins/server/server_doc.ml
+++ b/src/plugins/server/server_doc.ml
@@ -195,8 +195,10 @@ let declaration page names decl =
 
 let package pkg =
   begin
+    Format.eprintf "PACKAGE %s@." (Package.name_of_pkginfo pkg);
     let page = page_of_package pkg in
     let names = Package.resolve pkg in
+    Format.eprintf "RESOLVED %s@." (Package.name_of_pkginfo pkg);
     List.iter (declaration page names) pkg.d_content ;
   end
 
@@ -353,6 +355,7 @@ let () =
         if Sys.file_exists root && Sys.is_directory root then
           begin
             Senv.feedback "[doc] Root: '%s'" root ;
+            Package.iter package ;
             dump ~root () ;
           end
         else
diff --git a/src/plugins/server/states.ml b/src/plugins/server/states.ml
index c238dcd7aca45d74ae9dd133261b0a9dbe75982f..0c664e7cf1f57ee5e03f7d70a452af87dd6674bf 100644
--- a/src/plugins/server/states.ml
+++ b/src/plugins/server/states.ml
@@ -287,7 +287,7 @@ let register_array ~package ~name ~descr ~key
     key ; iter ; getter ; signal ;
     current = None ; projects = Hashtbl.create 0
   } in
-  let signature = Request.signature () in
+  let signature = Request.signature ~input:(module Jint) () in
   let module Jkeys = Jlist(struct
       include Jstring
       let jtype = Package.Jkey name
diff --git a/src/plugins/server/syntax.ml b/src/plugins/server/syntax.ml
deleted file mode 100644
index 16d212fe017b9d3abe820c34e5e2a0d73ac60968..0000000000000000000000000000000000000000
--- a/src/plugins/server/syntax.ml
+++ /dev/null
@@ -1,158 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of Frama-C.                                         *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2020                                               *)
-(*    CEA (Commissariat à l'énergie atomique et aux énergies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* -------------------------------------------------------------------------- *)
-
-module Senv = Server_parameters
-
-let check_plugin plugin name =
-  let p = String.lowercase_ascii plugin in
-  let n = String.lowercase_ascii name in
-  let k = String.length plugin in
-  if not (String.length name > k &&
-          String.sub n 0 k = p &&
-          String.get n k = '-')
-  then
-    Senv.warning ~wkey:Senv.wpage
-      "Data %S shall be named « %s-* »"
-      name plugin
-
-let check_page page name =
-  match Server_doc.chapter page with
-  | `Kernel -> ()
-  | `Plugin plugin -> check_plugin plugin name
-  | `Protocol -> check_plugin "server" name
-
-let re_name = Str.regexp "[a-z0-9-]+$"
-
-let check_name name =
-  if not (Str.string_match re_name name 0) then
-    Senv.warning ~wkey:Senv.wname
-      "Data name %S is not a dash-separated list of lowercase identifiers" name
-
-(* -------------------------------------------------------------------------- *)
-
-type t = { atomic:bool ; text:Markdown.text }
-
-let atom md = { atomic=true ; text=md }
-let flow md = { atomic=false ; text=md }
-let text { text } = text
-
-let protect a =
-  if a.atomic then a.text else Markdown.(plain "(" @ a.text @ plain ")")
-
-let define left right =
-  Markdown.(Block_quote [Block[Text ( left @ plain ":=" @ right )]])
-
-let publish ~page ~name ~descr ~synopsis ?(details = []) ?generated () =
-  check_name name ;
-  check_page page name ;
-  let id = Printf.sprintf "data-%s" name in
-  let title = Printf.sprintf "`DATA` %s" name in
-  let index = [ Printf.sprintf "%s (`DATA`)" name ] in
-  let dref = Server_doc.href page id in
-  let dlink = Markdown.href ~text:(Markdown.emph name) dref in
-  let data = Markdown.(plain "<" @ dlink @ plain ">") in
-  let contents = Markdown.(Block(
-      [ Text descr ; define data synopsis.text ]
-    )) :: details in
-  let _href = Server_doc.publish ~page ~name:id ~title ~index ~contents ?generated ()
-  in atom dlink
-
-(* -------------------------------------------------------------------------- *)
-
-let unit = atom @@ Markdown.code "null"
-let any = atom @@ Markdown.emph "any"
-let int = atom @@ Markdown.emph "int"
-let ident = atom @@ Markdown.emph "ident"
-let string = atom @@ Markdown.emph "string"
-let number = atom @@ Markdown.emph "number"
-let boolean = atom @@ Markdown.emph "boolean"
-let data name dref = atom @@ Markdown.href ~text:(Markdown.emph name) dref
-
-let escaped name =
-  Markdown.code (Printf.sprintf "\"%s\"" @@ String.escaped name)
-
-let tag name = atom @@ escaped name
-let array a = atom @@ Markdown.(code "[" @ protect a @ code  ", … ]")
-
-let tuple ts =
-  atom @@
-  Markdown.(
-    code "[" @
-    glue ~sep:(code ",") (List.map protect ts) @
-    code "]"
-  )
-
-let union ts = flow @@ Markdown.(glue ~sep:(plain "|") (List.map protect ts))
-
-let option t = atom @@ Markdown.(protect t @ code "?")
-
-(* -------------------------------------------------------------------------- *)
-
-type tag = {
-  tag_name : string ;
-  tag_label : Markdown.text ;
-  tag_descr : Markdown.text ;
-}
-
-let tags ?(title="Tag") (tgs : tag list) =
-  let open Markdown in
-  let header = [
-    plain title, Left;
-    plain "Value", Left;
-    plain "Description", Left
-  ] in
-  let row tg = [ tg.tag_label ; escaped tg.tag_name ; tg.tag_descr ] in
-  Markdown.Table {
-    caption = None ; header ; content = List.map row tgs ;
-  }
-
-(* -------------------------------------------------------------------------- *)
-
-let mfield (a,t) = Markdown.( escaped a @ code ":" @ t.text )
-
-let record fds =
-  let fields =
-    if fds = [] then Markdown.plain "…" else
-      Markdown.(glue ~sep:(code ";") (List.map mfield fds))
-  in atom @@ Markdown.(code "{" @ fields @ code "}")
-
-type field = {
-  fd_name : string ;
-  fd_syntax : t ;
-  fd_descr : Markdown.text ;
-}
-
-let fields ?(title="Field") (fds : field list) =
-  let open Markdown in
-  let header = [
-    plain title, Left;
-    plain "Format", Center;
-    plain "Description", Left
-  ] in
-  let row f = [ escaped f.fd_name ; f.fd_syntax.text ; f.fd_descr ] in
-  Markdown.Table {
-    caption = None ; header ; content = List.map row fds ;
-  }
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/server/syntax.mli b/src/plugins/server/syntax.mli
deleted file mode 100644
index 97af72e315679451d18a460e73304be47a453972..0000000000000000000000000000000000000000
--- a/src/plugins/server/syntax.mli
+++ /dev/null
@@ -1,78 +0,0 @@
-(**************************************************************************)
-(*                                                                        *)
-(*  This file is part of Frama-C.                                         *)
-(*                                                                        *)
-(*  Copyright (C) 2007-2020                                               *)
-(*    CEA (Commissariat à l'énergie atomique et aux énergies              *)
-(*         alternatives)                                                  *)
-(*                                                                        *)
-(*  you can redistribute it and/or modify it under the terms of the GNU   *)
-(*  Lesser General Public License as published by the Free Software       *)
-(*  Foundation, version 2.1.                                              *)
-(*                                                                        *)
-(*  It is distributed in the hope that it will be useful,                 *)
-(*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *)
-(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *)
-(*  GNU Lesser General Public License for more details.                   *)
-(*                                                                        *)
-(*  See the GNU Lesser General Public License version 2.1                 *)
-(*  for more details (enclosed in the file licenses/LGPLv2.1).            *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* -------------------------------------------------------------------------- *)
-(** JSON Encoding Documentation *)
-(* -------------------------------------------------------------------------- *)
-
-type t
-
-val text : t -> Markdown.text
-
-(** The provided synopsis must be very short, to fit in one line.
-    Extended definition, like record fields and such, must be detailed in
-    the description block. *)
-val publish :
-  page:Server_doc.page -> name:string -> descr:Markdown.text ->
-  synopsis:t ->
-  ?details:Markdown.elements ->
-  ?generated:(unit -> Markdown.elements) ->
-  unit -> t
-
-val unit : t
-val any : t
-val int : t (* small, non-decimal, number *)
-val ident : t (* integer of string *)
-val string : t
-val number : t
-val boolean : t
-
-val tag : string -> t
-val array : t -> t
-val tuple : t list -> t
-val union : t list -> t
-val option : t -> t
-val record : (string * t) list -> t
-val data : string -> Markdown.href -> t
-
-type tag = {
-  tag_name : string ;
-  tag_label : Markdown.text ;
-  tag_descr : Markdown.text ;
-}
-
-(** Syntactic definition: LEFT := RIGHT *)
-val define : Markdown.text -> Markdown.text -> Markdown.block_element
-
-(** Builds a table with tags description.
-    The [~title] is applied to the tag name column
-    (shall be capitalized, defaults to ["Tag"]). *)
-val tags : ?title:string -> tag list -> Markdown.element
-
-type field = { fd_name : string ; fd_syntax : t ; fd_descr : Markdown.text }
-
-(** Builds a table with fields description.
-    The [~title] is applied to the field name column
-    (shall be capitalized, defaults to ["Field"]). *)
-val fields : ?title:string -> field list -> Markdown.element
-
-(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/server/tests/batch/kernel_services.json b/src/plugins/server/tests/batch/kernel_services.json
index 5b58c627bfe01240de30931928d88a35352fbc83..395afbd860fca909c20baa1f245ec2a6b050fc02 100644
--- a/src/plugins/server/tests/batch/kernel_services.json
+++ b/src/plugins/server/tests/batch/kernel_services.json
@@ -1,4 +1,4 @@
 [
-  { id:"getLogs", request:"kernel.getLogs", data:null },
-  { id:"setLogs", request:"kernel.setLogs", data:false }
-]
\ No newline at end of file
+  { id:"getLogs", request:"kernel.services.getLogs", data:null },
+  { id:"setLogs", request:"kernel.services.setLogs", data:false }
+]
diff --git a/src/plugins/server/tests/batch/oracle/kernel_services.res.oracle b/src/plugins/server/tests/batch/oracle/kernel_services.res.oracle
index 7e1c091eeec6f5d3fdd51a5d05c677f0e1fee812..ac2abc0997009d1b6ec051d377c7addf128a0698 100644
--- a/src/plugins/server/tests/batch/oracle/kernel_services.res.oracle
+++ b/src/plugins/server/tests/batch/oracle/kernel_services.res.oracle
@@ -1,5 +1,5 @@
 [kernel] Parsing tests/batch/kernel_services.i (no preprocessing)
 [server] Script "tests/batch/kernel_services.json"
-[server] [GET] kernel.getLogs
-[server] [SET] kernel.setLogs
+[server] [GET] kernel.services.getLogs
+[server] [SET] kernel.services.setLogs
 [server] Output "tests/batch/result/kernel_services.out.json"