add open struct support
generalize test