abstracted CRUD table widget