The first version with complete features and proper comment left.