If we have associated type synonyms, is there still reason to have associated data types?

For example, we can replace:

class C b where
 data D b
 ...

instance C Int where
 data D Int = D | E

with:

class C b where
 type D b
 ...

data DInt = D | E
instance C Int where
 type D Int = DInt


Or perhaps allow, for convenience, this form (which would desugar to the above):

class C b where
 type D b
 ...

instance C Int where
 data D Int = D | E