anchor.diff:  
   spawn_monitor(Fun) ->
      erlang:spawn_monitor(fun() -> pipe_loop(Fun, undefined, undefined) end).
  -
  -spawn_opts(Fun, Opts) ->
  -   %% init function
  -   Init = case lists:keyfind(init, 1, Opts) of
  -      false  -> fun() -> ok end;
  -      {_, X} -> X
  -   end,
  -   %% start function
  -   Start = case lists:member(link, Opts) of
  -      true  -> 
  -         spawn_link;
  -      false ->
  -         case lists:member(monitor, Opts) of
  -            true  ->
  -               spawn_monitor;
  -            false ->
  -               spawn
  -         end
  -   end,
  -   erlang:Start(
  -      fun() -> 
  -         Init(),
  -         pipe_loop(Fun, undefined, undefined)
  -      end
  -   ).
  -
   
   %%
   %% bind process to pipeline
  
positive.code:   ,spawn/1
    ,spawn_link/1
    ,spawn_monitor/1
    ,spawn_opts/2
    ,bind/2
    ,bind/3
    ,make/1
  
negative.code: 
  %%
  %% spawn pipe functor stage
  -spec(spawn/1         :: (function()) -> pid()).
  -spec(spawn_link/1    :: (function()) -> pid()).
  -spec(spawn_monitor/1 :: (function()) -> {pid(), reference()}).
  
  spawn(Fun) ->
     erlang:spawn(fun() -> pipe_loop(Fun, undefined, undefined) end).
  