duck typing concept explained