let create a = 
  match !idfree with
    | [] -> incr idref ; a , !idref
    | k::ks -> idfree := ks ; a , k