complete basic crud