fix bug, add feature