use hoard for memory alloc
pack the struct