renamed to abstractBST