protected async Task ProcessAdds(IEnumerable <BaseItem> itemsToAdd)
        {
            var baseItems = itemsToAdd as IList <BaseItem> ?? itemsToAdd.ToList();

            foreach (var item in baseItems)
            {
                try
                {
                    await SetExectuingFileName(item.EntityId);

                    if (ExecutionContext.Instance.Status == ExecutionStatus.Stopped)
                    {
                        break;
                    }

                    //the root item of an association should not be created again
                    if (item.Id == item.Association.LocalFolderId || item.Id == item.Association.RemoteFolderId)
                    {
                        continue;
                    }
                    //skip files bigger than 50MB, these will have to be synced manually
                    //otherwise the upload/download could take too long and task would be terminated
                    //TODO make this configurable
                    if (item.Size > (50 * 1024 * 1024) & _isBackgroundTask)
                    {
                        item.SyncPostponed = true;
                        ItemTableModel.GetDefault().UpdateItem(item, item.Id);
                        continue;
                    }

                    string targetEntitiyId = null;

                    if (item.AdapterType == _targetEntityAdapter.GetType())
                    {
                        targetEntitiyId = _sourceEntityAdapter.BuildEntityId(item);
                    }

                    if (item.AdapterType == _sourceEntityAdapter.GetType())
                    {
                        targetEntitiyId = _targetEntityAdapter.BuildEntityId(item);
                    }

                    //if a new item is added which already exists on the other side we just assume
                    //that they both have the same content and just create a link but do not upload/download anything
                    //this the could be the case at the initial sync. The initial sync should never update
                    //items on one side because we can not compare the contents of files
                    var foundItem = ItemTableModel.GetDefault().GetItemFromEntityId(targetEntitiyId);
                    var result    = foundItem ?? await Insert(item);

                    AfterInsert(item, result);
                    if (await TimeIsOver())
                    {
                        break;
                    }
                }
                catch (Exception e)
                {
                    ToastHelper.SendToast(string.Format("Message: {0}, EntitityId: {1}", e.Message, item.EntityId));
                    await
                    LogHelper.Write(string.Format("Message: {0}, EntitityId: {1} StackTrace:\r\n{2}", e.Message,
                                                  item.EntityId, e.StackTrace));
                }
            }
        }