Change return type of pipe operator to shared_ptr
Implement channel encapsulation
Add encap tests