add: gen_sub