Also I am not sure if we want to use `hash.put` instead of `hash.update` (which is used by python and openssl). But that's just a minor point (e.g. perl uses .add)
Well, it's there to implement the Range interface, but still, put doesn't make too much sense for me (maybe personal preference).