 
 	for _ in 0..<times
 	{
-		let duration = performanceInNs(call)
+		let duration = durationNS(call)
 
 		if duration < min { min = duration }
 		if duration > max { max = duration }
-
 
 		elapsedNanoCombined += duration
 	}

	}
}

func benchmark(precision: String = "ms", _ call: () -> ()) -> Int
{
	// empty call duration to subtract
	let emptyCallNano = performanceInNs({})
	let elapsedNano = performanceInNs(call)

	let elapsedCorrected = elapsedNano < emptyCallNano ? 0 : elapsedNano - emptyCallNano

	return adjustPrecision(elapsedCorrected, toPrecision: precision)
}

func benchmarkPrint(precision: String = "ms", title: String, _ call: () -> ())
{
	print(title + ": \(benchmark(precision, call))" + precision)
}

func benchmarkAvg(precision: String = "ms",
	title: String = "",
	times: Int = 100,
	_ call: () -> ()) -> (min: Int, avg: Int, max: Int)
{
	let emptyCallsNano = performanceInNs(
	{
		for _ in 0..<times {}
	})

	return elapsedNano
}

private func adjustPrecision(_ ns: Int, toPrecision: String) -> Int
{
	switch toPrecision
	{
