added 'repeat' method