finished add, retrieve, update, delete