diff --git a/phpBB/common.php b/phpBB/common.php
index b36cb24279..f160838600 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -106,6 +106,16 @@ define('PRIVMSGS_READ_MAIL', 0);
 define('PRIVMSGS_NEW_MAIL', 1);
 define('PRIVMSGS_UNREAD_MAIL', 5);
 
+// Download Modes - Attachments
+define('INLINE_LINK', 1);
+define('PHYSICAL_LINK', 2);
+
+// Categories - Attachments
+define('NONE_CAT', 0);
+define('IMAGE_CAT', 1);
+define('STREAM_CAT', 2);
+//define('SWF_CAT', 3);
+
 // BBCode UID length
 define('BBCODE_UID_LEN', 5);
 
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index 48ee7f3060..f927284732 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -1724,7 +1724,7 @@ function phpbb_unlink($filename, $mode = false)
 		$res = @ftp_delete($conn_id, $filename);
 		if (!$res)
 		{
-			if (ATTACH_DEBUG)
+			if (defined('DEBUG_EXTRA'))
 			{
 				$add = ( $mode == MODE_THUMBNAIL ) ? ('/' . THUMB_DIR) : ''; 
 				message_die(GENERAL_ERROR, sprintf($lang['Ftp_error_delete'], $attach_config['ftp_path'] . $add));
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php
index e9f77cc3b4..409531305c 100644
--- a/phpBB/includes/message_parser.php
+++ b/phpBB/includes/message_parser.php
@@ -39,13 +39,10 @@ class parse_message
 		$this->bbcode_uid = substr(md5(time()), 0, BBCODE_UID_LEN);
 	}
 	
-	function parse(&$message, $html, $bbcode, $uid, $url, $smilies)
+	function parse($html, $bbcode, $url, $smilies)
 	{
 		global $config, $db, $user;
 
-		$this->message = $message;
-		$this->bbcode_uid = $uid;
-
 		$warn_msg = '';
 
 		// Do some general 'cleanup' first before processing message,
@@ -53,12 +50,12 @@ class parse_message
 		$match = array('#sid=[a-z0-9]*?&?#', "#([\r\n][\s]+){3,}#");
 		$replace = array('', "\n\n");
 
-		$message = trim(preg_replace($match, $replace, $message));
+		$this->message = trim(preg_replace($match, $replace, $this->message));
 
 		// Message length check
-		if (!strlen($message) || (intval($config['max_post_chars']) && strlen($message) > intval($config['max_post_chars'])))
+		if (!strlen($this->message) || (intval($config['max_post_chars']) && strlen($this->message) > intval($config['max_post_chars'])))
 		{
-			$warn_msg .= (($warn_msg != '') ? '<br />' : '') . (!strlen($message)) ? $user->lang['TOO_FEW_CHARS'] : $user->lang['TOO_MANY_CHARS'];
+			$warn_msg .= (($warn_msg != '') ? '<br />' : '') . (!strlen($this->message)) ? $user->lang['TOO_FEW_CHARS'] : $user->lang['TOO_MANY_CHARS'];
 		}
 
 		// Smiley check
@@ -71,7 +68,7 @@ class parse_message
 			$match = 0;
 			while ($row = $db->sql_fetchrow($result))
 			{
-				if (preg_match_all('#('. preg_quote($row['code'], '#') . ')#', $message, $matches))
+				if (preg_match_all('#('. preg_quote($row['code'], '#') . ')#', $this->message, $matches))
 				{
 					$match++;
 				}
@@ -91,22 +88,22 @@ class parse_message
 			return $warn_msg;
 		}
 
-		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->html($message, $html);
+		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->html($html);
 		if ($bbcode)
 		{
-			$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->bbcode($message);
+			$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->bbcode();
 		}
-		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->emoticons($message, $smilies);
-		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->magic_url($message, $url);
+		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->emoticons($smilies);
+		$warn_msg .= (($warn_msg != '') ? '<br />' : '') . $this->magic_url($url);
 
 		return $warn_msg;
 	}
 
-	function html(&$message, $html)
+	function html($html)
 	{
 		global $config;
 
-		$message = str_replace(array('<', '>'), array('&lt;', '&gt;'), $message);
+		$this->message = str_replace(array('<', '>'), array('&lt;', '&gt;'), $this->message);
 
 		if ($html)
 		{
@@ -116,18 +113,15 @@ class parse_message
 
 			if (sizeof($allowed_tags))
 			{
-				$message = preg_replace('#&lt;(\/?)(' . str_replace('*', '.*?', implode('|', $allowed_tags)) . ')&gt;#is', '<\1\2>', $message);
+				$this->message = preg_replace('#&lt;(\/?)(' . str_replace('*', '.*?', implode('|', $allowed_tags)) . ')&gt;#is', '<\1\2>', $this->message);
 			}
 		}
 
 		return;
 	}
 
-	function bbcode(&$message)
+	function bbcode()
 	{
-		// DEBUG
-		$this->message = $message;
-
 		// Warning, Least-Significant-Bit first
 		$bbcode_bitfield = str_repeat('0', 32);
 		if (empty($this->bbcode_array))
@@ -156,9 +150,6 @@ class parse_message
 
 		// LSB becomes MSB then we convert it to decimal
 		$this->bbcode_bitfield = bindec(strrev($bbcode_bitfield));
-
-		// DEBUG
-		$message = $this->message;
 	}
 
 	function bbcode_init()
@@ -331,7 +322,7 @@ class parse_message
 	// Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
 	// Cuts down displayed size of link if over 50 chars, turns absolute links
 	// into relative versions when the server/script path matches the link
-	function magic_url(&$message, $url)
+	function magic_url($url)
 	{
 		global $config;
 
@@ -359,11 +350,11 @@ class parse_message
 			$match[] = '#(^|[\n ])([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)#ie';
 			$replace[] = "'\\1<!-- e --><a href=\"mailto:\\2\">' . ((strlen('\\2') > 55) ? substr('\\2', 0, 39) . ' ... ' . substr('\\2', -10) : '\\2') . '</a><!-- e -->'";
 
-			$message = preg_replace($match, $replace, $message);
+			$this->message = preg_replace($match, $replace, $this->message);
 		}
 	}
 
-	function emoticons(&$message, $smile)
+	function emoticons($smile)
 	{
 		global $db, $user;
 
@@ -381,7 +372,7 @@ class parse_message
 			}
 			while ($row = $db->sql_fetchrow($result));
 
-			$message = preg_replace($match, $replace, ' ' . $message . ' ');
+			$this->message = preg_replace($match, $replace, ' ' . $this->message . ' ');
 		}
 		$db->sql_freeresult($result);
 
diff --git a/phpBB/posting.php b/phpBB/posting.php
index 030709de74..d063450e1b 100644
--- a/phpBB/posting.php
+++ b/phpBB/posting.php
@@ -439,7 +439,7 @@ if (($submit) || ($preview) || ($refresh))
 		$subject = phpbb_strtolower($subject);
 	}
 	
-	$message			= (!empty($_POST['message'])) ? trim($_POST['message']) : '';
+	$message_parser->message = (!empty($_POST['message'])) ? trim($_POST['message']) : '';
 	$username			= (!empty($_POST['username'])) ? trim($_POST['username']) : '';
 	$topic_type			= (!empty($_POST['topic_type'])) ? intval($_POST['topic_type']) : POST_NORMAL;
 	$icon_id			= (!empty($_POST['icon'])) ? intval($_POST['icon']) : 0;
@@ -480,16 +480,13 @@ if (($submit) || ($preview) || ($refresh))
 	}
 
 	// Grab md5 'checksum' of new message
-	$message_md5 = md5($message);
+	$message_md5 = md5($message_parser->message);
 
 	// Check checksum ... don't re-parse message if the same
 	if ($mode != 'edit' || $message_md5 != $post_checksum)
 	{
-		// DEBUG
-		$bbcode_uid = $message_parser->bbcode_uid;
-
 		// Parse message
-		if (($result = $message_parser->parse($message, $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies)) != '')
+		if (($result = $message_parser->parse($enable_html, $enable_bbcode, $enable_urls, $enable_smilies)) != '')
 		{
 			$err_msg .= ((!empty($err_msg)) ? '<br />' : '') . $result;
 		}
@@ -543,7 +540,7 @@ if (($submit) || ($preview) || ($refresh))
 		'poll_last_vote'	=> $poll_last_vote,
 		'enable_html'		=> $enable_html,
 		'enable_bbcode'		=> $enable_bbcode,
-		'bbcode_uid'		=> $bbcode_uid,
+		'bbcode_uid'		=> $message_parser->bbcode_uid,
 		'enable_urls'		=> $enable_urls,
 		'enable_smilies'	=> $enable_smilies
 	);
@@ -605,10 +602,10 @@ if (($submit) || ($preview) || ($refresh))
 			'bbcode_bitfield'		=> $message_parser->bbcode_bitfield
 		);
 		
-		submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_uid, $poll, $attachment_data, $post_data);
+		submit_post($mode, $message_parser->message, $subject, $username, $topic_type, $message_parser->bbcode_uid, $poll, $attachment_data, $post_data);
 	}	
 
-	$post_text = stripslashes($message);
+	$post_text = stripslashes($message_parser->message);
 	$post_subject = $topic_title = stripslashes($subject);
 }
 
@@ -628,20 +625,20 @@ if ($preview)
 	$post_time = $current_time;
 
 	// DEBUG
-	$bbcode_bitfield = bindec('1111111111');
+	// $message_parser->bbcode_bitfield = bindec('1111111111');
 
 	include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
-	$bbcode = new bbcode($bbcode_uid, $bbcode_bitfield);
+	$bbcode = new bbcode($message_parser->bbcode_uid, $message_parser->bbcode_bitfield);
 
-	$preview_message = format_display(stripslashes($message), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, $enable_sig);
+	$preview_message = format_display(stripslashes($message_parser->message), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, $enable_sig);
 
 	$preview_subject = (sizeof($censors)) ? preg_replace($censors['match'], $censors['replace'], $subject) : $subject;
 
 	// Poll Preview
 	if ( ( ($mode == 'post') || ( ($mode == 'edit') && ($post_id == $topic_first_post_id) && (empty($poll_last_vote)) )) && ( ($auth->acl_get('f_poll', $forum_id)) || ($auth->acl_get('m_edit', $forum_id)) ))
 	{
-		decode_text($poll_title, $bbcode_uid);
-		$preview_poll_title = format_display(stripslashes($poll_title), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, false, false);
+		decode_text($poll_title, $message_parser->bbcode_uid);
+		$preview_poll_title = format_display(stripslashes($poll_title), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, false, false);
 
 		$template->assign_vars(array(
 			'S_HAS_POLL_OPTIONS' => (sizeof($poll_options)) ? true : false,
@@ -651,15 +648,15 @@ if ($preview)
 		foreach ($poll_options as $option)
 		{
 			$template->assign_block_vars('poll_option', array(
-				'POLL_OPTION_CAPTION' => format_display(stripslashes($option), $enable_html, $enable_bbcode, $bbcode_uid, $enable_urls, $enable_smilies, false, false))
+				'POLL_OPTION_CAPTION' => format_display(stripslashes($option), $enable_html, $enable_bbcode, $message_parser->bbcode_uid, $enable_urls, $enable_smilies, false, false))
 			);
 		}
 	}
 }
 
 // Decode text for message display
-decode_text($post_text, $bbcode_uid);
-decode_text($subject, $bbcode_uid);
+decode_text($post_text, $message_parser->bbcode_uid);
+decode_text($subject, $message_parser->bbcode_uid);
 
 // Save us some processing time. ;)
 $poll_options_tmp = implode("\n", $poll_options);
@@ -787,7 +784,7 @@ $template->assign_vars(array(
 	'IMG_STATUS'			=> ($img_status) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],
 	'FLASH_STATUS'			=> ($flash_status) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'],
 	'SMILIES_STATUS'		=> ($smilies_status) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],
-	'MINI_POST_IMG'			=> $user->img('goto_post', $user->lang['POST']),
+	'MINI_POST_IMG'			=> $user->img('icon_post', $user->lang['POST']),
 	'POST_DATE'				=> ($post_time) ? $user->format_date($post_time) : '',
 	'ERROR_MESSAGE'			=> $err_msg,