anchor.diff:              erlang:exit(Result);
           is_integer(Uses) ->
               ResultPid ! Result,
  -            if
  -                Hibernate =:= true ->
  -                    erlang:hibernate(?MODULE, handle_module_info_loop,
  -                                     [Uses - 1, ResultPid, Hibernate]);
  -                Hibernate =:= false ->
  -                    % XXX ignore spurious dialyzer error
  -                    handle_module_info_loop(Uses - 1, ResultPid, Hibernate)
  -            end;
  +            handle_module_info_loop_normal(Uses - 1, ResultPid);
           Uses =:= infinity ->
               ResultPid ! Result,
  -            if
  -                Hibernate =:= true ->
  -                    erlang:hibernate(?MODULE, handle_module_info_loop,
  -                                     [Uses, ResultPid, Hibernate]);
  -                Hibernate =:= false ->
  -                    % XXX ignore spurious dialyzer error
  -                    handle_module_info_loop(Uses, ResultPid, Hibernate)
  -            end
  +            handle_module_info_loop_normal(Uses, ResultPid)
  +    end.
  +
  +handle_module_info_loop_hibernate(Uses,
  +                                  {'cloudi_service_info_loop',
  +                                   Request, Module, Dispatcher,
  +                                   NewServiceState},
  +                                  ResultPid) ->
  +    Result = handle_module_info(Request, Module, Dispatcher,
  +                                NewServiceState),
  +    if
  +        Uses == 1 ->
  +            erlang:exit(Result);
  +        is_integer(Uses) ->
  +            ResultPid ! Result,
  +            erlang:hibernate(?MODULE, handle_module_info_loop_hibernate,
  +                             [Uses - 1, ResultPid]);
  +        Uses =:= infinity ->
  +            ResultPid ! Result,
  +            erlang:hibernate(?MODULE, handle_module_info_loop_hibernate,
  +                             [Uses, ResultPid])
       end.
   
   % duo_mode specific logic
  
positive.code:          _Timeout, _Priority, _TransId, _Pid,
           _Module, _Dispatcher, _ConfigOptions,
           _NewServiceState} = ModuleRequest ->
              handle_module_request_loop(Uses,
                                         ModuleRequest, ResultPid, Hibernate)
      end.
  
  handle_module_request_loop(Uses,
                             {'cloudi_service_request_loop',
                              Type, Name, Pattern,
                              RequestInfo, Request,
                              Timeout, Priority, TransId, Pid,
                              Module, Dispatcher, ConfigOptions,
                              NewServiceState}, ResultPid, Hibernate) ->
      Result = handle_module_request(Type, Name, Pattern,
                                     RequestInfo, Request,
                                     Timeout, Priority, TransId, Pid,
  
negative.code:          duo_mode_loop/1]).
  
  %% cloudi_services_internal callbacks
  -export([handle_module_request_loop_hibernate/2,
           handle_module_info_loop_hibernate/2]).
  
  -include("cloudi_configuration.hrl").
  -include("cloudi_logger.hrl").
  