diff --git a/tsstats/events.py b/tsstats/events.py
new file mode 100644
index 0000000..b2372bb
--- /dev/null
+++ b/tsstats/events.py
@@ -0,0 +1,33 @@
+from collections import namedtuple
+
+Event = namedtuple(
+    'Event', ['timestamp', 'identifier', 'action', 'arg', 'arg_is_client']
+)
+
+
+def nick(timestamp, identifier, nick):
+    return Event(timestamp, identifier, 'set_nick', nick, arg_is_client=False)
+
+
+def connect(timestamp, identifier):
+    return Event(
+        timestamp, identifier, 'connect', arg=timestamp, arg_is_client=False
+    )
+
+
+def disconnect(timestamp, identifier):
+    return Event(
+        timestamp, identifier, 'disconnect', arg=timestamp, arg_is_client=False
+    )
+
+
+def kick(timestamp, identifier, target_identifier):
+    return Event(
+        timestamp, identifier, 'kick', target_identifier, arg_is_client=True
+    )
+
+
+def ban(timestamp, identifier, target_identifier):
+    return Event(
+        timestamp, identifier, 'ban', target_identifier, arg_is_client=True
+    )