anchor.diff:  
   update_opts({K,_} = T, Opts) when is_atom(K) -> lists:keystore(K, 1, Opts, T).
   
  -build_table(TableName, Columns) when is_atom(TableName), is_list(Columns) ->
  -    Cols = [list_to_atom(lists:flatten(io_lib:format("~p", [X]))) || X <- Columns],
  +
  +
  +create_cluster_table(TableName,Columns,Opts) ->
       DiscNodes = mnesia:table_info(schema, disc_copies),
       RamNodes = mnesia:table_info(schema, ram_copies),
  -    CompleteOpts = add_attribute(Cols, [{ram_copies, RamNodes}, {disc_copies, DiscNodes}]),
  -    create_table(TableName, CompleteOpts).
  -
  -build_table(TableName, Columns, Opts) when is_atom(TableName), is_list(Columns) ->
  +    create_table(TableName,Columns,[{ram_copies, RamNodes}, {disc_copies, DiscNodes}|Opts]).
  +
  +create_table(TableName,Columns,Opts) ->
       Cols = [list_to_atom(lists:flatten(io_lib:format("~p", [X]))) || X <- Columns],
       CompleteOpts = add_attribute(Cols, Opts),
       create_table(TableName, CompleteOpts).
  
positive.code: 		]).
  
  -export([add_attribute/2
  		, build_table/2
          , build_table/3
  		, delete_table/1
          , update_opts/2
          , read_all_rows/1
          , select_rows/2
          , read/2                 
          , insert_into_table/2    
          , write/2
          , delete/2
  		]).
  
negative.code: process_cmd({write, TableName, Row},                    Sock) -> send_resp(write(TableName, Row), Sock);
  process_cmd({delete, TableName, Key},                   Sock) -> send_resp(delete(TableName, Key), Sock);
  process_cmd({add_attribute, A, Opts},                   Sock) -> send_resp(add_attribute(A, Opts), Sock);
  process_cmd({delete_table, TableName},                  Sock) -> send_resp(drop_table(TableName), Sock);
  process_cmd({update_opts, Tuple, Opts},                 Sock) -> send_resp(update_opts(Tuple, Opts), Sock);
  process_cmd({read_all_rows, TableName},                 Sock) -> send_resp(read_all(TableName), Sock);
  process_cmd({create_table, TableName, Columns},         Sock) -> send_resp(create_table(TableName, Columns), Sock);
  process_cmd({create_table, TableName, Columns, Opts},   Sock) -> send_resp(create_table(TableName, Columns, Opts), Sock);
  process_cmd({create_cluster_table, TableName, Columns, Opts},   Sock) -> send_resp(create_cluster_table(TableName, Columns, Opts), Sock);
  process_cmd({select, TableName, MatchSpec},             Sock) -> send_resp(select(TableName, MatchSpec), Sock);
  process_cmd({insert, TableName, Row},                   Sock) -> send_resp(insert(TableName, Row), Sock).
  
  send_resp(Resp, Sock) ->
      RespBin = term_to_binary(Resp),
  