diff --git a/set_version.sh b/set_version.sh
index 43821b0e57284bfb506fea4f24a1587e75f8e121..d51049584f341a8beec376d1f9e4d6d030aa2d21 100755
--- a/set_version.sh
+++ b/set_version.sh
@@ -1,3 +1,3 @@
 #!/bin/bash
-export version=0.4.1-alpha.6
+export version=0.4.1-alpha.7
 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs
diff --git a/src/routes/channels/edit_channel.rs b/src/routes/channels/edit_channel.rs
index ff5c47316ef5454ba07f3e485ee26f5403934e0e..4c680e15d1f97681880a2c58149f9e4736e2bc26 100644
--- a/src/routes/channels/edit_channel.rs
+++ b/src/routes/channels/edit_channel.rs
@@ -26,10 +26,6 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> {
     data.validate()
         .map_err(|error| Error::FailedValidation { error })?;
 
-    if data.name.is_none() && data.description.is_none() && data.icon.is_none() && data.remove.is_none() {
-        return Ok(());
-    }
-
     let target = target.fetch_channel().await?;
     let perm = permissions::PermissionCalculator::new(&user)
         .with_channel(&target)
diff --git a/src/routes/channels/message_query.rs b/src/routes/channels/message_query.rs
index dadf8b54e09d527d4f6f485a503f2dc9fe54fced..bed171c0d4d6fed5f48817823d27c6d5ec4c8179 100644
--- a/src/routes/channels/message_query.rs
+++ b/src/routes/channels/message_query.rs
@@ -11,6 +11,12 @@ use rocket_contrib::json::JsonValue;
 use serde::{Deserialize, Serialize};
 use validator::Validate;
 
+#[derive(Serialize, Deserialize, FromFormValue)]
+pub enum Sort {
+    Latest,
+    Oldest
+}
+
 #[derive(Validate, Serialize, Deserialize, FromForm)]
 pub struct Options {
     #[validate(range(min = 1, max = 100))]
@@ -19,6 +25,7 @@ pub struct Options {
     before: Option<String>,
     #[validate(length(min = 26, max = 26))]
     after: Option<String>,
+    sort: Option<Sort>
 }
 
 #[get("/<target>/messages?<options..>")]
@@ -47,13 +54,14 @@ pub async fn req(user: User, target: Ref, options: Form<Options>) -> Result<Json
         query.insert("_id", doc! { "$gt": after });
     }
 
+    let sort = if let Sort::Latest = options.sort.as_ref().unwrap_or_else(|| &Sort::Latest) { -1 } else { 1 };
     let mut cursor = get_collection("messages")
         .find(
             query,
             FindOptions::builder()
                 .limit(options.limit.unwrap_or(50))
                 .sort(doc! {
-                    "_id": -1
+                    "_id": sort
                 })
                 .build(),
         )