even better duck typing