public function listen($action, $logged = 'no', $callable)
	{

		if (!is_string($action) || strlen($action) == 0)
		{
			throw new AjaxException("Invalid parameter for the action.");
		}

		// resolve callable
		if (is_callable($callable))
		{
			$this->registerWithClosure($action, $logged, $callable);
		}
		else
		{

			if (strpos($callable, '@') !== false)
			{
				$parts    = explode('@', $callable);
				$callable = $parts[0];
				$method   = $parts[1];
			}
			else
			{
				$method = 'run';// default
			}

			try
			{
				$resolvedCallback = $this->app->make($callable);
				$this->registerWithClassInstance($action, $logged, $resolvedCallback, $method);

			} catch (\Exception $e)
			{
				throw new AjaxException($e->getMessage());
			}

		}

	}