public function run()
	{
        // Setup guzzle client
		$this->http = new Http
		([
			'base_uri' => $this->phpMyAdminUrl,
			'cookies' => true,
			'verify' => false
		]);

		// Tell the world whats happening
		$this->printTaskInfo
		(
			'Logging into phpmyadmin - <info>'.
			str_replace
			(
				'://',
				'://'.$this->phpMyAdminUser.':'.$this->phpMyAdminPass.'@',
				$this->phpMyAdminUrl
			).'</info>'
		);

		// Make an intial request so we can extract some info
		$html = $this->http->get('/')->getBody();

		// Grab the token
		$this->token = $this->extractToken($html);

		// Get the server id
		$this->serverId = $this->extractServerId($html);

		// Login, we are assuming cookie based auth.
		// One day I'll get around to supporting the other types of auth
		// phpMyAdmin supports but right now I have no need...
		$this->http->post('/',
		[
			'form_params' =>
			[
				'pma_username' => $this->phpMyAdminUser,
				'pma_password' => $this->phpMyAdminPass,
				'server' => $this->serverId,
				'token' => $this->token
			],
			'on_stats' => function(TransferStats $stats) use (&$effectiveUri)
			{
				$effectiveUri = $stats->getEffectiveUri();
			}
		]);

		// Check to see if we passed auth
		if (!s::create($effectiveUri)->contains($this->token))
		{
			throw new RuntimeException('phpMyAdmin Login Failed');
		}

        // If we get to here assume everything worked.
        // The http client can be accessed by calling getTask()->getClient().
		return Result::success($this);
    }