added edge functions/util