fix lower_bound for non-bound values
implement find()