anchor.diff:      ?MODULE ! {self(), clear_callback},
       wait().
   
  +-spec set_options(Options) -> 'ok' | {'error', {'bad_options', Options}} when
  +      Options :: [atom()].
  +
  +set_options(Options) ->
  +    ?MODULE ! {self(), set_options, Options},
  +    wait().
  +
  +-spec get_options() -> {'ok', Options} | 'none' when
  +      Options :: [atom()].
  +
  +get_options() ->
  +    ?MODULE ! {self(), get_options},
  +    wait().
   
   %%% Should be used solely by the release handler!!!!!!!
   -spec cycle() -> 'ok' | {'error', term()}.
  
positive.code: %% if something goes wront -> no heartbeat.
  
  check_callback(Callback) ->
      ok = erts_internal:system_check(schedulers),
      case Callback of
          undefined -> ok;
          {M,F} ->
  
negative.code:         {From, clear_callback} ->
              From ! {?MODULE, ok},
              loop(Parent, S#state{callback=undefined});
  	{From, set_options, Options} ->
              case validate_options(Options) of
                  Validated when is_list(Validated) ->
                      From ! {?MODULE, ok},
                      loop(Parent, S#state{options=Validated});
                  _ ->
  		    From ! {?MODULE, {error, {bad_options, Options}}},
                      loop(Parent, S)
              end;
          {From, get_options} ->
              Res = case S#state.options of
                        [] -> none;
                        Cb -> {ok, Cb}
                    end,
              From ! {?MODULE, Res},
              loop(Parent, S);
  	{From, cycle} ->
  	    %% Calls back to loop
  	    do_cycle_port_program(From, Parent, S);
  