re-implemented binary_search_tree from scratch
utilising new binary_tree structure, and making it more re-usuable
update to use the new binary_search_tree