Tree widget. resolves #2