add GADT attempt