anchor.diff:  
   -behaviour(gen_statem).
   
  -%% REMOVE me
  --compile(export_all).
   
   -include_lib("gen_netlink/include/netlink.hrl").
   -define(SERVER, ?MODULE).
  
positive.code:         {ok, Value} ->
              Value
      end.
  transition_service(Service, VIPsOld, VIPsNew, State) ->
      Key = service_address(Service),
      OldBackends = find_or_default(Key, VIPsOld, []),
      NewBackends = orddict:fetch(Key, VIPsNew),
      update_backends(Service, OldBackends, NewBackends, State).
  
  update_backends(Service, OldBackends, NewBackends, State) ->
      BackendsToDelete = ordsets:subtract(OldBackends, NewBackends),
      BackendsToAdd = ordsets:subtract(NewBackends, OldBackends),
      lists:foreach(fun(BE) -> add_backend_to_service(BE, Service, State) end, BackendsToAdd),
      lists:foreach(fun(BE) -> delete_backend(BE, Service, State) end, BackendsToDelete).
  
  delete_old_vips_and_interfaces(VIPsOld, VIPsNew, State) ->
      InstalledServices = installed_services(State),
  
negative.code:     create_new_vips_and_interfaces(VIPsOld, VIPsNew, State),
      transition_services(VIPsOld, VIPsNew, State).
  
  %% Changes destinations
  transition_services(VIPsOld, VIPsNew, State) ->
      InstalledServices = installed_services(State),
      lists:foreach(fun(Service) -> transition_service(Service, VIPsOld, VIPsNew, State) end, InstalledServices).
  