add reverse_iterator, but not finished yet