Heap performance fix

Get rid of the old implementation and replace with Freelist to provide O(1) not O(n) allocation