more basic structure
add GeneralTree util