I don't think I get the reason for having property(...) and propertyByType(...).

Isn't it simpler to merge the two into property(...)?