 import SystemConfiguration
 import Foundation
 
-let ReachabilityChangedNotification = "ReachabilityChangedNotification"
-
-class Reachability: NSObject, Printable {
-    
-    typealias NetworkReachable = (Reachability) -> ()
-    typealias NetworkUneachable = (Reachability) -> ()
-
-    enum NetworkStatus: Printable {
-        
+public let ReachabilityChangedNotification = "ReachabilityChangedNotification"
+
+public class Reachability: NSObject, Printable {
+
+    public typealias NetworkReachable = (Reachability) -> ()
+    public typealias NetworkUneachable = (Reachability) -> ()
+
+    public enum NetworkStatus: Printable {
+
         case NotReachable, ReachableViaWiFi, ReachableViaWWAN
-        
-        var description: String {
+
+        public var description: String {
             switch self {
             case .ReachableViaWWAN:
                 return "Cellular"

                }
                return true
            }
            
            return false
        }
    }
    
    // MARK: - *** Private methods ***
    private var isRunningOnDevice: Bool = {
        #if (arch(i386) || arch(x86_64)) && os(iOS)

            }
        }
    }

    // MARK: - *** Public properties ***

    public var whenReachable: NetworkReachable?
    public var whenUnreachable: NetworkUneachable?
    public var reachableOnWWAN: Bool

    public var currentReachabilityStatus: NetworkStatus {
        if isReachable() {
            if isReachableViaWiFi() {
                return .ReachableViaWiFi
