I'm not sure I like the implicit that adds "~" to Tuple2. I think this kind of stuff should either require a domain-specific type, or be defined inside a trait, so that it is easier to control it's scope.
--
Daniel C. Sobral
Something I learned in academia: there are three kinds of academic reviews: review by name, review by reference and review by value.