private boolean attemptLoad(URL versionUrl)
    {
        URLConnection urlConnection = null;
        try
        {
            urlConnection = versionUrl.openConnection();
        }
        catch (IOException e)
        {
            Log.w("IOException when attempting to open connection to version list.");
            Log.printTraceStack(e);
            Log.w("Aborting version list load. URL: " + versionUrl);
            return false;
        }

        int contentLength = urlConnection.getContentLength();
        if (contentLength == -1)
        {
            Log.w("Content length of version list returned -1.");
            Log.w("Aborting version list load. URL: " + versionUrl);
            return false;
        }

        InputStream inputStream = null;
        try
        {
            inputStream = urlConnection.getInputStream();
        }
        catch (IOException e)
        {
            Log.w("IOException on opening input stream to version list.");
            Log.printTraceStack(e);
            Log.w("Aborting version list load. URL: " + versionUrl);
            return false;
        }

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        try
        {
            profile = Util.readObject(bufferedReader, VersionList.class);
        }
        catch (JsonSyntaxException e)
        {
            Log.w("Unable to parse version list.");
            Log.printTraceStack(e);
            Log.w("Aborting version list load. URL: " + versionUrl);
            return false;
        }
        finally
        {
            try
            {
                bufferedReader.close();
            }
            catch (IOException e)
            {
                Log.w("IOException thrown when attempting to close stream for version list.");
                Log.printTraceStack(e);
            }
        }

        Log.i("Successfully loaded version list. URL: " + versionUrl);
        return true;
    }