* much work
* some update