on program events pipe subscribe