user go json marshalling
add unique and dirof