diff --git a/include/tr/list.h b/include/tr/list.h
index c2b6a52..3e328f3 100644
--- a/include/tr/list.h
+++ b/include/tr/list.h
@@ -44,10 +44,12 @@ TR_CLASS(TR_List) {
TR_INSTANCE_INIT(TR_List);
TR_CLASSVARS_DECL(TR_List) {};
-void TR_listPut(TR_List, void *);
-void TR_listPutFirst(TR_List, void *);
-void * TR_listGet(TR_List);
-void * TR_listGetFirst(TR_List);
+void TR_listPut(TR_List, void *);
+void TR_listPutFirst(TR_List, void *);
+void * TR_listGet(TR_List);
+void * TR_listGetFirst(TR_List);
+ssize_t TR_listFind(TR_List, void *);
+void TR_listDelete(TR_List, void *);
#define TR_listEmpty(this) (this->start == this->end)
#define TR_listFirst(this) ((this)->start)
diff --git a/src/list/Makefile.am b/src/list/Makefile.am
index 75c21b8..8585643 100644
--- a/src/list/Makefile.am
+++ b/src/list/Makefile.am
@@ -8,7 +8,9 @@ LIST = list.c \
get.c \
get_first.c \
put.c \
- put_first.c
+ put_first.c \
+ find.c \
+ delete.c
noinst_LTLIBRARIES = liblist.la
diff --git a/src/list/delete.c b/src/list/delete.c
new file mode 100644
index 0000000..53a785b
--- /dev/null
+++ b/src/list/delete.c
@@ -0,0 +1,31 @@
+/**
+ * \file
+ *
+ * \author Georg Hopp
+ *
+ * \copyright
+ * Copyright © 2014 Georg Hopp
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "trbase.h"
+#include "tr/list.h"
+
+void
+TR_listDelete(TR_List this, void * msg)
+{
+}
+
+// vim: set ts=4 sw=4:
diff --git a/src/list/find.c b/src/list/find.c
new file mode 100644
index 0000000..c014fb7
--- /dev/null
+++ b/src/list/find.c
@@ -0,0 +1,45 @@
+/**
+ * \file
+ *
+ * \author Georg Hopp
+ *
+ * \copyright
+ * Copyright © 2014 Georg Hopp
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "trbase.h"
+#include "tr/list.h"
+
+#include "_resize.h"
+
+ssize_t
+TR_listFind(TR_List this, void * msg)
+{
+ /*
+ * With an array I know no better way than doing it in O(n).
+ * The list pattern needs to keep the elements in the order in
+ * which they were added.
+ */
+ size_t i = this->start;
+ while (i++ < this->end) {
+ if (this->data[i] == msg) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+// vim: set ts=4 sw=4: