add portal function