public function convertRuneMetrics(string $data): array
    {
        $data = @json_decode($data);

        if (!$data) {
            throw new DataConversionException("Could not decode RuneMetrics API response.");
        }

        if (isset($data->error)) {
            throw new DataConversionException("RuneMetrics API returned an error. User might not exist.");
        }

        // HighScore
        $skills = [];
        foreach($data->skillvalues as $skillvalue) {
            $skillId = $skillvalue->id + 1;

            try {
                $skill = Skill::getSkill($skillId);
                $xp = (int)($skillvalue->xp / 10);

                $skills[] = new HighScoreSkill($skill, $skillvalue->rank ?? 0, $skillvalue->level, $xp);
            } catch (RuneScapeException $exception) {
            }
        }

        // Add total
        /** @noinspection PhpUnhandledExceptionInspection */
        $skills[] = new HighScoreSkill(
            Skill::getSkill(Skill::SKILL_TOTAL),
            $data->rank ? str_replace(",", "", $data->rank) : 0,
            $data->totalskill, $data->totalxp
        );

        // ActivityFeed
        $activities = [];
        foreach($data->activities as $activity) {
            $activities[] = new ActivityFeedItem(new DateTime($activity->date), $activity->text, $activity->details);
        }

        return [
            self::KEY_SKILL_HIGH_SCORE => new SkillHighScore($skills),
            self::KEY_ACTIVITY_FEED => new ActivityFeed($activities),
            self::KEY_REAL_NAME => $data->name
        ];
    }