initial attempt at custom keys
fix multiple key bugs and update tests
a bunch of jshint fixes
fix incorrect test