edge + interior functions ready