         let scrollOffset = scrollView.contentOffset.y;
         
         if(self.numberOfReceiptsChangedUponLastUpdate &&
-                !self.refreshControl.refreshing &&
+                !self.currentlyFetchingReceiptsData &&
                 scrollOffset + scrollViewHeight >= 0.8 * scrollViewContentSizeHeight) {
             print("Debug: scrollViewDidScroll update") // <- DEBUG
-            loadAdditionalReceipts()
-        }
-    }
-    
-    func loadAdditionalReceipts() {
-        let previousNumberOfReceipts = self.receiptsTableViewDataSource.receipts.count
-        self.fetchReceiptsFromAPI()  // this needs to be refactored to get(skip: receipts.count, take: default)
-        let updatedNumberOfReceipts = self.receiptsTableViewDataSource.receipts.count
-        
-        self.numberOfReceiptsChangedUponLastUpdate = (previousNumberOfReceipts == updatedNumberOfReceipts) ? false : true;
+            self.fetchReceiptsFromAPI()
+        }
     }
     
     func setupTableViewStyling() {

    
    func pullToRefresh() {
        print("Pull to refresh")
        fetchReceiptsFromAPI()
        self.numberOfReceiptsChangedUponLastUpdate = true
    }
    
    func fetchReceiptsFromAPI() {
        print("Attempting to fetch data...")
        
        var fetchedReceipts: [POSReceipt] = []
        
        // completion methods
        func setFetchedObjects(APICallResult: Dictionary<String,AnyObject>){
            self.receiptsTableViewDataSource.receipts = parseReceiptsFrom(APICallResult["receipt"]!) // set in success method as it's called asynchronously
            print("Successfully fetched receipts.")
            self.tableView.reloadData()
            self.updateNavbar()
            self.updateToolbarButtonItems()
            self.refreshControl.endRefreshing()
        }
        func f(e: APIError){ print(e.altertMessage) }
                
        let parameters : Dictionary<String,String> = {
            ["skip": "2", "take": "2"];
        }()
        
        APIClient.sharedClient.updateReceiptsInMailboxWithDigipostAddress(self.mailboxDigipostAddress, uri: self.receiptsUri, parameters: parameters, success: setFetchedObjects, failure: f)
    }
    
    func parseReceiptsFrom(APICallReceiptResult: AnyObject) -> Array<POSReceipt>{
        var receiptList:Array<POSReceipt> = []
        
        let managedObjectContext = POSModelManager.sharedManager().managedObjectContext

        for index in 0...(APICallReceiptResult.count-1 /* 0-indexed */) {
            var receiptAttributes: Dictionary<String, AnyObject> = Dictionary<String,AnyObject>()
            
            for receiptFieldKey in APICallReceiptResult[index].allKeys {

    var mailboxDigipostAddress: String = "";
    var receiptsUri: String = "";
    var numberOfReceiptsChangedUponLastUpdate: Bool! = true;
    var currentlyFetchingReceiptsData: Bool! = false // mutex-like variable for avoiding duplicate calls upon continuous scrollViewDidScroll-method-invocation
    
    
    override func viewDidLoad() {
