switch to hash representation, closes #3; add timestamp