anchor.diff:  
   %% Get the block type information for the given block
   -spec get_type_info(Node :: node(),
  -                    BlockName :: block_name()) -> term().
  -
  -get_type_info(Node, BlockName) ->
  -  gen_server:call({?MODULE, Node}, {get_type_info, BlockName}).
  +                    BlockNameStr :: string()) -> term().
  +
  +get_type_info(Node, BlockNameStr) ->
  +  gen_server:call({?MODULE, Node}, {get_type_info, BlockNameStr}).
   
   
   %% Set a block value
   -spec set_value(Node :: node(),
  -                BlockName :: block_name(),
  -                ValueId :: value_id(),
  +                BlockNameStr :: string(),
  +                ValueIdStr :: string(),
                   Value :: value()) -> ok | {error, atom()}.
   
  -set_value(Node, BlockName, ValueId, Value) ->
  -  gen_server:call({?MODULE, Node}, {set_value, BlockName, ValueId, Value}).
  +set_value(Node, BlockNameStr, ValueIdStr, Value) ->
  +  gen_server:call({?MODULE, Node}, {set_value, BlockNameStr, ValueIdStr, Value}).
   
   
   %% Link a block output to a block input
   -spec add_link(Node :: node(),
  -               OutputBlockName :: block_name(),
  -               OutputValueId :: value_id(),
  -               Link :: link_def()) -> term().
  -
  -add_link(Node, OutputBlockName, OutputValueId, Link) ->
  -  gen_server:call({?MODULE, Node}, {add_link, OutputBlockName, OutputValueId, Link}).
  +               OutputBlockNameStr :: string(),
  +               OutputValueIdStr :: string(),
  +               LinkStrs :: list(string())) -> term().
  +
  +add_link(Node, OutputBlockNameStr, OutputValueIdStr, LinkStrs) ->
  +  gen_server:call({?MODULE, Node}, {add_link, OutputBlockNameStr, OutputValueIdStr, LinkStrs}).
   
   
   %% Unlink a block output from a block input
   -spec del_link(Node :: node(),
  -               OutputBlockName :: block_name(),
  -               OutputValueId :: value_id(),
  -               Link :: link_def()) -> term().
  -
  -del_link(Node, OutputBlockName, OutputValueId, Link) ->
  -  gen_server:call({?MODULE, Node}, {del_link, OutputBlockName, OutputValueId, Link}).
  +               OutputBlockNameStr :: string(),
  +               OutputValueIdStr :: string(),
  +               LinkStr :: list(string())) -> term().
  +
  +del_link(Node, OutputBlockNameStr, OutputValueIdStr, LinkStrs) ->
  +  gen_server:call({?MODULE, Node}, {del_link, OutputBlockNameStr, OutputValueIdStr, LinkStrs}).
   
   
   %% Create execution link from Executor to Executee block
   -spec add_exec_link(Node :: node(),
  -                    ExecutorBlockName :: block_name(),
  -                    ExecuteeBlockName :: block_name()) -> term().
  -
  -add_exec_link(Node, ExecutorBlockName, ExecuteeBlockName) ->
  -  gen_server:call({?MODULE, Node}, {add_exec_link, ExecutorBlockName, ExecuteeBlockName}).
  +                    ExecutorBlockNameStr :: string(),
  +                    ExecuteeBlockNameStr :: string()) -> term().
  +
  +add_exec_link(Node, ExecutorBlockNameStr, ExecuteeBlockNameStr) ->
  +  gen_server:call({?MODULE, Node}, {add_exec_link, ExecutorBlockNameStr, ExecuteeBlockNameStr}).
   
   
   %% Delete execution link from Executor to Executee block
   -spec del_exec_link(Node :: node(),
  -                    ExecutorBlockName :: block_name(),
  -                    ExecuteeBlockName :: block_name()) -> term().
  -
  -del_exec_link(Node, ExecutorBlockName, ExecuteeBlockName) ->
  -  gen_server:call({?MODULE, Node}, {del_exec_link, ExecutorBlockName, ExecuteeBlockName}).
  +                    ExecutorBlockNameStr :: string(),
  +                    ExecuteeBlockNameStr :: string()) -> term().
  +
  +del_exec_link(Node, ExecutorBlockNameStr, ExecuteeBlockNameStr) ->
  +  gen_server:call({?MODULE, Node}, {del_exec_link, ExecutorBlockNameStr, ExecuteeBlockNameStr}).
   
   
   %% Get all of the current created blocks on this node 
  
positive.code: 
  %% Create a copy of a block
  -spec copy_block(Node :: node(),
                   BlockName :: block_name(),
                   BlockDefn :: block_defn(),
                   InitAttribs :: list()) -> term().
  
  copy_block(Node, BlockName, BlockDefn, InitAttribs) ->
    gen_server:call({?MODULE, Node}, 
                    {copy_block, BlockName, BlockDefn, InitAttribs}).
  
  
  %% Delete a block
  -spec delete_block(Node :: node(),
                     BlockName :: block_name()) -> term().
  
  delete_block(Node, BlockName) ->
    gen_server:call({?MODULE, Node}, 
                    {delete_block, BlockName}).
  
  
  %% Get block values
  -spec get_block(Node :: node(),
                  BlockName :: block_name()) -> term().
  
  get_block(Node, BlockName) ->
    gen_server:call({?MODULE, Node}, {get_block, BlockName}).
  
  
  %% Get a block value
  -spec get_value(Node :: node(),
                  BlockName :: block_name(),
                  ValueId :: value_id()) -> term().
  
  get_value(Node, BlockName, ValueId) ->
    gen_server:call({?MODULE, Node}, {get_value, BlockName, ValueId}).
  
  
  %% Get list of block names
  -spec get_block_names(Node :: node()) -> term().
  
  get_block_names(Node) ->
    gen_server:call({?MODULE, Node}, get_block_names).
  
negative.code: %% =====================================================================
  %% Delete a block
  %% =====================================================================    
  handle_call({delete_block, BlockNameStr}, _From, State) ->
    BlockName = list_to_atom(BlockNameStr),
    Result = case block_supervisor:is_block(BlockName) of
      true -> block_supervisor:delete_block(BlockName);
    
      false -> {error, block_not_found}
    end,
    {reply, Result, State};
  
  