add feature & fix bug