abstract delete method