more allocation primitives and data structures
disable warning of C99 style of variadic macro