     }
     
     // MARK: Check Version
+    /**
+        Checks the currently installed version of your app against the AppStore.
+        The default check is against the US App Store, but if your app is not listed in the US,
+        you should set the `countryCode` property before calling this method.
+    
+        :param: checkType The frequency in days in which you want a check to be performed
+            - .Immediatley
+    */
     func checkVersion(checkType: SirenVersionCheckType) {
         
         if (appID == nil) {

                    performVersionCheck()
                }
            }
            
        }
    }
    

}

// MARK: Siren
/**
    The Siren Class.
    
    A singleton that is initialized using the sharedInstance() method.
*/
public class Siren: NSObject
{
    // MARK: Constants
    
    // NSUserDefault key that stores the timestamp of the last version check
    let sirenDefaultStoredVersionCheckDate = "Siren Stored Date From Last Version Check"
    
    // NSUserDefault key that stores the version that a user decided to skip
    let sirenDefaultSkippedVersion = "Siren User Decided To Skip Version Update"
    
    // Current installed version of your app
    let currentVersion = NSBundle.mainBundle().currentVersion()
    
    // NSBundle path for localization
    let bundlePath = NSBundle.mainBundle().pathForResource("Siren", ofType: "Bundle")
    
    // MARK: Variables
    /**
        The SirenDelegate variable, which should be set if you'd like to be notified:
    
            - When a user selects a specific button in the alert
                - sirenDidShowUpdateDialog()
                - sirenUserDidLaunchAppStore()
                - sirenUserDidSkipVersion()     
                - sirenUserDidCancel()
            - When a successful version check has occured, and would like to present a localized message in a custom UI
                - sirenDidDetectNewVersionWithoutAlert(message: String)
    
    */
    weak var delegate: SirenDelegate?
    

    /**
        The debug flag, which is disabled by default.
    
        When enabled, a stream of println() statements are logged to your console whena  version check is performed.
    */
    var debugEnabled = false
    
    // Alert Vars
    /**
        Determines the type of Alert that should be shown.
    
        See the SirenALertType enum for full details.
    */
    var alertType = SirenAlertType.Option
    
    /**
    Determines the type of Alert that should be shown for major version updates: A.b.c
    
    If it's not set, it defaults to the value set for the general alertType property.
    
    See the SirenAlertType enum for full details.
    */
    var majorUpdateAlertType: SirenAlertType?
    
    /**
    Determines the type of Alert that should be shown for minor version updates: a.B.c
    
    If it's not set, it defaults to the value set for the general alertType property.
    
    See the SirenAlertType enum for full details.
    */
    var minorUpdateAlertType: SirenAlertType?
    
    /**
    Determines the type of Alert that should be shown for minor patch updates: a.b.C
    
    If it's not set, it defaults to the value set for the general alertType property.
    
    See the SirenAlertType enum for full details.
    */
    var patchUpdateAlertType: SirenAlertType?
    
    // Required Vars
    /**
        The App Store / iTunes Connect ID for your app.
    */
    var appID: String?
    
    /**
        The view controller on which will present the instance of UIAlertController.
        
        It is recommended that you set this value to window?.rootViewController before calling checkVersion()
    
        This property must be set before calling
    */
    var presentingViewController: UIViewController?
    
    // Optional Vars
    /**
        The name of your app. 
    
        By default, it's set to the name of the app that's stored in your plist.
    */
    var appName: String = (NSBundle.mainBundle().infoDictionary?[kCFBundleNameKey] as? String) ?? ""
    
    /**
        The region or country of the App Store within which your app is available.
        
        By default, all version checks are performed against the US App Atore. 
        If your app is not available in the US App Store, you should set it to the identifier 
        of at least one App Store within which it is available.

    */
    var countryCode: String?
    
    /**
        Overrides the default localization of a user's device when presenting the update message and button titles in the alert.
    
        See the SirenLanguageType enum for more details.
    */
    var forceLanguageLocalization: SirenLanguageType?
    
    /**
        Overrides the tint color for UIAlertController.
    */
    var alertControllerTintColor: UIColor?
    
    // Private
