triggerfactory functional