generalize reverse