Allow to specify alternative types for properties

This effectively replaces broken `OrElse`.
ah yes I forgot the signature of `type`