add new changes and enhancement