public function addImage ($filePath, $fileName = NULL)
    {

        // Check Image Exists

        if (!file_exists ($filePath))
        {

            // Add error and return false

            new \Sonic\Message ('error', $filePath . ' doesnt exist!');
            return FALSE;

        }

        // Get MIME Type

        if (!$imgData = getimagesize ($filePath))
        {

            // Add error and return false

            new \Sonic\Message ('error', 'Cannot get MIME type!');
            return FALSE;

        }

        // Check Image is allowed

        if (!in_array ($imgData[2], $this->_imagesAllowed))
        {

            // Set variables

            $allowedTypes	= NULL;
            $x				= 0;

            // Generate the allowed images string

            foreach ($this->_imagesAllowed as $type)
            {

                $x++;

                $allowedTypes .= image_type_to_extension ($type);

                if ($x < count ($this->_imagesAllowed))
                {
                    $allowedTypes	.= ', ';
                }

            }

            // Add error and return false

            new \Sonic\Message ('error', 'Invalid image type: image must be ' . $allowedTypes);
            return FALSE;

        }

        // Get Image Data

        if (!$fileData = @file_get_contents ($filePath))
        {

            // Add error and return false

            new \Sonic\Message ('error', 'Cannot get image data!');
            return FALSE;

        }

        // Set images boolean

        $this->_imagesSet	= TRUE;

        // Add Image

        $this->_images[]	= array (
            'name'				=> $fileName,
            'data'				=> $fileData,
            'type'				=> image_type_to_mime_type ($imgData[2]),
            'cid'				=> md5 (uniqid (time ()))
        );

        // Return TRUE

        return TRUE;

    }