only creates hash once
only creates hash once