add free list typedef and struct