start fleshing out GADTs