public function BlockArea($area, $limit = null)
	{
		if ($this->owner->ID <= 0) {
			return;
		} // blocks break on fake pages ie Security/login

		$list = $this->getBlockList($area);

		foreach ($list as $block) {
			if (!$block->canView()) {
				$list->remove($block);
			}
		}

		if ($limit !== null) {
			$list = $list->limit($limit);
		}

		$data = [];
		$data['HasBlockArea'] = ($this->owner->canEdit() && isset($_REQUEST['block_preview']) && $_REQUEST['block_preview']) || $list->Count() > 0;
		$data['BlockArea'] = $list;
		$data['AreaID'] = $area;

		$data = $this->owner->customise($data);

		$template = ['BlockArea_'.$area];

		if (SSViewer::hasTemplate($template)) {
			return $data->renderWith($template);
		} else {
			return $data->renderWith('BlockArea');
		}
	}