ad-hoc polymorphisms