add comment
simplify structure
improve header style