sig
type a = Params.a
type 'a t = 'a Knn.Make(Params).t
val empty : 'a t
val create_balanced : (a * 'a) list -> 'a t
val add : a -> 'a -> 'a t -> 'a t
val find_k_nearest : 'a t -> int -> float -> a -> (float * a * 'a) list
val contents : 'a t -> (a * 'a) list
val rebalance : 'a t -> 'a t
end