add hop function