new version with type:type