diff --git a/Makefile b/Makefile
index 6c8092c395ce60ea16c806f71d2a1011ae067d4a..4722f6121aa1fa0de8ea460521bcde7c78543460 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@ SUBDIRS := miosix
 ## List here your source files (both .s, .c and .cpp)
 ##
 SRC :=                                  \
-main.cpp
+main.cpp pool_allocator.cpp
 
 ##
 ## List here additional static libraries with relative path
diff --git a/pool_allocator.cpp b/pool_allocator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4e682cfce38717176acc294b926296715b97a265
--- /dev/null
+++ b/pool_allocator.cpp
@@ -0,0 +1,26 @@
+
+#include "pool_allocator.h"
+
+PoolAllocator::PoolAllocator(unsigned int *poolBase, unsigned int poolSize)
+    : poolBase(poolBase), poolSize(poolSize)
+{
+    bitmap=new unsigned int[poolSize/blockSize/sizeof(unsigned int)];
+}
+    
+unsigned int *PoolAllocator::allocate(int size)
+{
+    //TODO : align this, and validate size to prevent wraparound
+    unsigned int offset=0;
+    if(poolBase % size) offset=size-(poolBase % size);
+    int startBit=offset/blockSize;
+}
+
+void PoolAllocator::deallocate(unsigned int *ptr)
+{
+    
+}
+
+PoolAllocator::~PoolAllocator()
+{
+    delete[] bitmap;
+}
diff --git a/pool_allocator.h b/pool_allocator.h
new file mode 100644
index 0000000000000000000000000000000000000000..40b42f99a4c09a77ce6b4c064a8b6457ac55c155
--- /dev/null
+++ b/pool_allocator.h
@@ -0,0 +1,30 @@
+
+#include <map>
+
+#ifndef POOL_ALLOCATOR
+#define POOL_ALLOCATOR
+
+class PoolAllocator
+{
+public:
+    PoolAllocator(unsigned int *poolBase, unsigned int poolSize);
+    
+    unsigned int *allocate(int size);
+    
+    void deallocate(unsigned int *ptr);
+    
+    ~PoolAllocator();
+    
+    static const int blockSize=1024;
+    
+private:
+    PoolAllocator(const PoolAllocator&);
+    PoolAllocator& operator= (const PoolAllocator&);
+    
+    unsigned int *bitmap;
+    unsigned int *poolBase;
+    unsigned int poolSize;
+    std::map<unsigned int*,unsigned int> allocatedBlocks;
+};
+
+#endif //POOL_ALLOCATOR