anchor.diff:  		_  -> creator()
   	end.
   
  +delete(Id) when is_binary(Id) ->
  +	{atomic, Result} = mnesia:transaction(fun()->
  +		[ok = mnesia:delete_object(Row) || Row <- mnesia:match_object(#archive{board_id=Id, _='_'})],
  +		ok = mnesia:delete({board, Id})
  +	end),
  +	Result.
  +
   watch(Id) when is_binary(Id) ->
   	{atomic, Result} = mnesia:transaction(fun()->
   		case mnesia:read({board, Id}) of
  
positive.code: 	board_id
  }).
  
  -define(Tables, [
  	{board,   [{attributes, record_info(fields, board)}]},
  	{watcher, [{attributes, record_info(fields, watcher)}]}
  ]).
  
  init([]) ->
  
negative.code: 			_  -> mnesia:delete({watcher, self()})
  		end
  	end),
  	ok = case watchers(Id) of
  		[] -> delete(Id);
  		_  -> ok
  	end,
  	Result.
  
  publish(Id, Message) when is_binary(Id) ->
  	{ok, ZipMsg} = snappy:compress(erlang:term_to_binary(Message)),
  	{atomic, Watchers} = mnesia:transaction(fun()->
  		case mnesia:read({board, Id}) of
  			[] -> undefined;
  			_  ->
  				ok = mnesia:write(#archive{id={Id, timestamp(), getNewId()}, board_id=Id, data=ZipMsg }),
  				mnesia:match_object(#watcher{ pid='_', board_id=Id})
  		end
  	end),
  	[Pid ! Message || #watcher{pid=Pid} <- Watchers],
  	ok.
  
  notify(Id, Message) when is_binary(Id) ->
  	{atomic, Watchers} = mnesia:transaction(fun()->
  		case mnesia:read({board, Id}) of
  			[] -> undefined;
  