use hash for storage