anchor.diff:     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,
  
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:       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
  