add commments
refine codes