fix: recursive delete