public function abort($msg = null, $type = null)
	{
		$retval = true;
		$step = array_pop($this->stepStack);

		// Raise abort warning
		if ($msg)
		{
			$this->log(LogLevel::WARNING, $msg);
		}

		while ($step != null)
		{
			switch ($step['type'])
			{
				case 'file':
					// Remove the file
					$stepval = File::delete($step['path']);
					break;

				case 'folder':
					// Remove the folder
					$stepval = File::delete($step['path']);
					break;

				default:
					$stepval = false;
					break;
			}

			// Only set the return value if it is false
			if ($stepval === false)
			{
				$retval = false;
			}

			// Get the next step and continue
			$step = array_pop($this->stepStack);
		}

		$debug = Config::get()->get('debug');

		if ($debug) {
			throw new RuntimeException('Installation unexpectedly terminated: ' . $msg, 500);
		}
		return $retval;
	}