anchor.diff:          yes -> nop;
           no  -> shutdown(S#jsrv.peer,S)
       end,
  -    timer:send_after(500,?EJMSG(erlang:make_ref(), ?TAG_OK,[?EJMSGPART(call,bye)])),
       log:info(self(),"stopping with state: ~w", [S]),
       {noreply, S#jsrv{stopping=true}};
   handle_cast(Msg,S) ->
  
positive.code:               ,stopping = false
                }).
  
  start() ->
      start(?DEFAULT_N).
  
  
negative.code:     {noreply,S};
  % ej_srv messages
  handle_info({From,_Ref,{?TAG_OK,[?EJMSGPART(call,handshake)]}},S) ->
      log:debug(self(), "info handshake from: ~p", [From]),
      {noreply, S#jsrv{peer=From}};
  handle_info(Msg={'EXIT', Pid, Reason},S) ->
      log:warn(self(), "EXIT from ~w with reason: ~w", [Pid,Reason]),
      Peer =  S#jsrv.peer,
      S1 =
      if 
          is_port(Pid) -> S;
          true         -> 
              case Msg of
                  {'EXIT', Peer, noconnection} ->
                      case S#jsrv.stopping of
                          true  -> S;
                          false -> 
                              S#jsrv{peer=handshake(S#jsrv.bindir)}
                      end;
                  Any ->
                      log:debug(self(), "don't know how to handle exit: ~w", [Any]),
                      S
              end
      end,
      {noreply, S1}; 
  handle_info({'STOP'},S) ->
      case S#jsrv.worker of
          yes -> 
  