add function
fix include order
update bidirectional pipes