two step tree generation done
some parts of combination done
almost done