anchor.diff:  	 action/3]).
   
   -record(state, {conn      :: dbus_connection(),
  -		backend   :: dbus_proxy()}).
  +		proxy     :: dbus_proxy(),
  +		i_mixin   :: boolean(),
  +		i_action  :: boolean()}).
   
   %%%===================================================================
   %%% occi_backend callbacks
   %%%===================================================================
   init(#occi_backend{opts=Props}) ->
       try parse_opts(Props) of
  -	{Service, Opts} ->
  -	    case connect_backend(Service) of
  -		{ok, Bus, Backend} ->
  -		    ?info("Initializing backend service: ~s~n", [Service]),
  -		    case dbus_proxy:call(Backend, ?BACKEND_IFACE, <<"init">>, [Opts]) of
  -			{ok, Schemas} ->
  -			    {ok, process_schemas(Schemas, []), #state{conn=Bus, backend=Backend}};
  -			{error, {Code, Err}} ->
  -			    ?debug("Error initializing: ~n"
  -				   "Code=~s~n"
  -				   "Reason=~n~s~n", [Code, Err]),
  -			    {error, Err}
  -		    end;
  -		{error, Err} ->
  -		    {error, Err}
  -	    end
  +	{Service, Opts} -> connect_backend(Service, Opts)
       catch throw:Err -> {error, Err}
       end.
   
   
  -terminate(#state{backend=Backend}) ->
  -    case dbus_proxy:call(Backend, ?BACKEND_IFACE, <<"terminate">>, []) of
  +terminate(#state{proxy=Backend}) ->
  +    case dbus_proxy:call(Backend, ?IFACE_BACKEND, <<"terminate">>, []) of
   	_ -> ok
       end.
   
  -save(#state{backend=Backend}=State, #occi_node{}=Node) ->
  +save(#state{proxy=Backend}=State, #occi_node{}=Node) ->
       ?info("[~p] save(~p)~n", [?MODULE, Node]),
  -    case dbus_proxy:call(Backend, ?BACKEND_IFACE, <<"save">>, [occi_renderer_dbus:render(Node)]) of
  +    case dbus_proxy:call(Backend, ?IFACE_BACKEND, <<"save">>, [occi_renderer_dbus:render(Node)]) of
   	ok ->
   	    {ok, State};
   	{error, Err} ->
   	    {{error, Err}, State}
       end.
   
  -delete(#state{backend=Backend}=State, #occi_node{id=Uri}=Node) ->
  +delete(#state{proxy=Backend}=State, #occi_node{id=Uri}=Node) ->
       ?info("[~p] delete(~p)~n", [?MODULE, Node]),
  -    case dbus_proxy:call(Backend, ?BACKEND_IFACE, <<"delete">>, [occi_uri:to_binary(Uri)]) of
  +    case dbus_proxy:call(Backend, ?IFACE_BACKEND, <<"delete">>, [occi_uri:to_binary(Uri)]) of
   	ok ->
   	    {ok, State};
   	{error, Err} ->
  
positive.code:     {Srv, Opts}.
  
  
  connect_backend(Service) ->
      case dbus_bus_connection:connect(session) of
  	{ok, Bus} ->
  	    case dbus_proxy:start_link(Bus, Service) of
  		{ok, Backend} -> {ok, Bus, Backend};
  		{error, _} = Err -> Err
  	    end;
  	{error, _} = Err -> Err
      end.
  
  
  process_schemas([], Acc) ->
      lists:reverse(Acc);
  
  process_schemas([#dbus_variant{type=string, value=Bin} | Rest], Acc) ->
      process_schemas(Rest, [Bin | Acc]);
  
  process_schemas([#dbus_variant{type={struct, [string, string]}, value={<<"path">>, Val}} | Rest], Acc) ->
      process_schemas(Rest, [{path, Val} | Acc]).
  
negative.code:     end.
  
  
  load(#state{proxy=Backend}=State, #occi_node{id=Uri}=Node, _Opts) ->
      ?info("[~p] load(~p)~n", [?MODULE, Uri]),
      case dbus_proxy:call(Backend, ?IFACE_BACKEND, <<"load">>, [occi_renderer_dbus:render(Node)]) of
  	{ok, N} ->
  	    {{ok, occi_parser_dbus:parse(N)}, State};
  	{error, Err} ->
  