track: add repeat()