added _init() and _new() functions as proposed in #20
init: initializes struct with default values, and pointers with NULL (no memory allocation)
new: calls malloc and init