GADT and State Machines
blog.osau.re