Hash table

Tests pass locally, still need some debugging to get travis tests working. nbd!