add improve structure