anchor.diff:  %%                     {error, Reason}
   %% @end
   %%--------------------------------------------------------------------
  -init([]) ->
  +init(InitialState) ->
       process_flag(trap_exit, true),
  -    loop([]).
  +    loop(InitialState).
   
   %%%===================================================================
   %%% Internal functions
   %%%===================================================================
   
  -loop(ChildList) ->
  +loop({Timeout, ChildList}) ->
       receive
   	{'EXIT', Pid, normal} ->
   	    NewChildList = restart_child(Pid, ChildList, normal),
  -	    loop(NewChildList);
  +	    loop({Timeout, NewChildList});
   	{'EXIT', Pid, killed} ->
   	    io:format("restarting child killed"),
   	    NewChildList = restart_child(Pid, ChildList, killed),
  -	    loop(NewChildList);
  +	    loop({Timeout, NewChildList});
   	{'EXIT', Pid, Reason} ->
   	    NewChildList = restart_child(Pid, ChildList, Reason),
  -	    loop(NewChildList);
  +	    loop({Timeout, NewChildList});
   	{stop, From} ->
   	    From ! {reply, self(), terminate_children(ChildList)};
   	{start_children, ChildSpecList} ->
   	    start_children(ChildSpecList),
  -	    loop(ChildList);
  +	    loop({Timeout, ChildList});
   	{ok, ChildPid, ChildSpec} ->
   	    io:format("Child for Spec '~p' is started.~n", [ChildSpec]),
   	    NewChildList = [{ChildPid, ChildSpec}|ChildList],
  -	    loop(NewChildList);
  +	    loop({Timeout, NewChildList});
   	{error, child_not_started, ChildSpec} ->
   	    io:format("Child for spec ~p cannot be started.~n", [ChildSpec]),
  -	    loop(ChildList);
  +	    loop({Timeout, ChildList});
   	{start_child, ChildSpec} ->
   	    start_child(ChildSpec, ?Threshold, 0),
  -	    loop(ChildList)
  -    after 6000 ->
  +	    loop({Timeout, ChildList});
  +	{timeout, NewTimeout} ->
  +	    loop({NewTimeout, ChildList})
  +    after Timeout ->
   	    exit(timeout)
       end.
   
   start_children([]) ->
  -    [];
  +    %receive after ?StartChildTimeout -> ok end,
  +    ?Supervisor ! {timeout, infinity};
   start_children([ChildSpec|T]) ->
       self() ! {start_child, ChildSpec},
       start_children(T).
  
positive.code: %% @end
  %%--------------------------------------------------------------------
  start_link(ChildSpecList) ->
      Pid = spawn_link(?MODULE, init, [[]]),
      register(?Supervisor, Pid),
      Pid ! {start_children, ChildSpecList},
      {ok, Pid}.
  
negative.code: 	    ?Supervisor ! {ok, Pid, ChildSpec};
  	{error, child_not_started, ChildSpec} ->
  	    io:format("~p. Child for Spec '~p' was not started. Supervisor is trying again.~n", [Acc + 1, ChildSpec]),
  	    receive after round(?StartChildTimeout / ?Threshold) -> ok end,
  	    start_child(ChildSpec, Threshold, Acc + 1)
      end.
  
  