This include major changes and addition for API