add BinarySearch and unit tests