add TriFunction