support multiple hash methods