anchor.diff:                  runenv=RunEnv},
       {ok, S}.
   
  -handle_call({calculate_projection_internal_old}, _From,
  -            #ch_mgr{runenv=RunEnv}=S) ->
  -    OldThreshold = proplists:get_value(old_threshold, RunEnv),
  -    NoPartitionThreshold = proplists:get_value(no_partition_threshold, RunEnv),
  -    {Reply, S2} = calc_projection(OldThreshold, NoPartitionThreshold, S),
  +handle_call({calculate_projection_internal_old}, _From, S) ->
  +    {Reply, S2} = calc_projection(S, [{author_proc, call}]),
       {reply, Reply, S2};
  +handle_call({sync_projection_calculation}, _From, S) ->
  +    {P, S2} = calc_projection(S, [{author_proc, cast}]),
  +    {reply, {ok, P}, S2};
   handle_call({cl_write_current_projection}, _From, S) ->
       {Res, S2} = do_cl_write_current_proj(S),
       {reply, Res, S2};
  
positive.code: calculate_projection_internal_old(Pid) ->
      gen_server:call(Pid, {calculate_projection_internal_old}, infinity).
  
  cl_write_current_projection(Pid) ->
      gen_server:call(Pid, {cl_write_current_projection}, infinity).
  
  trigger_projection_calculation(Pid) ->
      gen_server:cast(Pid, {trigger_projection_calculation}).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  
negative.code:            end,
      Rs = [perhaps_call_t(S, Partitions, FLU, fun() -> DoIt(FLU) end) ||
               FLU <- All_list],
      %% todo fix the disparity between the return tuples below
      case lists:usort(Rs) of
          [P] when is_record(P, projection) ->
              {ok, P, S2};
          _ ->
              FLUsRs = lists:zip(All_list, Rs),
              rank_and_repair_instructions(FLUsRs, Proj)
      end.
  
  make_initial_projection(MyName, All_list, UPI_list, Repairing_list, Ps) ->
  