let fromListWithSlaveWithSlaveWithSlave 
 ?(masterCallback:((choice->unit) option) = None)
 ?(masterPacking:((GObj.widget -> unit) option) = None
  (masterChoices:choices)

 ?(slaveCallback:((choice->unit) option) = None)
 ?(slavePacking:((GObj.widget -> unit) option) = None )
  (slaveChoices: choice -> choices) 

 ?(slaveSlaveCallback:((choice->unit) option) = None)
 ?(slaveSlavePacking:((GObj.widget -> unit) option) = None )
  (slaveSlaveChoices: choice -> choice -> choices) 

 ?(slaveSlaveSlaveCallback:((choice->unit) option) = None)
 ?(slaveSlaveSlavePacking:((GObj.widget -> unit) option) = None )
  (slaveSlaveSlaveChoices: choice -> choice -> choice -> choices) 
 
 = let master = 
     fromListWithSlaveWithSlave 
        ~masterCallback      ~masterPacking      masterChoices 
        ~slaveCallback       ~slavePacking       slaveChoices 
        ~slaveSlaveCallback  ~slaveSlavePacking  slaveSlaveChoices in
 
   let slaveSlaveSlave = make  
         ~generator:(fun r -> slaveSlaveSlaveChoices (r#get "master") (r#get "slave") (r#get "slaveSlave"))
         ~msg:(mkenv [("master",master#selected);("slave",master#slave#selected);("slaveSlave",master#slave#slave#selected)])
         ~key:"slaveSlaveSlave"
         ~callback:slaveSlaveSlaveCallback
         ~packing:slaveSlaveSlavePacking in

     let _ = master#slave#slave#add_child slaveSlaveSlave in master