 		Settings.shared.reset()
 
 		// delete core data store
-		_ = db?.perform(NSSelectorFromString("reset"))
+		_ = db?.perform(DBProxy.reset)
 
 		// user teardown
 		teardown()

		Settings.shared.load(with: self)

		// initialize core data
		_ = db?.perform(NSSelectorFromString("initialize"))

		// user initialize
		initialize()

	}
	
	private var db: NSObject? {
		guard let type = DBProxy.`class` as? NSObject.Type else { return nil }
		return type.perform(DBProxy.shared).takeUnretainedValue() as? NSObject
	}
}

// MARK: - Other

private enum InfoKeys {
	static let displayName = "CFBundleDisplayName"
	static let shortVersion = "CFBundleShortVersionString"
	static let version = "CFBundleVersionKey"
}

public extension Config {
	var appName: String {
		guard let value = Bundle.main.infoDictionary?[InfoKeys.displayName] as? String else { return "" }
		return value
	}

	var appVersion: Version {
		guard let value = Bundle.main.infoDictionary?[InfoKeys.shortVersion] as? String else { return "" }
		return value
	}

	var appBuild: String {
		guard let value = Bundle.main.infoDictionary?[InfoKeys.version] as? String else { return "" }
		return value
	}
}
