anchor.diff:  atomic(Err) ->
       Err.
   
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +%%
  +%% Load a new schema from module M. Note: this does NOT upgrade/migrate
  +%% yet, and MAY be problematic (since it will show up as the latest schema).
  +%%
  +%% Thus, mainly intended for TESTING at this time.
  +%%
  +%% [schematool should mark the node with the currently active schema,
  +%% with 0,1 or more schema versions loaded after it. How should those
  +%% schemas be treated? They are basically tentative, but probably don't
  +%% form a chain; perhaps unrelated.]
  +
  +load_schema(M) ->
  +    Schema = module(M),
  +    application:ensure_all_started(mnesia),
  +    case mnesia:transaction(
  +	   fun() ->
  +		   %% will abort if schematool_info does not exist
  +		   mnesia:table_info(schematool_info, attributes),
  +		   add_schema_info(Schema)
  +	   end) of
  +	{atomic, Res} ->
  +	    Res;
  +	Err ->
  +	    io:format("Error when loading schema. "
  +		      "Has the node been initialized?\n", 
  +		      []),
  +	    Err
  +    end.
  +
   %% Add a new schema definition to schematool_info. Note
   %% that this is just one part of migrating the schema.
   %%
  
positive.code: -export(
     [module/1,
      create_schema/1,
      diff/2,
      diff_modules/2
     ]).
  
  -export([view_schemas/0]).
  
  -include("schematool.hrl").
  
  
negative.code: 
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% Collect tables that have been added, deleted or changed.
  %%
  %% Returns a list of actions that need to be performed to
  %% migrate from S0 to S1.
  %%
  %% Note: if N0 or N1 is just a single node, we do not have to
  %%  use the helper functions, just create/delete tables directly
  %%
  %% Note: interaction with add/delete nodes? 
  %% - (and changing fragments?)
  %%
  %% UNFINISHED
  %% - not sure if ordering is good
  