terrible implementation
adding is_bst