concrete StructuralZul of Structural = CatZul **
  open
    -- MorphoZul,
    ResZul, ParadigmsZul, Prelude, ParamX in {

  flags optimize=all ;

  lin
  -- AdA
  --   almost_AdA = mkAdA "almost" ;
  --   so_AdA = mkAdA "so" ;
  --   too_AdA = mkAdA "too" ;
    very_AdA = mkAdA "kakhulu" ;

  -- AdN
  --   almost_AdN = mkAdN "almost" ;
  --   at_least_AdN = mkAdN "at least" ;
  --   at_most_AdN = mkAdN "at most" ;

  -- Adv
  --   everywhere_Adv = mkAdv "everywhere" ;
  --   here_Adv = mkAdv "here" ;
  --   here7to_Adv = mkAdv ["to here"] ;
  --   here7from_Adv = mkAdv ["from here"] ;
  --   quite_Adv = mkAdv "quite" ;
  --   somewhere_Adv = mkAdv "somewhere" ;
  --   there_Adv = mkAdv "there" ;
  --   there7to_Adv = mkAdv "there" ;
  --   there7from_Adv = mkAdv ["from there"] ;

  -- AdV
  --   always_AdV = mkAdV "always" ;

  -- CAdv
  --   less_CAdv = mkCAdv "less" "no less" "than" ;
  --   more_CAdv = mkCAdv "more" "no more" "than" ;
  --   as_CAdv = mkCAdv "as" "not as" "as" ;

  -- Conj
  and_Conj = { s = \\_ => "futhi" ; fix = False } ;
  --   both7and_DConj = mkConj "both" "and";
  --   either7or_DConj = mkConj "either" "or" singular ;
  --   or_Conj = mkConj "or" singular ;
  --   if_then_Conj = mkConj "if" "then" singular ;

  -- Det
  --   every_Det = mkDeterminerSpec singular "every" "everyone" "everything" False ;
  --   few_Det = mkDeterminer plural "few" ;
  --   many_Det = mkDeterminer plural "many" ;
  --   much_Det = mkDeterminer singular "much" ;
  --   someSg_Det = mkDeterminer singular "some" ;
  --   somePl_Det = mkDeterminer plural "some" ;

  -- IAdv
    how_IAdv = {s = "kanjani" ; postIAdv = False } ;
    how8much_IAdv = {s = "kangakanani" ; postIAdv = False } ;
  --   when_IAdv = ss "when" ;
  --   where_IAdv = ss "where" ;
  --   why_IAdv = ss "why" ;

  -- IDet
  --   how8many_IDet = mkDeterminer plural ["how many"] ;
  --   whichPl_IDet = mkDeterminer plural ["which"] ;
  --   whichSg_IDet = mkDeterminer singular ["which"] ;

  -- IP
  --   whatPl_IP = mkIP "what" "what" "what's" plural ;
  --   whatSg_IP = mkIP "what" "what" "what's" singular ;
  --   whoPl_IP = mkIP "who" "whom" "whose" plural ;
  --   whoSg_IP = mkIP "who" "whom" "whose" singular ;

  -- IQuant
  --   which_IQuant = {s = \\_ => "which"} ;

  -- NP
  --   everybody_NP = regNP "everybody" singular ;
  --   everything_NP = regNP "everything" singular ;
  --   somebody_NP = regNP "somebody" singular ;
  --   something_NP = regNP "something" singular ;
  --   nobody_NP = regNP "nobody" singular ;
  --   nothing_NP = regNP "nothing" singular ;

  -- PConj
  --   but_PConj = ss "but" ;
  --   otherwise_PConj = ss "otherwise" ;
  --   therefore_PConj = ss "therefore" ;

  -- Predet
    -- all_Predet = { s = "nke" ; isPost = True } ;
  --   most_Predet = ss "most" ;
    -- only_Predet = { s = "dwa" ; isPost = True } ;
    -- not_Predet = { s : Str ; n : Number ; isPost : Bool }

  -- Prep
  --   above_Prep = mkPrep "above" ;
  --   after_Prep = mkPrep "after" ;
  --   before_Prep = mkPrep "before" ;
  --   behind_Prep = mkPrep "behind" ;
  --   between_Prep = mkPrep "between" ;
  --   by8agent_Prep = mkPrep "by" ;
  --   by8means_Prep = mkPrep "by" ;
  --   during_Prep = mkPrep "during" ;
  --   for_Prep = mkPrep "for" ;
  --   from_Prep = mkPrep "from" ;
  --   in8front_Prep = mkPrep ["in front of"] ;
  --   in_Prep = mkPrep "in" ;
  --   on_Prep = mkPrep "on" ;
  --   part_Prep = mkPrep "of" ;
  --   possess_Prep = mkPrep "of" ;
  --   through_Prep = mkPrep "through" ;
  --   to_Prep = mkPrep "to" ;
  --   under_Prep = mkPrep "under" ;
  --   without_Prep = mkPrep "without" ;
  --   with_Prep = mkPrep "with" ;
  --   except_Prep = mkPrep "except" ;

  -- Pron
    i_Pron  = mkPron (First Sg) ;
    we_Pron = mkPron (First Pl) ;

    youSg_Pron = mkPron (Second Sg) ;
    youPl_Pron = mkPron (Second Pl) ;

    he_Pron = mkPron (Third C1_2 Sg) ;
    it_Pron = mkPron (Third C3_4 Sg) ;
    she_Pron = mkPron (Third C1_2 Sg) ;
    they_Pron = mkPron (Third C1_2 Pl) ;

    --   youPol_Pron = mkPron "you" "you" "your" "yours" singular P2 human ;

  -- Quant (we use this category for demonstratives only)
    that_Quant = {
      s = \\b,a => dem_pron!Dem2!a ;
      dist = Dem2
    } ;
    -- this_Quant = { s = [] ; dist = Dem1 } ;
    this_Quant = {
      s = \\b,a => case b of {
        False => dem_pron!Dem1!a ;
        True => dem_pron!Dem1!a ++ dem_pron_na!a
      } ;
      dist = Dem1
    } ;
  --   no_Quant = mkQuant "no" "no" "none" "none" ;

  -- Subj
  --   although_Subj = ss "although" ;
  --   because_Subj = ss "because" ;
  --   if_Subj = ss "if" ;
  --   when_Subj = ss "when" ;
  --   that_Subj = ss "that" ;

  -- Utt
  --   no_Utt = ss "no" ;
  --   yes_Utt = ss "yes" ;
    language_title_Utt = ss "Zulu" ;

  -- Voc
  --   please_Voc = ss "please" ;

  -- V2
  --   have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ;

  -- VV
  --   can8know_VV
    can_VV = lin VV (mkV "yakwaz" "yakwazi") ;
  --   must_VV

}
