improve docs
rely on NRVO when computing hashes