concrete VerbNep of Verb = CatNep ** open ResNep in {

  flags coding = utf8;
  flags optimize=all_subs ;

  lin
    UseV  v = predV v ;
    
    ComplVV v vp = insertTrans (insertVV (infVV vp) (predV v) vp.embComp vp) vp.subj ;       
    
    ComplVS v s  = insertTrans (insertObj2 (conjThat ++ s.s) (predV v)) VTransPost ;   
    
    ComplVQ v q  = insertObj2 (conjThat ++ q.s ! QIndir) (predV v) ;
    
    ComplVA v ap = insertObj (\\a => ap.s ! giveNumber a ! giveGender a) (predV v) ;
    
    
    
    SlashV2a v = predV v ** {c2 = {s = v.c2.s ; c = VTrans}} ;    
    -- use of these two functions
    Slash2V3 v np = 
      insertObjc (\\_ => np.s ! NPC Acc ++ v.c3 ) (predV v ** {c2 = {s = v.c2 ; c = VTrans}}) ; -- NEEDS CHECKING

    Slash3V3 v np = 
      insertObjc (\\_ => np.s ! NPC Acc ++ v.c3) (predV v ** {c2 = {s = v.c2 ; c = VTrans}}) ; 

                                
    -- Check for the use of 'Acc' case of noun instead of adding 'lai' and 'sanga' later
    SlashV2V v vp = insertVV (infV2V vp) (predV v) vp.embComp vp ** {c2 = {s = v.c1 ; c = VTrans}} ; 
    
    SlashV2S v s  = insertObjc2 (conjThat ++ s.s) (predV v ** {c2 = {s = "laI:" ; c = VTransPost}}) ;
    
    SlashV2Q v q  = insertObjc2 (conjThat ++ q.s ! QIndir) (predV v ** {c2 = {s = "sVg" ; c = VTransPost}}) ; 
      
    SlashV2A v ap = insertObjc (\\a => ap.s ! giveNumber a ! giveGender a  ) (predV v ** {c2 = {s = v.c2.s ; c = VTrans}}) ; 
    
    
    
    ComplSlash vp np = insertObject np vp ;
    
    
    SlashVV vv vp = 
      insertEmbCompl (insertObj (infVP vv.isAux vp).s (predV vv)) vp.embComp **
        {c2 = vp.c2} ;
    
    SlashV2VNP vv np vp = 
      insertObjPre (\\_ => np.s ! NPObj  )
        (insertObjc (infVP vv.isAux vp).s (predVc vv)) **
          {c2 = vp.c2} ;
    
    
    
    ReflVP v = insertObjPre (\\_ => reflPron) v ;
    UseComp comp = insertObj comp.s (predAux comp.t) ;
    
    
    PassV2 v = predV v ; -- need to be fixed
    
    
    AdvVP vp adv = insertObj (\\_ => adv.s ) vp ;

    AdVVP adv vp = insertAdV adv.s vp ;
    
    
    AdvVPSlash vp ad = insertObj (\\_ => ad.s ) vp ** {c2 = vp.c2} ; 
    AdVVPSlash ad vp = insertObj (\\_ => ad.s ) vp ** {c2 = vp.c2} ;    

    
    CompAP ap = {s = \\a => ap.s ! giveNumber a ! giveGender a ; t = NonLiving} ;
    
    CompNP np = {s = \\_ => np.s ! NPObj; t = np.t} ;
    
    CompAdv adv = {s = \\a => adv.s ; t = NonLiving} ;
    
    CompCN cn = {s = \\a => cn.s ! giveNumber a ! Nom ; t = cn.t} ;    
    
}
