replace NoDatatypeContexts with GADT