add many new feature