add feature and some fix.