add duck typing