added generic crud interface