add some comment and two macro