public function load()
    {
        $matchesInfo = $this->_getMatchesIdsFromMatches();
        $matchesIds = array();
        foreach ($matchesInfo as $matchInfo) {
            array_push($matchesIds, $matchInfo['match_id']);
        }
        if (count($matchesIds) === 0) {
            return array();
        }
        $slotsInfo = $this->_loadSlotsInfo($matchesIds);
        $picksBansFormattedInfo = $this->_loadPicksBansInfo($matchesIds);

        $slotsIds = array();
        foreach ($slotsInfo as $slotInfo) {
            array_push($slotsIds, $slotInfo['id']);
        }

        $abilitiesUpgradeFormattedInfo = $this->_loadAbilityUpgradesInfo($slotsIds);
        $additionalUnitsFormattedInfo = $this->_loadAdditionalUnitsInfo($slotsIds);

        // we load all matches info and now need to make proper match objects
        $matches = array();
        foreach ($matchesInfo as $matchInfo) {
            $match = new Match();
            $match->setArray($matchInfo);
            $slots_count = 0;
            foreach ($slotsInfo as $slotInfo) {
                if ($slots_count > 9) {
                    // match can't has more than 10 slots
                    break;
                }
                if ($slotInfo['match_id'] == $match->get('match_id')) {
                    $slot = new slot();
                    $slot->setArray($slotInfo);
                    if (array_key_exists($slot->get('id'), $abilitiesUpgradeFormattedInfo)) {
                        $slot->setAbilitiesUpgrade($abilitiesUpgradeFormattedInfo[$slot->get('id')]);
                    }
                    if (array_key_exists($slot->get('id'), $additionalUnitsFormattedInfo)) {
                        $slot->setAdditionalUnitItems($additionalUnitsFormattedInfo[$slot->get('id')]);
                    }
                    $match->addSlot($slot);
                    $slots_count++;
                }
            }
            if (array_key_exists($match->get('match_id'), $picksBansFormattedInfo)) {
                $match->setAllPickBans($picksBansFormattedInfo[$match->get('match_id')]);
            }
            $matches[$match->get('match_id')] = $match;
        }
        return $matches;
    }