anchor.diff:  
   gen_tcp_options(Options) ->
       lists:filter(fun (O) -> my_option(O) == false end,
  -                 proplists:normalize(Options, [])).
  +                 proplists:unfold(proplists:normalize(Options, []))).
   
   default_client_handler(Parent, ClientSocket) ->
       gen_tcp:controlling_process(ClientSocket, Parent),
  
positive.code: 
  new_client(Parent, _ListenSock, ClientSock) ->
      case gen_server:call(Parent, {new_client, ClientSock}) of
          {ok, ClientHandlerFn, ClientParent} ->
              Result = (catch ClientHandlerFn(ClientParent, ClientSock)),
              handle_new_client(Result)
      end.
  
  handle_new_client(ok) -> ok;
  
negative.code:     erlang:demonitor(Ref),
      {reply, ok, S#state{controlling_process=Pid,
                          cp_monitor=erlang:monitor(process, Pid)}};
  handle_call({new_client, _CliSock}, _From, S = #state{controlling_process=P,
                                                       listen_socket=Socket,
                                                       options=O}) ->
      ClientHandler =  proplists:get_value(client_handler, O,
  