add type polymorphism to bst container