anchor.diff:  %% Returns : ok | doesn't return
   %%--------------------------------------------------------------------
   check_for_tables([H | T]) ->
  -    %% check if table exists - XXX is there a more obvious way than to check arity?
  -    case catch mnesia:table_info(H, arity) of
  +    %% check if table exists
  +    case catch mnesia:table_info(H, record_name) of
   	{'EXIT', {aborted, {no_exists, H, arity}}} ->
   	    logger:log(error, "Startup problem: Mnesia table '~p' does not exist - did you bootstrap Yxa? "
   		       "(see README file)~n", [H]),
  
positive.code: 		      logger:log(error, "Startup: This application needs remote tables ~p but you " ++
  				 "haven't configured any databaseservers, exiting.",
  				 [RemoteTables]),
  		      logger:quit(none),
  		      erlang:fault("No databaseservers configured");
  		  Res ->
  		      Res
  	      end,
  
negative.code: %% Descrip.: Initiate Mnesia on this node. If there are no remote
  %%           mnesia-tables, we conclude that we are a mnesia master
  %%           and check if any of the tables needs to be updated.
  %% Returns : ok | throw(...)
  %%--------------------------------------------------------------------
  init_mnesia(none) ->
      ok = check_for_tables([phone]),
      %% update old database versions
      try table_update:update() of
  	ok -> ok
      catch
  	error: Reason ->
  	    logger:log(error, "Startup problem: Mnesia table updating failed with reason :~n~p",
  		       [Reason]),
  	    timer:sleep(3 * 1000),
  
  	    %% Although very verbose (and only outputted to the console), the output of
  	    %% mnesia:info() can be really helpfull
  	    io:format("~n~nMnesia info :~n"),
  	    mnesia:info(),
  	    throw('Mnesia table update error')
      end,
      ok;
  init_mnesia(RemoteTables) when is_list(RemoteTables) ->
      DbNodes = case sipserver:get_env(databaseservers, none) of
  