added defaultKey callback and reproducible unique keys