implemented crud end-to-end