diff --git a/libpurple/purplemessage.h b/libpurple/purplemessage.h
--- a/libpurple/purplemessage.h
+++ b/libpurple/purplemessage.h
@@ -51,15 +51,11 @@
  * @PURPLE_MESSAGE_ERROR: Error message.
  * @PURPLE_MESSAGE_DELAYED: Delayed message.
  * @PURPLE_MESSAGE_RAW: "Raw" message - don't apply formatting.
- * @PURPLE_MESSAGE_IMAGES: Message contains images.
  * @PURPLE_MESSAGE_NOTIFY: Message is a notification.
  * @PURPLE_MESSAGE_NO_LINKIFY: Message should not be auto-linkified.
  *                             Since: 2.1.0
  * @PURPLE_MESSAGE_INVISIBLE: Message should not be displayed.
  *                            Since: 2.2.0
- * @PURPLE_MESSAGE_REMOTE_SEND: Message sent from another location, not an echo
- *                              of a local one.
- *                              Since: 2.12.0
  * @PURPLE_MESSAGE_FORWARDED: The message has been forward to the recipient.
  *                            Since: 3.0.0
  *
@@ -77,35 +73,13 @@
 	PURPLE_MESSAGE_ERROR        = 1 << 7,
 	PURPLE_MESSAGE_DELAYED      = 1 << 8,
 	PURPLE_MESSAGE_RAW          = 1 << 9,
-	PURPLE_MESSAGE_IMAGES       = 1 << 10,
 	PURPLE_MESSAGE_NOTIFY       = 1 << 11,
 	PURPLE_MESSAGE_NO_LINKIFY PURPLE_AVAILABLE_ENUMERATOR_IN_2_1 = 1 << 12,
 	PURPLE_MESSAGE_INVISIBLE PURPLE_AVAILABLE_ENUMERATOR_IN_2_2 = 1 << 13,
-	PURPLE_MESSAGE_REMOTE_SEND PURPLE_AVAILABLE_ENUMERATOR_IN_2_12 = 1 << 14,
 	PURPLE_MESSAGE_FORWARDED PURPLE_AVAILABLE_ENUMERATOR_IN_3_0 = 1 << 15,
 } PurpleMessageFlags;
 
 /**
- * PurpleMessageContentType:
- * @PURPLE_MESSAGE_CONTENT_TYPE_PLAIN: The message has no formatting.
- * @PURPLE_MESSAGE_CONTENT_TYPE_HTML: The message is formatted in HTML.
- * @PURPLE_MESSAGE_CONTENT_TYPE_XHTML: The message is formatted in XHTML.
- * @PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN: The message is formatted in Markdown.
- *
- * The message formatting for the message.
- *
- * Since: 3.0.0
- */
-PURPLE_AVAILABLE_TYPE_IN_3_0
-typedef enum /*< prefix=PURPLE_MESSAGE_CONTENT_TYPE,underscore_name=PURPLE_MESSAGE_CONTENT_TYPE >*/
-{
-	PURPLE_MESSAGE_CONTENT_TYPE_PLAIN = 0,
-	PURPLE_MESSAGE_CONTENT_TYPE_HTML,
-	PURPLE_MESSAGE_CONTENT_TYPE_XHTML,
-	PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN,
-} PurpleMessageContentType;
-
-/**
  * PurpleMessage:
  *
  * #PurpleMessage represents any message passed between users in libpurple.
@@ -314,31 +288,6 @@
 const char *purple_message_get_contents(PurpleMessage *message);
 
 /**
- * purple_message_set_content_type:
- * @message: The #PurpleMessage instance.
- * @content_type: The #PurpleMessageContentType value.
- *
- * Sets the content-type of @message to @content_type.
- *
- * Since: 3.0.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_message_set_content_type(PurpleMessage *message, PurpleMessageContentType content_type);
-
-/**
- * purple_message_get_content_type:
- * @message: The #PurpleMessage instance.
- *
- * Gets the content-type of @message.
- *
- * Returns: The #PurpleMessageContentType of @message.
- *
- * Since: 3.0.0
- */
-PURPLE_AVAILABLE_IN_3_0
-PurpleMessageContentType purple_message_get_content_type(PurpleMessage *message);
-
-/**
  * purple_message_is_empty:
  * @message: The message.
  *
# HG changeset patch
# Node ID 64d446ded630
# Parent  eca0c08ed2a3
diff --git a/libpurple/purplemessage.c b/libpurple/purplemessage.c
--- a/libpurple/purplemessage.c
+++ b/libpurple/purplemessage.c
@@ -37,7 +37,6 @@
 	char *recipient;
 
 	char *contents;
-	PurpleMessageContentType content_type;
 	gboolean action;
 
 	GDateTime *timestamp;
@@ -59,7 +58,6 @@
 	PROP_AUTHOR_NAME_COLOR,
 	PROP_RECIPIENT,
 	PROP_CONTENTS,
-	PROP_CONTENT_TYPE,
 	PROP_ACTION,
 	PROP_TIMESTAMP,
 	PROP_FLAGS,
@@ -114,9 +112,6 @@
 		case PROP_CONTENTS:
 			g_value_set_string(value, purple_message_get_contents(message));
 			break;
-		case PROP_CONTENT_TYPE:
-			g_value_set_enum(value, purple_message_get_content_type(message));
-			break;
 		case PROP_ACTION:
 			g_value_set_boolean(value, purple_message_get_action(message));
 			break;
@@ -173,9 +168,6 @@
 		case PROP_CONTENTS:
 			purple_message_set_contents(message, g_value_get_string(value));
 			break;
-		case PROP_CONTENT_TYPE:
-			purple_message_set_content_type(message, g_value_get_enum(value));
-			break;
 		case PROP_ACTION:
 			purple_message_set_action(message, g_value_get_boolean(value));
 			break;
@@ -321,19 +313,6 @@
 		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
 	/**
-	 * PurpleMessage:content-type:
-	 *
-	 * The content-type of the message.
-	 *
-	 * Since: 3.0.0
-	 */
-	properties[PROP_CONTENT_TYPE] = g_param_spec_enum(
-		"content-type", "content-type",
-		"The content-type of the message.",
-		PURPLE_TYPE_MESSAGE_CONTENT_TYPE, PURPLE_MESSAGE_CONTENT_TYPE_PLAIN,
-		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	/**
 	 * PurpleMessage:action:
 	 *
 	 * Whether or not the message is an action.
@@ -637,25 +616,6 @@
 	return message->contents;
 }
 
-void
-purple_message_set_content_type(PurpleMessage *message,
-                                PurpleMessageContentType content_type)
-{
-	g_return_if_fail(PURPLE_IS_MESSAGE(message));
-
-	message->content_type = content_type;
-
-	g_object_notify_by_pspec(G_OBJECT(message), properties[PROP_CONTENT_TYPE]);
-}
-
-PurpleMessageContentType
-purple_message_get_content_type(PurpleMessage *message) {
-	g_return_val_if_fail(PURPLE_IS_MESSAGE(message),
-	                     PURPLE_MESSAGE_CONTENT_TYPE_PLAIN);
-
-	return message->content_type;
-}
-
 gboolean
 purple_message_is_empty(PurpleMessage *message) {
 	return (message->contents == NULL || message->contents[0] == '\0');
diff --git a/libpurple/purplesqlitehistoryadapter.c b/libpurple/purplesqlitehistoryadapter.c
--- a/libpurple/purplesqlitehistoryadapter.c
+++ b/libpurple/purplesqlitehistoryadapter.c
@@ -70,45 +70,6 @@
 	                                                    migrations, error);
 }
 
-static gchar *
-purple_sqlite_history_adapter_get_content_type(PurpleMessageContentType content_type) {
-	switch(content_type) {
-		case PURPLE_MESSAGE_CONTENT_TYPE_PLAIN:
-			return "plain";
-			break;
-		case PURPLE_MESSAGE_CONTENT_TYPE_HTML:
-			return "html";
-			break;
-		case PURPLE_MESSAGE_CONTENT_TYPE_XHTML:
-			return "xhtml";
-			break;
-		case PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN:
-			return "markdown";
-			break;
-		default:
-			return "";
-			break;
-	}
-}
-
-static PurpleMessageContentType
-purple_sqlite_history_adapter_get_content_type_enum(const gchar *content_type)
-{
-	if(purple_strequal(content_type, "plain")) {
-		return PURPLE_MESSAGE_CONTENT_TYPE_PLAIN;
-	}
-	if(purple_strequal(content_type, "html")) {
-		return PURPLE_MESSAGE_CONTENT_TYPE_HTML;
-	}
-	if(purple_strequal(content_type, "xhtml")) {
-		return PURPLE_MESSAGE_CONTENT_TYPE_XHTML;
-	}
-	if(purple_strequal(content_type, "markdown")) {
-		return PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN;
-	}
-	return PURPLE_MESSAGE_CONTENT_TYPE_PLAIN;
-}
-
 static sqlite3_stmt *
 purple_sqlite_history_adapter_build_query(PurpleSqliteHistoryAdapter *adapter,
                                           const gchar * search_query,
@@ -166,8 +127,8 @@
 	} else {
 		query = g_string_new("SELECT "
 		                     "message_id, author, author_name_color, "
-		                     "author_alias, recipient, content_type, "
-		                     "content, client_timestamp "
+		                     "author_alias, recipient, content, "
+		                     "client_timestamp "
 		                     "FROM message_log WHERE TRUE\n");
 	}
 
@@ -333,7 +294,6 @@
 
 	while(sqlite3_step(prepared_statement) == SQLITE_ROW) {
 		PurpleMessage *message = NULL;
-		PurpleMessageContentType ct;
 		GDateTime *g_date_time = NULL;
 		const gchar *message_id = NULL;
 		const gchar *author = NULL;
@@ -341,7 +301,6 @@
 		const gchar *author_alias = NULL;
 		const gchar *recipient = NULL;
 		const gchar *content = NULL;
-		const gchar *content_type = NULL;
 		const gchar *timestamp = NULL;
 
 		message_id = (const gchar *)sqlite3_column_text(prepared_statement, 0);
@@ -349,10 +308,8 @@
 		author_name_color = (const gchar *)sqlite3_column_text(prepared_statement, 2);
 		author_alias = (const gchar *)sqlite3_column_text(prepared_statement, 3);
 		recipient = (const gchar *)sqlite3_column_text(prepared_statement, 4);
-		content_type = (const gchar *)sqlite3_column_text(prepared_statement, 5);
-		ct = purple_sqlite_history_adapter_get_content_type_enum(content_type);
-		content = (const gchar *)sqlite3_column_text(prepared_statement, 6);
-		timestamp = (const gchar *)sqlite3_column_text(prepared_statement, 7);
+		content = (const gchar *)sqlite3_column_text(prepared_statement, 5);
+		timestamp = (const gchar *)sqlite3_column_text(prepared_statement, 6);
 		g_date_time = g_date_time_new_from_iso8601(timestamp, NULL);
 
 		message = g_object_new(PURPLE_TYPE_MESSAGE,
@@ -362,7 +319,6 @@
 		                       "author_alias", author_alias,
 		                       "recipient", recipient,
 		                       "contents", content,
-		                       "content_type", ct,
 		                       "timestamp", g_date_time,
 		                       NULL);
 
@@ -429,15 +385,14 @@
 	PurpleSqliteHistoryAdapter *sqlite_adapter = NULL;
 	sqlite3_stmt *prepared_statement = NULL;
 	gchar *timestamp = NULL;
-	gchar *content_type = NULL;
 	const gchar * message_id = NULL;
 	const gchar *script = NULL;
 	gint result = 0;
 
 	script = "INSERT INTO message_log(protocol, account, conversation_id, "
 			 "message_id, author, author_name_color, author_alias, "
-			 "recipient, content_type, content, client_timestamp) "
-	         "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+			 "recipient, content, client_timestamp) "
+	         "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
 
 	sqlite_adapter = PURPLE_SQLITE_HISTORY_ADAPTER(adapter);
 
@@ -489,14 +444,11 @@
 	sqlite3_bind_text(prepared_statement,
 	                  8, purple_message_get_recipient(message), -1,
 	                  SQLITE_STATIC);
-	content_type = purple_sqlite_history_adapter_get_content_type(purple_message_get_content_type(message));
 	sqlite3_bind_text(prepared_statement,
-	                  9, content_type, -1, SQLITE_STATIC);
-	sqlite3_bind_text(prepared_statement,
-	                  10, purple_message_get_contents(message), -1,
+	                  9, purple_message_get_contents(message), -1,
 	                  SQLITE_STATIC);
 	timestamp = g_date_time_format_iso8601(purple_message_get_timestamp(message));
-	sqlite3_bind_text(prepared_statement, 11, timestamp, -1, g_free);
+	sqlite3_bind_text(prepared_statement, 10, timestamp, -1, g_free);
 
 	result = sqlite3_step(prepared_statement);
 
diff --git a/libpurple/tests/test_message.c b/libpurple/tests/test_message.c
--- a/libpurple/tests/test_message.c
+++ b/libpurple/tests/test_message.c
@@ -39,7 +39,6 @@
 static void
 test_purple_message_properties(void) {
 	PurpleMessage *message = NULL;
-	PurpleMessageContentType content_type = 0;
 	PurpleMessageFlags flags = 0;
 	GDateTime *timestamp = NULL;
 	GDateTime *timestamp1 = NULL;
@@ -76,7 +75,6 @@
 		"edited", TRUE,
 		"recipient", "pidgy",
 		"contents", "Now that is a big door",
-		"content-type", PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN,
 		"timestamp", timestamp,
 		"flags", PURPLE_MESSAGE_SYSTEM,
 		"error", error,
@@ -95,7 +93,6 @@
 		"edited-at", &edited_at1,
 		"recipient", &recipient,
 		"contents", &contents,
-		"content-type", &content_type,
 		"timestamp", &timestamp1,
 		"flags", &flags,
 		"error", &error1,
@@ -112,7 +109,6 @@
 	g_assert_nonnull(edited_at1);
 	g_assert_cmpstr(recipient, ==, "pidgy");
 	g_assert_cmpstr(contents, ==, "Now that is a big door");
-	g_assert_cmpint(content_type, ==, PURPLE_MESSAGE_CONTENT_TYPE_MARKDOWN);
 	g_assert_true(g_date_time_equal(timestamp1, timestamp));
 	g_assert_cmpint(flags, ==, PURPLE_MESSAGE_SYSTEM);
 	g_assert_error(error1, error->domain, error->code);
