use bst trait instead of abstract class
remove warnings