create the base struct