some tree structure and ideas
basic package structure