Deletion

This method is a tad too complex, and should be broken into/recruit the help of private methods.