making BinaryTree a sealed abstract class