move the peer pipe extension to it's own lib file
move the listeners up to the link object