add missing __hash__