improve structure. add example