Deconstraining data types through functorial fixpoints