anchor.diff:        Tail
      ).
   
  +%%
  +%% terminate pipeline
  +-spec(free/1 :: ([proc()]) -> ok).
  +
  +free(Pipeline) ->
  +   lists:foreach(
  +      fun
  +      ({Pid, Ref}) ->
  +         _ = erlang:demonitor(Ref, [flush]),
  +         erlang:send(Pid, {'$pipe', self(), '$free'});
  +      (Pid) -> 
  +         erlang:send(Pid, {'$pipe', self(), '$free'}) 
  +      end,
  +      Pipeline
  +   ).
  +
   
   %%
   %% send message through pipe
  
positive.code: 
  %%
  %% spawn stateless pipe handler
  -spec(spawn/1      :: (function()) -> pid()).
  -spec(spawn_link/1 :: (function()) -> pid()).
  
  spawn(Fun) ->
     erlang:spawn(fun() -> pipe_loop(Fun, undefined, undefined) end).
  
  spawn_link(Fun) ->
     erlang:spawn_link(fun() -> pipe_loop(Fun, undefined, undefined) end).
  
  %%
  %% bind process to pipeline
  
negative.code:    start_link/4,
     spawn/1,
     spawn_link/1,
     spawn_monitor/1,
     bind/2,
     bind/3,
     make/1,
     free/1,
     a/2, 
     a/3,
     b/2,
  