moved backend to use hashes