     
     /// Updates the keys of this instances strings file with those of the given strings file.
     /// Note that this will add new keys, remove not-existing keys but won't touch any existing ones.
-    public func incrementallyUpdateKeys(withStringsFileAtPath otherStringFilePath: String, addNewValuesAsEmpty: Bool, ignoreKeysWithBaseValueContainingAnyOfStrings: [String] = ["#bartycrouch-ignore!", "#bc-ignore!", "#i!"], force: Bool = false) {
+    public func incrementallyUpdateKeys(withStringsFileAtPath otherStringFilePath: String, addNewValuesAsEmpty: Bool, ignoreKeysWithBaseValueContainingAnyOfStrings: [String] = ["#bartycrouch-ignore!", "#bc-ignore!", "#i!"], force: Bool = false, updateCommentWithBase: Bool = true) {
         
         do {
             let newContentString = try String(contentsOfFile: otherStringFilePath)

            let oldTranslations = self.findTranslationsInLines(self.linesInFile)
            let newTranslations = self.findTranslationsInLines(linesInNewFile)
            
            let updatedTranslations: [(key: String, value: String, comment: String?)] = {
                
                var translations: [(key: String, value: String, comment: String?)] = []
                
                for (key, value, comment) in newTranslations {
                    
                    // skip keys marked for ignore
                    guard !value.containsAny(ofStrings: ignoreKeysWithBaseValueContainingAnyOfStrings) else {
                        continue
                    }
                    

                        }
                        
                        if !addNewValuesAsEmpty {
                            return newValue
                        }
                        
                        return ""
                        
                    }()
                    
                    let updatedComment: String? = try {
                        
                        let oldTranslation = oldTranslations.filter{ $0.0 == key }.first
                        
                        guard let oldComment = oldTranslation?.2 else {
                            // add new comment if none existed before
                            return newComment
                        }
                        
                        guard let newComment = newComment else {
                            // keep old comment if no new comment exists
                            return oldComment
                        }
                        
                        if force {
                            // override with comment in force update mode
                            return newComment
                        }
                        
                        let defaultCommentStructureRegex = try NSRegularExpression(pattern: "\\A Class = \".*\"; .* = \".*\"; ObjectID = \".*\"; \\z", options: .CaseInsensitive)
                        let structureMatches = defaultCommentStructureRegex.matchesInString(oldComment, options: .ReportCompletion, range: NSMakeRange(0, oldComment.characters.count))
                        
                        if updateCommentWithBase && structureMatches.count > 0 {
                            return newComment
                        } else {
                            return oldComment
                        }
                    }()
                    
                    let updatedTranslation = (key, updatedValue, updatedComment)
