use perfect forwarding to make tree
remove lambda overloading