some rework
code complite to doc
doc final