public function parse($answers)
    {
        // Iterate through answers and parse it if possible
        // Also, move quick replies to the last answer
        $parsed = [];

        $previous_index = 0;
        
        if ($this->isSingularResponse($answers)) {
            $answers = [$answers];
        }

        foreach ($answers as $index => $answer) {
            // If the answer is a Closure
            if (!is_string($answer) && is_callable($answer)) {
                $answer = [
                    'type'    => 'callback',
                    'content' => $answer,
                ];
            }

            if (isset($answer['content']) && isset($answer['quick_replies'])) {
                $answer['content'] = (array)$answer['content'];

                $answer['content']['quick_replies'] = $answer['quick_replies'];
                unset($answer['quick_replies']);
            }

            // Cast attachment key to other messages
            if (($index === 'attachment' || isset($answer['attachment']))) {
                $answer = $this->parseAttachmentMessage($index, $answer);
            }

            // Parse answer when possible.
            // Iterate through supported message type and return if answer is supported
            if ($this->isParsable($answer) && $index !== 'quick_replies') {
                if (isset($answer['type'])) {
                    $parser       = $this->typeClasses[$answer['type']];

                    $parsedAnswer = $parser::load($answer['content'], [
                        'skip_detection' => true
                    ]);

                    if ($parsedAnswer !== false) {
                        $answer = $parsedAnswer;
                    }
                } else {
                    foreach ($this->typeClasses as $type => $parser) {
                        // If not supported, it will return false, otherwise, return parsed data
                        $parsedAnswer = $parser::load($answer);

                        if ($parsedAnswer !== false) {
                            $answer = $parsedAnswer;

                            break;
                        }
                    }
                }
            }
            
            if ($index === 'quick_replies') {
                $parsed[$previous_index]                             = (array)$parsed[$previous_index];
                $parsed[$previous_index]['content']['quick_replies'] = $answer;
            }

            $parsed[$index] = $answer;
            $previous_index = $index;
        }

        unset($parsed['quick_replies']);

        return $parsed;
    }