added ostream overload for structs