anchor.diff:  
   do_get_devices(State = #state{cache = Cache}) ->
     {reply, {ok, ets:tab2list(Cache)}, State}.
  +
  +do_get_device_by_id(State = #state{cache = Cache}, Id) ->
  +  case ets:lookup(Cache, Id) of
  +    [] ->
  +      {reply, {error, <<"Access is denied">>}, State};
  +    [Item|_] ->
  +      {reply, {ok, Item}, State}
  +  end.
   
   do_get_device_by_uid(State = #state{cache = Cache}, Uid) ->
     Match = ets:fun2ms(fun(Device = #device{uniqueId = UniqueId}) when UniqueId =:= Uid -> Device end),
  
positive.code:   {stop, Reason :: term(), NewState :: #state{}}).
  handle_call({get}, _From, State) ->
    do_get_devices(State);
  handle_call({get, UniqueId}, _From, State) ->
    do_get_device_by_uid(State, UniqueId);
  handle_call({create, Device}, _From, State) ->
    do_create_device(State, Device);
  
negative.code: -spec(get_by_uid(UniqueId :: string()) -> {ok, Rec :: #device{}} | {error, string()}).
  get_by_uid(UniquiId) ->
    gen_server:call(?SERVER, {get, UniquiId}).
  
  -spec(get_by_id(Id :: integer()) -> {ok, Rec :: #device{}} | {error, string()}).
  get_by_id(Id) ->
    gen_server:call(?SERVER, {get, Id}).
  
  -spec(create(Device :: #device{}) -> {ok, #device{}} | {error, string()}).
  create(Device) ->
  