anchor.diff:  %% Supervisor callbacks
   -export([init/1]).
   
  --define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).
  +-define(CHILD(I, Type, Args), 
  +  {I, 
  +    {I, start_link, lists:flatten([proplists:get_value(I, Args, [])])}, 
  +    permanent, 5000, Type, [I]
  +  }).
   -define (IF (Bool, A, B), if Bool -> A; true -> B end).
   
   -define(SERVER, ?MODULE).
  
positive.code: %% to find out about restart strategy, maximum restart frequency and child
  %% specifications.
  %%--------------------------------------------------------------------
  init(_Args) ->
    RestServer    = ?CHILD(rest_server_sup, worker),
    BeehiveRouter = ?CHILD(beehive_router_sup, supervisor),
    % Setup beehive
    NodeType = config:search_for_application_value(node_type, beehive_router),
    sanity_checks:check(NodeType),
  
negative.code:   ShouldRunRestServer = config:search_for_application_value(run_rest_server, true),
    
    Children = lists:flatten([
      % For the distributed database
      ?CHILD(beehive_db_srv, worker, Args),
      % Manage the nodes and apps
      ?CHILD(node_manager, worker, Args),
      ?CHILD(app_manager, worker, Args),
      % Start the event manager
      ?CHILD(event_manager, worker, Args),
      ?CHILD(babysitter, worker, Args),
      ?CHILD(app_handler, worker, Args),
      % Storage stuff
      ?CHILD(beehive_storage_srv, worker, Args),
      ?CHILD(beehive_git_srv, worker, Args),
      % Rest server, should we run it?
      ?IF(ShouldRunRouter, BeehiveRouter, []),    
      ?IF(ShouldRunRestServer, RestServer, [])
  