added recursive in-order visiting