The `hashes` variables are initialized as "", so those are string concatenation operations occurring (note the use of `.length` when generating the signature. That wouldn't work for a number.)

We could add tag name, but I thought the plan was to force a different tag ID if the tag name changes.