consistent interface for run and pipe