         }
     }
 
-
-    var speedFormatter : NSNumberFormatter {
-        if let actual = _speedFormatter {
-            return actual
-        }
-
-        _speedFormatter = NSNumberFormatter()
-        _speedFormatter!.numberStyle = NSNumberFormatterStyle.DecimalStyle
-        _speedFormatter!.maximumFractionDigits = 1
-        _speedFormatter!.minimumFractionDigits = 1
+    // MARK: -
+
+    lazy var speedFormatter : NSNumberFormatter = {
+
+        let _speedFormatter = NSNumberFormatter()
+        _speedFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
+        _speedFormatter.maximumFractionDigits = 1
+        _speedFormatter.minimumFractionDigits = 1
         //_speedFormatter!.minimumSignificantDigits = 1
-        _speedFormatter!.notANumberSymbol = "—.—"
-        _speedFormatter!.nilSymbol = "—.—"
-
-        return _speedFormatter!
-    }
-    var _speedFormatter: NSNumberFormatter? = nil;
+        _speedFormatter.notANumberSymbol = "—.—"
+        _speedFormatter.nilSymbol = "—.—"
+
+        return _speedFormatter
+    }()
 
     func resetContentSize() {
         var preferredSize = preferredContentSize
         preferredSize.height = preferredViewHeight
         preferredSize.width = 320.0;
         preferredContentSize = preferredSize
-        println("Preferred size: \(preferredSize)")
     }
 
     var preferredViewHeight: CGFloat {
-        let itemCount = self.fetchedResultsController.fetchedObjects.count
+        let itemCount = (fetchedResultsController.fetchedObjects as Array!).count
         let rowCount = showingAll ? itemCount : min(itemCount, TableViewConstants.baseRowCount + 1)
-        return CGFloat(Double(rowCount) * TableViewConstants.todayRowHeight)
-    }
-
+        let font = UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
+        var size = (font.pointSize*2)+TableViewConstants.todayRowPadding
+
+        size = max(TableViewConstants.todayRowHeight, size)
+
+        if !showingAll {
+            return CGFloat(Double(rowCount-1) * Double(size)) + TableViewConstants.todayRowHeight
+        } else {
+            return CGFloat(Double(rowCount) * Double(size))
+        }
+    }
 }
-

        fetchRequest.predicate = NSPredicate(format: "isHidden = NO", argumentArray: nil)
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: "order", ascending: true)]

        _fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: Datamanager.sharedManager().managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
        _fetchedResultsController!.delegate = self

        let success = _fetchedResultsController!.performFetch(nil)

                    cell.speedLabel!.text = "\(speedFormatter.stringFromNumber(speed)) \(NSNumber.shortUnitNameString(realUnit))"
                }
                cell.arrowImageView!.image = image
                cell.updatedLabel!.text = dateTransformer.transformedValue(plot.plotTime) as? String
            } else {
                cell.speedLabel!.text = "—.—"
                cell.updatedLabel!.text = NSLocalizedString("Not updated", comment: "")
            }
            cell.nameLabel!.text = stationInfo.stationName
