Proper support for GADTs