diff --git a/Cargo.toml b/Cargo.toml
index 3adca5409cc804b0c3234ee0281560039222502f..13b38f3811923ca703976ebb0e875987ad08c46b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,3 +19,4 @@ ruma-api = "0.15.0"
 ruma-events = "0.18.0"
 js_int = "0.1.3"
 serde_json = "1.0.50"
+ruma-signatures = "0.5.0"
diff --git a/src/main.rs b/src/main.rs
index cf1f37f7e5ef8298b301d33ff33a14344f900515..6cf5477bb16e18ac8d45260fac98848c5264ce0f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -218,20 +218,21 @@ fn create_message_event_route(
     _txn_id: String,
     body: Ruma<create_message_event::Request>,
 ) -> MatrixResult<create_message_event::Response> {
+    // Construct event
+    let event = Event::RoomMessage(MessageEvent {
+        content: body.data.clone().into_result().unwrap(),
+        event_id: event_id.clone(),
+        origin_server_ts: utils::millis_since_unix_epoch(),
+        room_id: Some(body.room_id.clone()),
+        sender: body.user_id.clone().expect("user is authenticated"),
+        unsigned: Map::default(),
+    });
+
     // Generate event id
+    dbg!(ruma_signatures::reference_hash(event));
+
     let event_id = EventId::try_from("$TODOrandomeventid:localhost").unwrap();
-    data.event_add(
-        &body.room_id,
-        &event_id,
-        &Event::RoomMessage(MessageEvent {
-            content: body.data.clone().into_result().unwrap(),
-            event_id: event_id.clone(),
-            origin_server_ts: utils::millis_since_unix_epoch(),
-            room_id: Some(body.room_id.clone()),
-            sender: body.user_id.clone().expect("user is authenticated"),
-            unsigned: Map::default(),
-        }),
-    );
+    data.event_add(&body.room_id, &event_id, &event);
 
     MatrixResult(Ok(create_message_event::Response { event_id }))
 }