selection problem
cleaner partion subroutine
BST data structure