rearrange gadt section
corecursion and strict/nonstrict