more experimenting with a GADT representation