added many new feature