diff --git a/alloc.h b/alloc.h
index 3245f55c3496bc75c70c04625ca3dcb7dd5d0afd..cc6dcac79a595b69b87caa568337d4cfece2a31f 100644
--- a/alloc.h
+++ b/alloc.h
@@ -1,8 +1,30 @@
 #ifndef _ALLOC_H_
 #define _ALLOC_H_
 
+#include <sys/types.h>
+
+#define META_SIZE (sizeof(struct metadata) - 4)
+
+#define F 0 // first
+#define B 1 // best
+#define W 2 // worst
+
 typedef struct meta_struct {
+  size_t size;
+  int free;
+  char data[1];
+
+  meta prev;
+  meta next;
+} meta; // meta
+
+extern void *b; // base
+
+extern int fitff; // fit case
 
-} meta;
+void* m_malloc(size_t size);
+void m_free(void* ptr);
+void* m_realloc(void* ptr, size_t size);
+meta find_meta(p_meta *last, size_t size);
 
 #endif