     dataSource.reloadData() { result in
       if let error = result.error {
         self.handleError(error)
+      } else {
+        self.helpMessageView.hidden = true
       }
       self.collectionView!.reloadData()
       self.refreshControl.endRefreshing()

  }
  
  private func handleError(error: SceneLoadingError) {
    switch error {
    case let .NoAddressConfigured: showAlert("Welcome to SceneLauncher!", message: "Please start by clicking on the settings icon and configuring your IP address")
    case let .Unknown: showAlert("Unknown error", message: "Could not load scenes")
    case let .LiveOsc(message): showAlert("LiveOSC error", message: message)
    case let .Timeout: showAlert("Timeout loading scenes", message: "Make sure the Ableton Live server address is correct in settings")
    }
  }
  

  let osc: OSCService
  let dataSource: SceneDataSource
  let refreshControl: UIRefreshControl
  let helpMessageView: UITextView
  
  override func viewDidLoad() {
    super.viewDidLoad()
    collectionView!.backgroundColor = UIColor.whiteColor()
    // TODO autolayout
    helpMessageView.frame = CGRect(x: UIConstants.margin, y: UIConstants.margin, width: collectionView!.bounds.width - 2 * UIConstants.margin, height: collectionView!.bounds.height)
  }

  override func viewDidAppear(animated: Bool) {
