implement a tail recursive reverse, implement make set