the new type might have different attributes. we need some mechanism to "migrate" the properties. open to other suggestions (e.g. require subsequent call to update attrs, but not sure that's better)