basic crud functionality implemented