add spec
add hash_key option