proc addModel { phone subTree feature refN dimN type cbs dss tree } {

  # compose default names
  # ---------------------

  set dsname   $phone-$subTree
  set question 0=$phone
  set cbname   $phone-$subTree
  set root     ROOT-$subTree

  # Create new codebook $cbname in codebook set $cbs and
  # create new distribution $dsname in distribution set $dss
  # --------------------------------------------------------

  if {[$cbs index $cbname] < 0} { $cbs add $cbname $feature $refN $dimN $type }
  if {[$dss index $dsname] < 0} { $dss add $dsname $cbname }

  # compose name of hook node (question node) and the attached leaf node
  # --------------------------------------------------------------------

  set qnode hook-$dsname
  set lnode      $dsname

  # if the requested root in the tree does not yet exist, create it,
  # then add the new node (hook and leaf) by traversing all no-successors
  # ---------------------------------------------------------------------

  if {[$tree index $root] < 0} {
    $tree add $root {} $qnode $qnode $qnode "-"
    $tree add $qnode $question - $lnode - -
    $tree add $lnode {} - - - $dsname
  } else {
    $tree add $qnode $question - $lnode - - 
    $tree add $lnode {} - - - $dsname

    # Find last NO node starting at root

    set lidx [$tree index $root]
    set idx   $lidx

    while { [set idx [$tree.item($lidx) configure -no]] > -1} { set lidx $idx }
    $tree.item($lidx) configure -no [$tree index $qnode]
  }
}