protected override void OnInitialize()
        {
            base.OnInitialize();

            RxQuery(s => {
                return(s.Query <Catalog>()
                       .Join(s.Query <Stock>(),
                             catalog => catalog.Id,
                             stock => stock.ProductId,
                             (catalog, stock) => new { catalog, stock })
                       .Where(p => p.stock.Status == StockStatus.Available)
                       .Select(c => c.catalog)
                       .OrderBy(c => c.Name)
                       .Distinct()
                       .ToArray()
                       .ToList());
            }).Subscribe(Catalogs);

            Catalogs
            .Changed()
            .Throttle(TimeSpan.FromMilliseconds(30), Scheduler)
            .Subscribe(_ =>
            {
                CurrentCatalog.Value = (Catalogs.Value ?? Enumerable.Empty <Catalog>()).FirstOrDefault();
            });

            CurrentCatalog
            .Changed()
            .Select(_ => RxQuery(LoadAddressStock))
            .Switch()
            .Subscribe(AddressStock, CloseCancellation.Token);

            AddressStock
            .Changed()
            .Throttle(TimeSpan.FromMilliseconds(30), Scheduler)
            .Subscribe(_ =>
            {
                CurrentAddressStock.Value = (AddressStock.Value ?? Enumerable.Empty <AddressStock>()).FirstOrDefault();
            });

            CurrentAddressStock
            .Changed()
            .Select(_ => RxQuery(LoadStoks))
            .Switch()
            .Subscribe(Stocks, CloseCancellation.Token);

            Stocks
            .Changed()
            .Throttle(TimeSpan.FromMilliseconds(30), Scheduler)
            .Subscribe(_ =>
            {
                CurrentStock.Value = (Stocks.Value ?? Enumerable.Empty <Stock>()).FirstOrDefault();
            });

            CurrentStock
            .Changed()
            .Select(_ => RxQuery(LoadStockActions))
            .Switch()
            .Subscribe(StockActions, CloseCancellation.Token);

            StockActions
            .Changed()
            .Throttle(TimeSpan.FromMilliseconds(30), Scheduler)
            .Subscribe(_ =>
            {
                CurrentStockAction.Value = (StockActions.Value ?? Enumerable.Empty <StockAction>()).FirstOrDefault();
            });
        }