     public static func onFirstStartForCurrentVersion(block: (isFirstStartForCurrentVersion: Bool) -> ()) {
         let defaults = NSUserDefaults.standardUserDefaults()
         let hasBeenOpenedForCurrentVersion: Bool = defaults.boolForKey(BFHasBeenOpenedForCurrentVersion)
-        if hasBeenOpenedForCurrentVersion == false {
+        if hasBeenOpenedForCurrentVersion != true {
             defaults.setBool(true, forKey: BFHasBeenOpenedForCurrentVersion)
             defaults.synchronize()
         }
         
-        block(isFirstStartForCurrentVersion: !hasBeenOpenedForCurrentVersion)
+       block(isFirstStartForCurrentVersion: !hasBeenOpenedForCurrentVersion)
+    }
+    
+    /**
+     Executes a block on first start of the App for current given version.
+     Remember to execute UI instuctions on main thread
+     
+     - parameter version: Version to be checked
+     - parameter block:   The block to execute, returns isFirstStartForVersion
+     */
+    public static func onFirstStartForVersion(version: String, block: (isFirstStartForVersion: Bool) -> ()) {
+        let defaults = NSUserDefaults.standardUserDefaults()
+        let hasBeenOpenedForVersion: Bool = defaults.boolForKey(BFHasBeenOpened + "\(version)")
+        if hasBeenOpenedForVersion != true {
+            defaults.setBool(true, forKey: BFHasBeenOpened + "\(version)")
+            defaults.synchronize()
+        }
+        
+        block(isFirstStartForVersion: !hasBeenOpenedForVersion)
+    }
+    
+    /// Returns if is the first start of the App
+    public static var isFirstStart: Bool {
+        let defaults = NSUserDefaults.standardUserDefaults()
+        let hasBeenOpened: Bool = defaults.boolForKey(BFHasBeenOpened)
+        if hasBeenOpened != true {
+            return true
+        } else {
+            return false
+        }
+    }
+    
+    /// Returns if is the first start of the App for current version
+    public static var isFirstStartForCurrentVersion: Bool {
+        let defaults = NSUserDefaults.standardUserDefaults()
+        let hasBeenOpenedForCurrentVersion: Bool = defaults.boolForKey(BFHasBeenOpenedForCurrentVersion)
+        if hasBeenOpenedForCurrentVersion != true {
+            return true
+        } else {
+            return false
+        }
+    }
+    
+    /**
+     Returns if is the first start of the App for the given version
+     
+     - parameter version: Version to be checked
+     
+     - returns: Returns if is the first start of the App for the given version
+     */
+    public static func isFirstStartForVersion(version: String) -> Bool {
+        let defaults = NSUserDefaults.standardUserDefaults()
+        let hasBeenOpenedForCurrentVersion: Bool = defaults.boolForKey(BFHasBeenOpened + "\(version)")
+        if hasBeenOpenedForCurrentVersion != true {
+            return true
+        } else {
+            return false
+        }
     }
 }

    public static func onFirstStart(block: (isFirstStart: Bool) -> ()) {
        let defaults = NSUserDefaults.standardUserDefaults()
        let hasBeenOpened: Bool = defaults.boolForKey(BFHasBeenOpened)
        if hasBeenOpened == false {
            defaults.setBool(true, forKey: BFHasBeenOpened)
            defaults.synchronize()
        }

/// Used to store the BFHasBeenOpened in defaults
private let BFHasBeenOpened = "BFHasBeenOpened"
/// Used to store the BFHasBeenOpenedForCurrentVersion in defaults
private let BFHasBeenOpenedForCurrentVersion = "\(BFHasBeenOpened)\(APP_VERSION)"

/// Get App name
public let APP_NAME: String = NSBundle(forClass: BFApp.self).infoDictionary!["CFBundleDisplayName"] as! String
