src/Nether/Surface.php
public function
	GetArea($which) {
	/*//
	@argv string AreaFileRequest
	@return string
	attempt to fetch the result of the specified area file. it takes a string
	to the requested area relative to the current theme. it can also be
	prefixed with a theme stack with colons to customise which theme this
	request comes from.

	* index/home
	* alt:index/home
	* alt1:alt2:index/home

	with a technically infinite number of stacks. throws an exception if no
	files were found to handle the surface area.
	//*/

		$stack = explode(':',$which);
		$area = array_pop($stack);

		$filename = $this->GetThemeFile(
			"area/{$area}.phtml",
			$stack
		);

		if(!$filename)
		throw new Exception("no surface area matching {$which} could be located.");

		// notification of beginning a render process.
		Nether\Ki::Flow('surface-render-init',[$this],FALSE);

		////////
		////////

		ob_start();
		call_user_func(function($__filename,$__scope){
			extract($__scope); unset($__scope);
			require($__filename);
		},$filename,$this->GetRenderScope());
		return ob_get_clean();
	}
public function
	GetArea($which) {
	/*//
	@argv string AreaFileRequest
	@return string
	attempt to fetch the result of the specified area file. it takes a string
	to the requested area relative to the current theme. it can also be
	prefixed with a theme stack with colons to customise which theme this
	request comes from.

	* index/home
	* alt:index/home
	* alt1:alt2:index/home

	with a technically infinite number of stacks. throws an exception if no
	files were found to handle the surface area.
	//*/

		$stack = explode(':',$which);
		$area = array_pop($stack);

		$filename = $this->GetThemeFile(
			"area/{$area}.phtml",
			$stack
		);

		if(!$filename)
		throw new Exception("no surface area matching {$which} could be located.");

		// notification of beginning a render process.
		Nether\Ki::Flow('surface-render-init',[$this],FALSE);

		////////
		////////

		ob_start();
		call_user_func(function($__filename,$__scope){
			extract($__scope); unset($__scope);
			require($__filename);
		},$filename,$this->GetRenderScope());
		return ob_get_clean();
	}
new area api ////////////////////////////////////////////////////////////