support struct initializer