add timestamp generation