adding two reverse implementations with discussion