add license, comment, enhance