space on it is stored in `heap_start`. it needs to be
updated/decremented whenever you put anything on the heap
+## todo
+- how should allocation be managed?
+make free blocks a doubly linked list. (how big is a block?)
+when allocating, use first free block, move up free pointer
+when freeing, do ???
+
+
# closures
* lambda: actual function containing the code