added support for structs