     /// Deletes the value associated with the specified key, if any.
     ///
     /// - Parameter key: The key.
-    public func clear<T>(key: Key<T>) {
+    public func clear<ValueType>(key: Key<ValueType>) {
         self.userDefaults.set(nil, forKey: key._key)
         self.userDefaults.synchronize()
     }

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

    ///
    /// - 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:
            return true
