let load_template name =
  let file =
    let cma = Dynlink.adapt_filename (Printf.sprintf "%s.cma" name) in
    let filepath = path // cma in
    if Sys.file_exists filepath
    then filepath
    else if Sys.file_exists name
    then name
    else if Sys.file_exists cma
    then cma
    else template_not_found name
  in
  try
    Dynlink.loadfile file
  with Dynlink.Error e ->
    Benl_error.raise (Dynlink_error e)