some restructure
..