Since (I don't think) obj in Binary will ever be generally equivalent to isinstance(obj, Binary) I wouldn't want to use that. I know I'm not necessarily Typical, but generic functions make a lot of intuitive sense to me, and as long as they don't use funny special constructs like this I think other people can pick them up quite easily as well. And RuleDispatch code reads pretty well, which is something I particularly like, and something that should make the resulting code accessible to people who have little understanding of RuleDispatch. I didn't read up about it at all before using it -- except to get the import right -- so I don't think you need a thorough understanding to start. But then I've read about it a while ago, so I might have lingering understanding that I've forgotten about.