Most of CRUD functionality added