public function collection(array $ids, array $options = array())
    {
        $photos = $this->dataStore->getPhotos($ids);

        if (empty($photos) && !$this->storageManager->hasFallback()) {
            // If no fallback has been defined, and no photo was found
            // lets just skip the computation that follows.
            return $this->createPhotoCollection();
        }

        $found = array();
        array_map(function ($photo) use ($ids, &$found) {
            // This will be used to build found Photos
            return $found[$photo['id']] = $photo;
        }, $photos);

        $sorted = array();
        foreach ($ids as $index => $id) {
            $photo = array();
            if (array_key_exists($id, $found)) {
                $photo = $found[$id];
            }

            $sorted[$index] = $photo;
        }

        $photos = $this->createPhotoCollection($sorted);
        $simplePhoto = $this; // php 5.3 compatibility
        $photos->transform(function ($photo) use ($simplePhoto, $options) {
            return $simplePhoto->build($photo, $options);
        })->ksort();

        return $photos;
    }