    
     // MARK: - Attributes
     
-    let reference: String
+    public let reference: String
     
     public let isa: String = "XCBuildConfiguration"
     
     /// The path to a xcconfig file
-    let baseConfigurationReference: String?
+    public let baseConfigurationReference: String?
     
     /// A map of build settings.
-    let buildSettings: [String: String]
+    public let buildSettings: [String: Any]
     
     /// The configuration name.
-    let name: String
+    public let name: String
     
     // MARK: - Init
     
+    /// Initializes a build configuration.
+    ///
+    /// - Parameters:
+    ///   - reference: build configuration reference.
+    ///   - baseConfigurationReference: reference to the base configuration.
+    ///   - buildSettings: dictionary that contains the build settings for this configuration.
+    ///   - name: build configuration name.
     public init(reference: String,
                 baseConfigurationReference: String? = nil,
-                buildSettings: [String: String],
+                buildSettings: [String: Any],
                 name: String) {
         self.reference = reference
         self.baseConfigurationReference = baseConfigurationReference

                                    name: self.name)
    }
    
    public func removingBuild(setting: String) -> XCBuildConfiguration {
        var mutableSettings = self.buildSettings
        mutableSettings.removeValue(forKey: setting)

    
    // MARK: - Public
    
    /// Returns a new build configuration adding the given setting.
    ///
    /// - Parameters:
    ///   - setting: setting to be added (key)
    ///   - value: setting to be added (value)
    /// - Returns: new build configuration after adding the value.
    public func addingBuild(setting: String, value: Any) -> XCBuildConfiguration {
        var mutableSettings = self.buildSettings
        mutableSettings[setting] = value
        return XCBuildConfiguration(reference: self.reference,
