added functions for all structs so that all have a two functions to create new ones, one with all pointers being NULL, the other with all pointers passed in by caller.