 
         self.ar_presentIndeterminateLoadingIndicatorAnimated(animated)
         
-        self.networkModel.fetch().next { saleViewModel in
-            self.setupForSale(saleViewModel)
+        self.networkModel.fetch().next { [weak self] saleViewModel in
+            self?.setupForSale(saleViewModel)
         }.error { error in
             // TODO: Error-handling somehow
         }

}

extension AuctionViewController {
    var sideSpacing: CGFloat {
        let compactSize = traitCollection.horizontalSizeClass == .Compact
        return compactSize ? 40 : 80
    }

    func setupSaleArtworksLayout(viewWidth: CGFloat) {
        // TODO: Module depends on current refineSettings
        saleArtworksViewController.modelViewController.activeModule = ARSaleArtworkItemFlowModule(traitCollection: traitCollection, width: viewWidth - sideSpacing)
    }

    func setupForSale(saleViewModel: SaleViewModel) {
        // TODO: Sale is currently private on the SaleViewModel, also Sale will need to be extended to conform to ARSpotlightMetadataProvider
        // artworksViewController.spotlightEntity = saleViewModel.sale

        hasLoadedSaleViewModel = true
        self.saleViewModel = saleViewModel

        let bannerView = AuctionBannerView(viewModel: saleViewModel)


class AuctionViewController: UIViewController {
    let saleID: String
    var saleViewModel: SaleViewModel!
    var appeared = false

