That is probably cleaner, or Hashable in Algebird.

There was a proposal, but I could never get something looked really good. Something like:

```scala
trait Hashable32[K] {
  def hash(k: K): Int
}

trait Hashable64[K] extends Hashable32[K] {
  def hash2(k: K): Long
  def hash(k: K): Int = {
    val l = hash2(k)
    ((l >>> 32) ^ l).toInt
   } 
}

trait Hashable128[K] extends Hashable64[K] {
  def hash4(k: K): (Long, Long)
  def hash2(k: K) = {
    val h = hash4(k)
    h._1 ^ h._2
  }
}
```
might do. I went overboard last time (shocker).