 		mDataTable = CNMappingTable(sourceTable: tbl)
 		if let filter = mNextRecordMappingFunction {
 			mDataTable.setFilter(filterFunction: filter)
-		}
-		if mNextVirtualFields.count > 0 {
-			mDataTable.mergeVirtualFields(callbacks: mNextVirtualFields)
-		}
-
-		/* clear next setting */
-		//mNextRecordMappingFunction = nil
-		//mNextVirtualFields = [:]
+			mNextRecordMappingFunction = nil
+		}
+		if let fields = mNextVirtualFields {
+			mDataTable.mergeVirtualFields(callbacks: fields)
+			mNextVirtualFields = nil
+		}
 
 		mTableView.noteNumberOfRowsChanged()
 		mTableView.reloadData()

	private var mNextDataTable:		CNMappingTable?
	private var mNextFieldNames:		Array<FieldName>?
	private var mNextRecordMappingFunction:	FilterFunction?
	private var mNextVirtualFields:		Dictionary<String, CNMappingTable.VirtualFieldCallback>

	private var mHasHeader:			Bool
	private var mIsEnable:			Bool

		case .ok(_):
			break
		case .error(let err):
			CNLog(logLevel: .error, message: err.toString(), atFunction: #function, inFile: #file)
		@unknown default:
			CNLog(logLevel: .error, message: "Unknown error", atFunction: #function, inFile: #file)
		}
		let path      = CNValuePath(identifier: nil, elements: [.member("table")])
		let table     = CNValueTable(path: path, valueStorage: storage)
