anchor.diff:  		 orelse element(1, Conf) =/= Key];
   remove(_, Else) ->
       Else.
  +
  +%% Translate scopes, i.e. init_per_group,group1 -> end_per_group,group1 etc
  +scope({pre_init_per_testcase, TC}) ->
  +    {post_end_per_testcase, TC};
  +scope({pre_init_per_group, GroupName}) ->
  +    {post_end_per_group, GroupName};
  +scope({post_init_per_group, GroupName}) ->
  +    {post_end_per_group, GroupName};
  +scope({pre_init_per_suite, SuiteName}) ->
  +    {post_end_per_suite, SuiteName};
  +scope({post_init_per_suite, SuiteName}) ->
  +    {post_end_per_suite, SuiteName};
  +scope(init) ->
  +    none.
  +
  +terminate_if_scope_ends(CBId, Function, CBs) ->
  +    case lists:keyfind(CBId, 1, CBs) of
  +        {CBId, Function, _ModState} = CB ->
  +            terminate([CB]),
  +            lists:keydelete(CBId, 1, CBs);
  +        _ ->
  +            CBs
  +    end.
   
   %% Fetch callback functions
   get_new_callbacks(Config, Fun) ->
  
positive.code: 			       {error, Reason :: term()}.
  init(Opts) ->
      call([{CB, call_init, undefined} || CB <- get_new_callbacks(Opts)],
  	 ct_suite_callback_init_dummy, undefined, []),
      ok.
  		      
  
  
negative.code: get_new_callbacks(_Config) ->
      [].
  
  save_suite_data_async(CBs) ->
      ct_util:save_suite_data_async(?config_name, CBs).
  
  get_callbacks() ->
      ct_util:read_suite_data(?config_name).
  
  