delete implementation