method remove ?(all=true) x = 
    if all then 
            let rm1binding = (fun k v -> if k=x then (Hashtbl.remove current k) else ()) in
            Hashtbl.iter rm1binding current
           else 
            (Hashtbl.remove current x)