added "reverse" method