deleted require
add error msg
add test 'default'
add test struct_hash