Restructuring the gather functions in IG