anchor.diff:                                      Hibernate}, ResultPid) ->
       if
           OldInfoPid =:= undefined ->
  -            erlang:spawn_opt(fun() ->
  -                handle_module_info_loop(InfoPidUses,
  -                                        ModuleInfo, ResultPid, Hibernate)
  -            end, InfoPidOptions);
  +            if
  +                Hibernate =:= false ->
  +                    erlang:spawn_opt(fun() ->
  +                        handle_module_info_loop_normal(InfoPidUses,
  +                                                       ModuleInfo,
  +                                                       ResultPid)
  +                    end, InfoPidOptions);
  +                Hibernate =:= true ->
  +                    erlang:spawn_opt(fun() ->
  +                        handle_module_info_loop_hibernate(InfoPidUses,
  +                                                          ModuleInfo,
  +                                                          ResultPid)
  +                    end, InfoPidOptions)
  +            end;
           is_pid(OldInfoPid) ->
               OldInfoPid ! ModuleInfo,
               OldInfoPid
       end.
   
  --spec handle_module_info_loop(Uses :: infinity | pos_integer(),
  -                              ResultPid :: pid(),
  -                              Hibernate :: boolean()) ->
  -    no_return().
  -
  -handle_module_info_loop(Uses, ResultPid, Hibernate) ->
  +handle_module_info_loop_normal(Uses, ResultPid) ->
       receive
           {'cloudi_service_info_loop',
            _Request, _Module, _Dispatcher,
            _NewServiceState} = ModuleInfo ->
  -            handle_module_info_loop(Uses,
  -                                    ModuleInfo, ResultPid, Hibernate)
  -    end.
  -
  -handle_module_info_loop(Uses,
  -                        {'cloudi_service_info_loop',
  -                         Request, Module, Dispatcher,
  -                         NewServiceState}, ResultPid, Hibernate) ->
  +            handle_module_info_loop_normal(Uses,
  +                                           ModuleInfo,
  +                                           ResultPid)
  +    end.
  +
  +handle_module_info_loop_hibernate(Uses, ResultPid) ->
  +    receive
  +        {'cloudi_service_info_loop',
  +         _Request, _Module, _Dispatcher,
  +         _NewServiceState} = ModuleInfo ->
  +            handle_module_info_loop_hibernate(Uses,
  +                                              ModuleInfo,
  +                                              ResultPid)
  +    end.
  +
  +handle_module_info_loop_normal(Uses,
  +                               {'cloudi_service_info_loop',
  +                                Request, Module, Dispatcher,
  +                                NewServiceState},
  +                               ResultPid) ->
       Result = handle_module_info(Request, Module, Dispatcher,
                                   NewServiceState),
       if
  
positive.code:          duo_mode_loop/1]).
  
  %% cloudi_services_internal callbacks
  -export([handle_module_request_loop/3,
           handle_module_info_loop/3]).
  
  -include("cloudi_configuration.hrl").
  -include("cloudi_logger.hrl").
  
negative.code:             erlang:exit(Result);
          is_integer(Uses) ->
              ResultPid ! Result,
              handle_module_request_loop_normal(Uses - 1, ResultPid);
          Uses =:= infinity ->
              ResultPid ! Result,
              handle_module_request_loop_normal(Uses, ResultPid)
      end.
  
  handle_module_request_loop_hibernate(Uses,
                                       {'cloudi_service_request_loop',
                                        Type, Name, Pattern,
                                        RequestInfo, Request,
                                        Timeout, Priority, TransId, Pid,
                                        Module, Dispatcher, ConfigOptions,
                                        NewServiceState},
                                       ResultPid) ->
      Result = handle_module_request(Type, Name, Pattern,
                                     RequestInfo, Request,
                                     Timeout, Priority, TransId, Pid,
                                     Module, Dispatcher, ConfigOptions,
                                     NewServiceState),
      if
          Uses == 1 ->
              erlang:exit(Result);
          is_integer(Uses) ->
              ResultPid ! Result,
              erlang:hibernate(?MODULE, handle_module_request_loop_hibernate,
                               [Uses - 1, ResultPid]);
          Uses =:= infinity ->
              ResultPid ! Result,
              erlang:hibernate(?MODULE, handle_module_request_loop_hibernate,
                               [Uses, ResultPid])
      end.
  
  handle_module_info_loop_pid(OldInfoPid, ModuleInfo,
  