add new features & fix bugs