reverse implementation started