             return property
         }
     }
+    
+    private func parse(value: Any) -> Any? {
+        if let string = value as? String {
+            if string.count > 35 {
+                let maxTextSize = string.index(string.startIndex, offsetBy: 35)
+                let substring = string[..<maxTextSize]
+                return String(substring)
+            }
+            
+            return value
+        }
+        
+        if let number = value as? Int {
+            return NSNumber(value: number)
+        }
+        
+        if let number = value as? UInt {
+            return NSNumber(value: number)
+        }
+        
+        if let number = value as? Bool {
+            return NSNumber(value: number)
+        }
+        
+        if let number = value as? Float {
+            return NSNumber(value: number)
+        }
+        
+        if let number = value as? Double {
+            return NSNumber(value: number)
+        }
+        
+        return nil
+    }
 }

            
            let property = parse(property: property)
            
            finalProperties[property] = value
        }
        
        return finalProperties

    
    public func set(properties: Properties) {
        
        let properties = prepare(properties: properties)!
        
        for (property, value) in properties {
            if let value = value as? String {
                Analytics.setUserProperty(value, forName: property)
            }
            else {
                Analytics.setUserProperty(String(describing: value), forName: property)
            }
            
        }
        
    }
