initial recursive delete implementation