let register_mode ?(replace=false) m =
try
ignore(Hashtbl.find available_modes m#name);
if replace then
Hashtbl.replace available_modes m#name m
else
failwith (Printf.sprintf "Mode %s already registered." m#name)
with
Not_found ->
Hashtbl.add available_modes m#name m