add test
use struct