let available_views ?kind () =
  match kind with
    None -> List.map (fun f -> f#name) !factories
  | Some k ->
      List.fold_left
        (fun acc f ->
          if List.mem k f#known_ressource_kinds then
            f#name :: acc
          else
            acc
        )
        []
        !factories