         }
     }
     
-    /// Checks if a give type is primitive
+    /// Checks if a given type is primitive.
     ///
-    /// - Parameter type: The type
-    /// - Returns: A boolean value indicating if the type is primitive
+    /// - Parameter type: The type.
+    /// - Returns: A boolean value indicating if the type is primitive.
     private func isPrimitive<ValueType>(type: ValueType.Type) -> Bool {
         switch type {
         case is String.Type, is Bool.Type, is Int.Type, is Float.Type, is Double.Type:

/// Provides strongly typed values associated with the lifetime
/// of an application. Apropriate for user preferences.
/// - Warning
/// Shoud not be used to store sensitive information that could compromise
/// the application or the user's security.
public final class Defaults {
    
    private var userDefaults: UserDefaults
    
    /// Shared instance of `Settings`, used for ad-hoc settings throughout
    /// the app.
    public static let shared = Defaults()
    
    /// An instance of Settings with the specified `UserDefaults` instance
    ///
    /// - Parameter userDefaults: The UserDefaults
    public init(userDefaults: UserDefaults = UserDefaults.standard) {
        self.userDefaults = userDefaults
    }

    ///
    /// - Parameters:
    ///   - some: The value to set.
    ///   - key: The associated `Key<ValueType>`.
    public func set<ValueType>(_ some: ValueType, for key: Key<ValueType>) {
        if isPrimitive(type: ValueType.self) {
            self.userDefaults.set(some, forKey: key._key)
