add comments and some design