added timestamp, generateSpec is now idempotent