 		let keyboardDuration = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey]!.doubleValue
 		
 		UIView.animateWithDuration(keyboardDuration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
-			baseView.frame = CGRectMake(baseView.frame.origin.x, baseView.frame.origin.y, baseView.frame.size.width, baseView.frame.size.height + keyboardFrame.size.height)
+			baseView!.frame = CGRectMake(baseView!.frame.origin.x, baseView!.frame.origin.y, baseView!.frame.size.width, baseView!.frame.size.height + keyboardFrame.size.height)
 
 		}, completion: nil)
 	}

		let lastIndexPath = visibleRows?[visibleRows.count-1] as NSIndexPath?
		
		UIView.animateWithDuration(keyboardDuration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
			baseView.frame = CGRectMake(baseView.frame.origin.x, baseView.frame.origin.y, baseView.frame.size.width, baseView.frame.size.height - keyboardFrame.size.height)
		
		}, completion: {
			(finished: Bool) in

			if lastIndexPath {
	
				// Scroll down the table so that the last
				// visible row remains visible

		objc_sync_exit(self)
		
		let message = row["message"]
		if message != nil {
			
			// Compute approximate cell height, we can't
			// do better than this with APIs available in beta 3
