change pipe emit semantics to be more common, and update extension arg handling